Four days after launch, roastme.gg has had 295 visitors, four people have actually paid to get roasted, and the site has made $31. The most anyone has spent to be publicly insulted by an AI is $20.
Those are not the numbers you put in a pitch deck. They are, however, the actual numbers, and I think they are more useful to another maker than a rounded-up "thousands of users" claim would be. I already wrote about the AI-visibility side of this product, what happens when you try to get ChatGPT to cite it. This post is the other half: what roastme.gg actually is, why it is priced the way it is, and what a genuinely tiny joke SaaS teaches you about pricing, moderation, and scope that a "serious" product hides behind bigger numbers.
What roastme.gg actually does
The mechanic is deliberately narrow. You submit your own X handle or your own website, never anyone else's, pick a dollar amount anywhere from $1 to $1,000 and up, and an AI writes a public roast of it. That roast gets posted to a public leaderboard called the Wall, permanent URL and all, ranked by how much you paid rather than by when you posted.
The pricing is not a flat fee bolted on top of a free feature. It is the entire product, split into five named tiers:
| Tier | Price | What you get |
|---|---|---|
| Mild | $1 – $4 | Playful. Your mom could read it. |
| Medium | $5 – $19 | Pointed. It'll sting a little. |
| Spicy | $20 – $99 | No filter on tone. |
| Savage | $100 – $999 | Stops being nice to you. |
| Scorched Earth | $1,000+ | No ceiling. Takes #1 until someone outpays you. |
Pay more, get roasted harder, rank higher. There is no subscription, no account required to submit, no recurring anything. One page, one input, one payment, one public result.
Why pay-to-rank beats a subscription for a product like this
Most SaaS pricing advice, correctly, tells you to find a recurring value metric and charge for it. That advice does not apply here, and pretending it did would have made roastme.gg worse.
A joke product has one shot at conversion: the moment someone is amused enough to want to see it happen to them. There is no ongoing value to subscribe to, no dashboard to check next Tuesday. So the pricing had to collapse into that single moment, which is exactly what a slider and a one-time Stripe charge do. No plan comparison table, no "starts at" pricing page, no trial. You decide how much the joke is worth to you right now, and you pay it right now.
The dollar amount doing double duty as the ranking mechanism is the actual design decision worth stealing, not the price points themselves. On a normal leaderboard, rank is a vanity number disconnected from revenue. Here, rank is revenue, made visible. The person at #1 on the Wall is not there because they were first or because an algorithm favored them. They are there because they paid $20 for the privilege of the internet reading a specific insult about their app, StillLit.live called out for looking like "a guy texting up? at 2am." That is a much stronger flex-to-spend loop than a MRR badge, in the same family as the leaderboard mechanics I've written about before, except the "score" here is money changing hands on the page you're looking at, not a number pulled from a connected API.
The rule that matters more than the pricing: self-roasts only
The single most important product decision on roastme.gg is not the pricing tiers. It's the constraint sitting quietly underneath all of them: you can only submit your own handle or your own site. You cannot pay to have the AI roast someone else.
It would have been a more viral mechanic to let anyone roast anyone. It would also have turned the product into a harassment tool with my name on the Stripe account, and it would have made every roast a legal and moderation question instead of a joke someone opted into. Self-roast-only trades a chunk of theoretical virality for a product that doesn't need a trust-and-safety team, doesn't generate abuse reports, and doesn't put me in the position of deciding whether a stranger's paid-for insult about a third party is fair game. For a one-person project, that trade is not close.
If you are sketching out a product in this same "let AI generate something spicy and public" category, this is the constraint to copy before you copy the pricing. The joke survives without the harassment vector. The product does not survive the harassment vector.
It also simplifies the AI generation problem more than it looks like it would. The model only ever needs enough context to describe one specific handle or one specific site convincingly, never to arbitrate a dispute between two people or decide whether an insult about a third party crosses a line. That's a narrower, cheaper prompt, and it's a narrower, cheaper support burden. Every "why did the AI say that about me" question has the same answer: you typed in your own handle and picked the price yourself.
Who actually pays to publicly insult themselves
Look at the four names on the Wall and a pattern shows up fast: StillLit.live, aretetechne.hithertoai.org, winnowapp.app, ui.wensity.com. Every single one is somebody's product or domain, not a personal X handle. Nobody has paid to roast themselves yet. People are paying to roast their own startups.
That tracks with who this actually reaches. roastme.gg didn't get discovered by a general audience, it got discovered by the build-in-public crowd on Product Hunt and Hacker News, the exact same people who already post their MRR, their failed launches, and their half-broken landing pages in public because self-deprecation is half the currency of that community. Paying $5 to have an AI publicly roast your own app's name is not a stretch for someone who already tweets about how nobody's using it. It's a slightly more expensive, slightly funnier version of a post they were going to write anyway.
That's worth knowing if you're thinking about copying the mechanic for a different niche. The pricing pattern travels. The audience does not automatically travel with it. Self-deprecating novelty spend works on a crowd that already treats public vulnerability as a bit, not on a general consumer audience that has no existing habit of paying to be embarrassed on purpose.
How to steal this pricing mechanic without copying the product
The specific joke, paying to be insulted, is not the reusable part. The reusable part is a pattern worth naming: let the price the user chooses become the visible outcome, instead of hiding price behind a paywall the outcome doesn't reference.
A few ways that shows up outside a roast site:
- Rank tied to spend, shown publicly. Any leaderboard where position is earned by payment, not by an internal score you can't see, turns the pricing page into the product page. You don't need a separate page explaining what $20 gets you when the $20 result is sitting on the homepage next to the $1 result.
- The payment amount itself as a dial, not a plan. A slider from $1 to $1,000+ communicates "spend more, get more" in one interaction. Three fixed tiers on a pricing page require a comparison table. A dial requires nothing but a number going up.
- No account between intent and outcome. The fewer steps between "I want this" and "here it is, publicly, right now," the higher the conversion on an impulse purchase. Novelty products live and die on impulse, so anything that adds a step (create an account, verify an email, wait for a review queue) is a step actively working against the only thing the product has going for it.
None of this requires a joke premise. It requires a product where the outcome is genuinely more interesting the more someone pays for it, and a willingness to show that difference instead of describing it.
The stack underneath it
roastme.gg is not architecturally different from anything else I build: Next.js on Vercel, the same combination behind makers.page itself, Postgres for the Wall entries, Stripe for the one-time charge tied to each submission, and an LLM call that turns the handle or URL into the actual roast text before it gets written to the database and rendered as a public page.
The interesting part isn't the stack, it's how little of it there is. There are no user accounts on the submission flow. There is no admin queue to review before a roast goes live, the AI output posts directly. There is no email capture, no onboarding sequence, nothing between "type your handle" and "public page with your name on it three seconds later." Every piece of infrastructure I didn't build is a piece I didn't have to maintain, and for a product that makes $31 in its first four days, that ratio matters more than it would for something with real revenue behind it.
The real numbers, four days in
Here's the entire Wall as of today, in order:
| Rank | Target | Tier | Price | Clicks |
|---|---|---|---|---|
| 1 | StillLit.live | Spicy | $20 | 19 |
| 2 | aretetechne.hithertoai.org | Medium | $5 | 14 |
| 3 | winnowapp.app | Medium | $5 | 15 |
| 4 | ui.wensity.com | Mild | $1 | 4 |
$31 in total revenue, 295 visitors since launch, 6 people on the site as I'm writing this. It launched on Product Hunt and got a Show HN post the same week. Those are genuinely small numbers, and I'd rather publish them honestly than round up or go quiet on this post the way most "look what I built" threads do once the novelty traffic settles and the real numbers turn out to be modest.
What I'd actually watch, more than the dollar total, is the clicks-per-roast column. Each of those four roasts is a public, permanent URL that someone can share, and 19 clicks on a single $20 roast from a Wall with only four entries on it is a better early signal than the revenue number alone. A joke product's growth loop isn't the leaderboard, it's whether people who see a roast want to go make their own, or want to send the link to the person who got roasted. Four days isn't enough time to know if that loop actually spins, but it's the number worth tracking, not the total in the Stripe dashboard.
Run the conversion math and it's blunt: 295 visitors, four payments, roughly a 1.4% visitor-to-payer rate. That is not a good SaaS conversion number if you're used to free-trial-to-paid benchmarks. It's a fine number for an impulse product four days into its life with zero paid acquisition behind it, launched purely on a Product Hunt post and a Show HN thread the same week. I'd rather publish the 1.4% than let the round Wall entries speak for themselves, because a case study that only shows the leaderboard and never the traffic it took to fill four rows is telling you half the story on purpose.
Is a joke SaaS actually worth building?
Depends what you're optimizing for. If the goal is revenue on its own, $31 in four days is not a business, and pretending otherwise would be the kind of vibes-only case study I've already criticized myself for almost writing. But revenue was never the only thing on the table.
A product like this is cheap to build (a weekend of the kind of scope I've written about keeping tight when shipping the core loop first), it's inherently shareable because the output is public and personal, and it gives you a live surface to test things on that would be riskier to test on a product people actually depend on. That's a genuinely useful role for a small side project to play: a low-stakes place to make real mistakes, which is exactly what happened a few days into this one.
If you're deciding whether to build something like this yourself, the honest answer is to build it if the idea makes you laugh enough that you'd want to submit yourself to it, and skip it if you're building it because you think it'll blow up. Novelty products live or die on whether the mechanic itself is the joke, and a slider that turns a dollar amount into public rank is either funny to you on day one or it isn't. No amount of Product Hunt upvotes changes that after the fact.
The one bug that mattered more than the launch
The most instructive thing that happened around this launch wasn't the traffic number, it was a bug I found by accident while doing unrelated SEO work: the function that turns a submitted handle or URL into a public page slug stripped the @ off an X handle but never stripped https:// off a website. Submit a full URL and the public page came out as roastme.gg/roast/https-example-com instead of the clean version anyone would actually want to share.
Only one live row had it. I checked with a read-only query before touching anything, fixed the function, updated that single row with a rollback query ready in case the fix was wrong, and added a permanent redirect from the broken URL so a link already shared wouldn't 404. Small bug, small blast radius, exactly because the whole product has a small blast radius. That's the actual case for building the low-stakes joke product alongside the thing that pays real bills: it gives you a live surface to catch this category of mistake, on a URL where the worst outcome is an ugly slug, before you make the same kind of mistake somewhere the worst outcome is a customer's broken invoice link.
Frequently asked questions
How much revenue has roastme.gg made?
$31 across four paid roasts in its first four days, ranging from $1 for a Mild roast up to $20 for the current #1 spot on the Wall. That's the real number, not a projection.
Why does the price determine your rank instead of when you posted?
Because rank-by-payment turns the price itself into the joke and the incentive at the same time. A newest-first feed would just be a timeline. Ranking by amount paid means the person at #1 earned it by paying the most to be insulted the hardest, which is a funnier and stickier mechanic than chronological order.
Can you pay to have roastme.gg roast someone else?
No. Submissions are self-roasts only, your own X handle or your own website. That's a deliberate constraint, not a missing feature, and it's the main thing keeping the product from becoming a harassment tool.
What's the actual tech stack behind roastme.gg?
Next.js on Vercel, Postgres, Stripe for one-time payments, and an LLM call that generates the roast text at submission time. No user accounts, no review queue, no email capture on the core flow.
Is a joke micro SaaS a good weekend project?
If the mechanic itself makes you laugh and it's cheap enough to build that the downside of nobody caring is just your own time, yes. If you're building it hoping it becomes the business, size your expectations to numbers like the ones in this post, not to the outlier threads you see on Indie Hackers.
The honest summary
roastme.gg made $31 in its first four days from four people who each decided a public AI insult was worth between one and twenty dollars. The pricing tiers are the whole product, the self-roast-only rule is the decision that actually matters, and the stack underneath it is boring on purpose so that one person can run it without a moderation team.
That's not a growth story. It's a small, honest look at what a joke SaaS actually earns when you publish the real numbers instead of the impressive-sounding ones. If you're building something similarly small and want a place to list it without waiting on a growth budget, list your product on makers.page for free, and if you want distribution help once it's live, the Marketing MCP can help with the posts and content around it.
Related reading: