DEV Community

Perufitlife
Perufitlife

Posted on • Originally published at aitells.vercel.app

I expanded my niche AI factory from 9 to 15 generators in under an hour

Yesterday I wrote about a 2-hour panic-build: 9 niche AI generators shipped on one factory backend after 24h of $0 sales on a generic humanizer. (previous post)

Today I extended that factory from 9 to 15 generators in under an hour. Not because I think 15 is the right number — because the marginal cost was so low it'd be irrational not to keep planting.

The 6 I added

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

  • /thank-you-note — gifts, weddings, post-interview, sympathy. Names the specific gift, 80-130 words.
  • /breakup-text — firm + kind, names what's ending, one real reason, no "let's stay friends" unless requested.
  • /instagram-caption — first-line hook readable before "more", one specific detail, 5-8 mixed hashtags (not 30).
  • /linkedin-post — no "I'm humbled to announce", first-line hook, one concrete claim + one specific story or number.
  • /reference-letter — 2-3 specific examples with outcomes, one honest growth area framed as context.
  • /out-of-office — clear dates, response expectations, backup contact, no double "in my absence".

Each is free preview → $9 one-time unlocks all 15 generators plus the rewriter.

The cost of generator #15 vs #1

Generator #1 (eulogy) took me about 2 hours: building the factory, the reusable client component, the Stripe gate, the template structure.

Generator #15 (out-of-office) took 12 minutes:

  1. Add one Template object to /api/generate/route.ts (~30 lines: systemPrompt, buildUserPrompt, maxTokens, previewWords).
  2. Create one page.tsx with <GeneratorClient templateId="..." fields={[...]} /> and a metadata block.
  3. Add the URL to sitemap.ts and a card to the homepage hub.
  4. Deploy. Smoke test. IndexNow ping.

The bottleneck is no longer code. It's knowing which niche is worth shipping.

How I pick the next niche

After a day of staring at this, my heuristic is:

  1. Single-purpose Google query exists. Someone searches "ai apology letter" or "ai wedding toast". The verb is bounded.
  2. Pain has a deadline. Wedding next month, funeral this week, performance review due Friday. Generic tools don't compete because urgency burns through indecision.
  3. The output is too important to half-ass and too small to hire a professional for. $9 is cheaper than 2 hours of your time. A pro freelancer is $200.
  4. The buyer doesn't want to share that they used AI. Apology letter, breakup text, eulogy, college essay. They're not going to subscribe to your newsletter and tweet about you. One-time payment, no friction.

Out of these 15, the ones I'm betting are the strongest on this rubric: eulogy, best-man-speech, apology-letter, breakup-text, college-essay. The rest are surface-area bets.

The architecture (now with 6 more templates)

/api/generate/route.ts                  ← 15 templates in one TEMPLATES dict
  POST {template_id, inputs} → {ok, preview, full, word_count}

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

/eulogy/page.tsx                        ← 30 lines
/breakup-text/page.tsx                  ← 30 lines
/out-of-office/page.tsx                 ← 30 lines
... etc x 15
Enter fullscreen mode Exit fullscreen mode

Adding a 16th niche right now is a 10-15 minute job. The interesting thing isn't the code — it's that the incremental risk is also tiny. If one niche flops, it lives at /<slug> forever earning $0 with negligible token cost. If one hits, I have the infra to add 5 cousins to it in an afternoon.

What's not done

  • Cross-device unlock. The aitells_lifetime flag is in localStorage. Buy on phone, can't use on laptop yet. Fixing this with a Supabase table + magic link after I hit 5 sales — not before.
  • A/B testing different price points. Single $9 Stripe link for now. Will add $7 / $9 / $14 splits after first sale to learn elasticity.
  • Brand-safe variants. Right now the LinkedIn-post generator outputs my preferred style (direct, slightly contrarian). Some users want corporate-LinkedIn-speak. Future field.
  • Search Console traction signal. New URLs go live → IndexNow pings → Bing/Yandex pick up first → Google indexes in 1-3 weeks. ChatGPT/Perplexity citations come last (4-8 weeks). I'll know in mid-June whether the factory thesis is right.

Honest revenue check

15 generators live. $0 in sales as of writing. I'm 36 hours into this approach. The cost has been near-zero (Vercel free, Anthropic tokens ~$0.30 total so far for testing all 15 endpoints).

If even ONE generator gets first-page Google in 4 weeks, I'm in the money. If three of them do, I'll ship 30 more.

The factory: aitells.vercel.app — the header has cards for all 15.

Cross-pollinating with my BaaS auditor work too — same factory pattern: one supabase-security core, package 5 ways. Different domain, same compounding logic.


If you've shipped niche AI wrappers and can share how indexation went for you — drop a comment. Especially curious about people in the 4-12 week SEO range with similar one-purpose URLs.

Top comments (0)