# IndieHackers — My build log post

**Profile:** real founder profile, headshot, "OutlineAI" in bio, link
in bio pointing to https://outlineai.dev/r/ih
**Category:** "My Build Log" (the long-form one, not "milestone")
**Title (≤ 80 chars):**
*Building OutlineAI — a quality-gated AI blog outline generator, week 12*

---

## Post body

I've been building [OutlineAI](https://outlineai.dev/r/ih) for about
12 weeks. It's a small SaaS that generates SEO blog outlines — H1,
H2s, FAQs, keyword targets, internal link suggestions, three title
alternatives — in about 16 seconds. Free tier of 3 per day, Pro is
$9/mo, Agency is $99/mo.

This is a build log because I want to remember what I built and why,
and because other solo founders in content tooling seem to find the
specifics useful.

## What the product actually does

The user types a topic + audience + tone + language, hits a button,
and gets a structured outline document. The output is one H1, 5-8 H2
sections (each with word count and 2-5 H3s), 5-8 FAQs, a primary
keyword + 5-12 secondary keywords, 3-6 internal link suggestions, and
exactly 3 title alternatives. The whole thing is gated by a Pydantic
schema — if the LLM misses any field, the request is retried once with
a list of the specific failures. If it misses twice, the user gets a
clean 502.

I spent more time on the schema than on the prompt. The prompt is
fine. The schema is what stops the model from handing the user a
half-baked outline.

## The YMYL decision

The product is positioned for content marketers, but the topics people
actually try cover everything — including health and finance. About 30%
of test topics in the first month were YMYL (Your Money or Your Life —
Google's acronym for content where wrong info hurts people).

I had a choice: either don't serve those topics, or serve them with a
forced fact-check warning. I chose the warning. Every health, finance,
or legal outline gets a non-dismissible banner at the top of the
results page and in the Markdown export. The warning is part of the
document. The user can't copy a YMYL outline and paste it into a blog
post without seeing "verify current limits, tax rules, eligibility
requirements" or the equivalent.

I also don't trust the LLM's own self-classification for the risk
label. I run a deterministic keyword check on the topic in addition,
and if either the model or the keyword check says YMYL, the outline
is marked. The keyword list includes English, Spanish, French,
German, Italian, Portuguese, Japanese, and Chinese terms because
"mortgage" in any of those languages should trigger financial.

I wrote up the full rationale [on the blog](https://outlineai.dev/r/ymyl).
It is the part of the product I am most opinionated about.

## What I'd do differently

1. **Cache outputs more aggressively.** A surprising number of users
   generate the same topic twice in 5 minutes. I should fingerprint
   the prompt and serve the cached outline.
2. **Ship the API earlier.** I waited 8 weeks to ship a paid API key
   flow because I was worried about abuse. The right answer is ship
   it with rate limits, not wait.
3. **Don't add a "Cancel" button to the spinner.** Users click it
   thinking they're cancelling a form, not a request. I keep it
   because the alternative is worse, but the failure mode is real.

## What I'm trying next

This week I'm starting soft launch. The plan is 14 cold emails to
SEO/review editors, a build log here on IndieHackers, and three
Reddit posts (r/SaaS, r/SEO, r/Blogging) with the same outline samples
as the centerpiece. The samples are public at
https://outlineai.dev/r/samples — five real outlines, all generated
in production.

The four things I want to learn in the first 30 days:

1. Do the email + community + sample-page approach actually get
   people to the free tier?
2. Of people who generate, what % copy any part of the outline? (I
   track this anonymously — full copy vs per-section vs per-FAQ.)
3. Of copiers, what % come back within 7 days? (I don't have a
   login, so this is by IP, which is a noisy proxy.)
4. Of returners, what % hit the Gumroad button? (I do track this.)

If #1 is below ~50 unique visitors, the funnel upstream is broken and
I should not be optimizing the product. If #1 is fine and #4 is zero,
the product is fine and the pricing page is the problem.

## Where to find me

- Product: https://outlineai.dev
- Samples: https://outlineai.dev/samples
- This build log's tracked link: https://outlineai.dev/r/ih
- Twitter: [@outlineai](https://twitter.com/outlineai) (I post
  weekly about what I shipped and what broke)
- Email: hello@outlineai.dev (real human, real reply, weekdays only)

If you're a content marketer or run an SEO agency and want a 6-month
Pro code to actually try it, drop me your work email and I'll send it
same day. The YMYL fact-check warning is the thing I'm most curious
whether people find useful or annoying — feedback either way would
shape what I ship next month.
