DEV Community

Perufitlife
Perufitlife

Posted on

I shipped 9 AI niche generators in 2 hours after my generic SaaS got 0 sales (the factory pattern)

After 24 hours of trying to sell a generic "AI text humanizer" (0 sales), I sat down and did what I should've done first: looked at what's actually selling in indie SaaS land.

I scraped a GitHub list of 373 micro-SaaS that are running today. Read the descriptions. Looked for the pattern.

The pattern that wins: one specific use case, one specific pain, one $9-$19 transaction. Not "AI text humanizer" (too generic, who's the buyer?). Specific things like:

  • AI Wedding Toast
  • AI Cover Letter Generator
  • AI PowerPoint Maker
  • AI Apology Letter
  • AI Eulogy Generator

The buyer has a wedding next month. A funeral this week. A job application due Sunday. They Google "ai eulogy generator", land on something that asks 5 specific questions, get a usable speech, hit the $9 button. Done.

I'd been building "aitells — AI text detector + humanizer" for 24h and gotten zero buyers. Today I sat down and shipped 9 single-purpose generators on top of the same backend, in 2 hours total.

What I shipped

All at aitells.vercel.app/<name>:

  1. /eulogy — funeral speech in 30 seconds, 3-4 min spoken
  2. /best-man-speech — wedding toast that gets the room
  3. /wedding-toast — maid of honor, father of bride, etc.
  4. /apology-letter — the kind that lands, no "sorry if you felt"
  5. /resignation-letter — close the door cleanly
  6. /performance-review — concrete, no "wears many hats" word soup
  7. /cover-letter — past the first sentence
  8. /college-essay — Common App, voice of a 17-year-old
  9. /tinder-bio — right-swipe hooks

Each is free preview → $9 unlock-everything (one Stripe link unlocks all generators + the rewriter on the same site).

The architecture (under 80 lines of repeated code per generator)

The pattern:

/api/generate/route.ts                  ← one factory endpoint
  TEMPLATES = { "eulogy": {...}, "best-man-speech": {...}, ... }
  POST {template_id, inputs} → {ok, preview, full, word_count}

/_generators/GeneratorClient.tsx        ← one reusable client component
  takes {templateId, title, subtitle, fields[]} as props
  renders form → POST /api/generate → render preview → Stripe CTA if not paid

/eulogy/page.tsx                        ← 30 lines, mostly props
  <GeneratorClient templateId="eulogy" title="..." fields={...} />
Enter fullscreen mode Exit fullscreen mode

Adding a 10th generator is: write one Template object in the factory, write one page.tsx with the field list, deploy. About 20 minutes.

Why this works (theory of the case)

The chatgpt.com referrer signal: when someone asks ChatGPT "I need help writing X", ChatGPT either writes it inline OR recommends a tool. For ChatGPT to recommend you, you need:

  1. A clean, narrow URL: aitells.vercel.app/eulogy beats aitells.vercel.app/?type=eulogy
  2. SEO metadata that says exactly what you do
  3. JSON-LD SoftwareApplication schema (already on the homepage, propagating)
  4. Real text content explaining the differentiation, not just a form

I shipped 9 narrow URLs in one afternoon. In 4-8 weeks, Google will index them and ChatGPT/Claude/Perplexity will start citing them. Until then, IndexNow pinged Bing/Yandex for faster discovery.

What I'm watching now

  • Stripe for the first $9 buy
  • Google Search Console for impressions per landing (in 2-3 weeks)
  • ChatGPT referrer signups (the leading indicator that the niche pages got picked up)

If even 2 generators get traction, I'll ship 20 more in 5 hours. The factory is built. The only marginal cost per generator is the AI tokens for that one buyer's preview + full speech (~$0.02), plus 20 min of my time.

The honest postmortem on the first 24h

Six hours yesterday went into a generic "AI text humanizer". It still works. It still has $0 in sales. The market was telling me the offer was too generic. I kept polishing instead of pivoting.

When the market gives you a 0, the answer is rarely "do the same thing better". It's "do a much more specific thing".


I also build supabase-security and 4 sister BaaS auditors. Same factory pattern: build one core, package 5 ways. Works for SaaS just like it works for content generators.

The factory: aitells.vercel.app (lists all 9 generators in the header).

Top comments (0)