The day my site accidentally became a p*rn site (or how to manage user generated content)

I would never run a p*rn site, but one day one of my sites accidentally turned into one.

It was just for a few hours but that’s what can happen when you run sites that rely on user generated content. User generated content is when the content on your app is created almost entirely by users, and not by staff. Examples of UGC include Reddit, Yelp, TikTok, and Facebook. As you can imagine, allowing anyone with an internet connection to post something on your site is dangerous.

But there are ways you can harness the beast.

How do I know? So far the two products I run have had mild success without anything too bad happening.

The first one is called Open Sukkah and it’s like an Airbnb for sukkahs. In case you’re not familiar, Sukkot is a Jewish holiday where Jews spend a week eating in temporary structures with specific guidelines. You’re supposed to live in them, but most people don’t. Building one isn’t easy. You need an outdoor space that has a direct view of the sky - even trees above it aren’t allowed.

One year I couldn’t build one for whatever reason, so I thought to myself “I’m sure there are people around me that would be happy for me to use their sukkah to eat in.” Problem was, I didn’t know how to find them. So I created a website that allows people to share their sukkah to the public on a map. And hundreds of people have shared theirs.

The second product is driven even more by user generated content. It’s called TasteJury and its a mix between Reddit and Yelp. The idea is that if you go to a city and you only have a few days to eat the food there, you want to know where the best places are to eat. You could look at food media sites, but they’re often biased, and usually locals can agree on a clear winner or two in a city. TasteJury allows people to vote directly on where is best to eat a certain dish in a city. Currently there are over 600 dishes in 10 cities with 3500+ restaurants. There’s no way I could have done that myself. It’s all thanks to the users and their contributions of content.

With that, I’ve learned a whole bunch and I want to share those things here. Here are some lessons I’ve learned:

Whether you like it or not, you need moderation tools

Unfortunately, not everyone in the world is good. Although you can safely rely on (and build products around) most people being good, anything popular enough will attract some bad apples.

In the case of Open Sukkah, there were two incidents:

Someone posted a clearly anti-Jewish establishment on the map: This was easily solved by just deleting it, but it may have managed to get into the screenshot that was shown on live TV. Oops!

Someone bombarded my server with requests and crashed the site: I solved this by shutting down the server and waiting for the person to lose interest. (Adding user signup could have solved this but you’ll see why it isn’t always a great idea below)

In the case of TasteJury, there were also some incidents:

Someone kept posting inappropriate images: A site where people can post text has some risk, but allowing people to upload images brings a whole new dimension to it. I don’t know why people do it but they do! I intially solved this by deleting any account the person created, but they can just create more. Eventually, I solved this by adding a moderation queue, so now when anyone uploads a picture, I have to approve it before it appears on the site. It’s not the smoothest flow, but that experience scarred me a bit.

Someone kept posting anti-semitic slurs as names of restaurants: I added a “Report Listing” button where people can alert me of bad content and I do a regular checkup of recent additions to see that they make sense. There are lists of words you can ban as well, like the List of Dirty, Naughty, Obscene, and Otherwise Bad Words.

All these occurrences weren’t random though. I had all of these coming to me when I allowed anyone without an account to post a sukkah or restaurant. But I needed to. Had I required an account at the beginning, the sites never would have gotten off the ground. I will address this a bit later.

What kind of moderation tools can you build (or ideally buy)?

User reports

This solution is used by any major website or app and that’s letting users work for you! All you need is a user to press a button to alert you about something. You could even automatically hide something if it’s pressed by a few users.

Admin tools

You’ll need to build (or buy) an admin section of your app where you can quickly address issues or approve content. Doing it directly in the database is too time consuming. For example, the moderation queue for images would go here. You could also (and probably should) automatically run content through filters that detect bad images.

Even if there’s no obvious benefit, people will contribute

When launching both of these products, I wasn’t sure that people would actually contribute. They weren’t actually getting any benefit from the products. In fact, they were giving up their time and even space (in the form of a sukkah) to strangers. But they did it anyway. I can’t really explain why it’s worked so far, but I guess people like to help and want to contribute when they come across a cool project. I can’t promise that people always will, but the internet is a big place, so there’s always a niche for what you’re offering.

Less than 1% of people will actually contribute, so plan accordingly

If you launch a UGC project and expect the majority of your users to contribute, you’re in for a rude awakening. There’s a “rule” on the internet that says “90% of the participants of a community only consume content, 9% of the participants change or update content, and 1% of the participants add content”. I’ve found this to be very accurate. Plan accordingly. You’ll end up with a lot less content than you thought (see the solution in the next point). You can also make champions out of the 1% who do. I haven’t done this yet, but you can offer features or benefits to the top contributors.

Fake it till you make it

Since only 1% of your users/visitors will contribute, you’re going to have to make some of the content on your own. At the very beginning, the reddit founders would create dozens of dummy accounts to post content just to make the website seem alive. The founders of Airbnb hired photographers to take high-quality photos of airbnbs in order to make the listings look better.

If someone lands on an empty site, they’ll bounce. But if there’s even a bit of intriguing content there, they’ll stick around for another second.

In both Open Sukkah and TasteJury, I’m the top contributor. In other words, I’m still faking it.

Find your champions

Hopefully a subset of that 1% who contribute will be super contributors - users who post many pieces of content. These are your champions. When you do find them, try to understand what makes them so active. You can also try to push the limits of what they’re willing to post. For example, one of my biggest mistakes in TasteJury in the beginning was that when voting, I only asked for their votes. Only later did I think that I should also ask them to write something about why they voted, contributing more content (read: SEO) to the site.

Ask for more than you think your user is willing to contribute, but make many of the fields optional. If you start seeing a lot of pushback, ask for less. You’ll find a balance.

Reduce friction

Obviously, as you reduce friction to contribute, the more content you’ll get. But at the same time, the average quality of your content will go down.


I’ve tried launching cities on TasteJury both while requiring accounts to vote and not requiring them. I’m still not sure which is the right way to go.

The sweet spot for you might not actually be where the lines meet. You can either settle for lots of content with some of it bad, or a small amount of quality content. It depends on a few factors like your tolerance for bad content, the visibility of that content, the size of your app, etc. It’s entirely case-dependant whether you should add or reduce friction. It also depends on the audience you’re launching to. If it’s a small, focused audience that is passionate about your product, you can be safer with less friction. But if you’re allowing contributions from anyone, beware.

In conclusion, there are ways to harness user generated content that can push your app way further than you thought it could go. There will be some risks but there are tools you can use to mitigate them. And hopefully you won’t create a p*rn site.

Follow me on Twitter for more content like this: @theaarontaylor