We generated 5 blog outlines with our own AI. Here's exactly what came back.
Before launching OutlineAI publicly, we ran 5 real topics through the production system. Here are the full results — what the schema enforced, what the retry-once did, and what we changed.
Before we opened OutlineAI to the public, we ran the same tool we sell through five real topics. Not toy examples. Not "write me an outline about cats." The kind of topics a content marketer would actually hand to a writer on Monday morning.
We did this for one reason: if we can't show our own tool's output on our own landing page, the tool isn't ready. Every sample on our samples page is one of the five we're walking through below.
The 5 topics
| # | Topic | Search intent | Risk category |
|---|---|---|---|
| 1 | Best standing desks for remote work in 2026 | Commercial | Standard |
| 2 | A beginner's guide to indoor herb gardening | Informational | Standard |
| 3 | How to build a sustainable sleep schedule | Informational | Health (YMYL) |
| 4 | First-time home buyer's checklist for 2026 | Informational | Financial (YMYL) |
| 5 | How to choose the best project management software for small teams | Commercial | Standard |
We deliberately mixed commercial (people comparing products to buy) with informational (people learning how to do something), and three standard topics with two YMYL topics — health and finance. YMYL is Google's acronym for "Your Money or Your Life": topics where wrong information can hurt the reader. Google holds YMYL content to a higher quality bar, and so do we.
What the schema actually enforces
A lot of "AI outline generators" return a topic, a bullet list, and a shrug. OutlineAI's backend is built around a Pydantic schema that every response must satisfy before we hand it to the user. The schema enforces:
- One H1, between 10 and 240 characters
- One meta description, between 50 and 160 characters (Google truncates at ~160)
- 5 to 8 H2 sections, each with an estimated word count and 2-5 H3s
- 5 to 8 FAQs
- 3 to 6 internal link suggestions (titles of related articles the writer should plan to link to)
- Exactly 3 title alternatives — not 2, not 5
- 1 primary keyword and 5-12 secondary keywords
- A risk category (
standard/financial/health/legal) - No duplicate H2s, no duplicate title alternatives, the H1 must differ from the title alternatives
- No fabricated methodology — "How we chose…", "Our experts tested…", "We reviewed…" are rejected unless the user explicitly said they tested something
- No stale recent years — if you ask for a 2026 topic and the model sneaks in "trends for 2024", we retry
If the LLM violates any of these, the request is retried once with a list of the specific failures. If it fails twice, the user gets a clear 502 — not a half-baked outline.
What came back, in numbers
Every one of the five requests succeeded on the first attempt (no retry). Here's the result table:
| Topic | Risk | Sections | FAQs | Internal links | Titles | Time |
|---|---|---|---|---|---|---|
| Standing desks 2026 | standard | 8 | 8 | 6 | 3 | ~25 s |
| Indoor herb gardening | standard | 8 | 8 | 6 | 3 | ~20 s |
| Sustainable sleep schedule | health | 8 | 8 | 6 | 3 | ~17 s |
| First-time home buyer's checklist | financial | 8 | 8 | 6 | 3 | ~22 s |
| PM software for small teams | standard | 8 | 8 | 6 | 3 | ~16 s |
The 16-25 second range is what the LLM provider's API takes; the validation and rendering add under 50 ms. Total word count of all five outlines: roughly 18,500 words of planning material. We did not edit any of them before publishing them on the samples page.
The YMYL case is the interesting one
Two of the five — sleep and home buying — are YMYL. The model initially labeled both as standard. We don't trust the model's own risk self-classification for this, so we run a deterministic keyword check on the topic in addition.
For the sleep outline, the topic contained sleep, which we whitelist as a health keyword. The schema field was overridden to health. For the home-buying outline, the topic contained home buyer and checklist in the context of 2026, but more importantly, the H1 and primary keyword both contained home buyer, which we whitelist as a financial keyword. The schema field was overridden to financial.
This matters because when risk = health or financial, the public outline page and the Markdown export both display a fact-check warning at the top:
Health topic: verify medical claims, outcome estimates, contraindications, and safety advice against authoritative clinical guidance before publication.
We do not let the user copy a YMYL outline and silently paste it into a blog post without seeing that warning. A reader is going to trust what you publish. We'd rather be annoying than be the reason someone got bad health or financial advice.
What we changed as a result
Three things:
- We added
sleep,insomnia,homebuyer,home buyer, andreal estateto the deterministic YMYL keyword list. Without these, our two test topics had silently passed asstandard. We caught it because the schema required a risk field, but the field value was unverified until the post-processing pass. - We rejected the model's first attempt at the home-buying outline because it included the line "Based on our review of 47 lenders…" in one H2. Our regex caught the phrase "our review" and the request was retried with a clear note. The retry came back clean.
- We made the fact-check warning non-dismissible on the sample pages. It can be styled differently per risk category, but it is always there for YMYL.
Try the same tool
You can run the exact same pipeline on your own topic at outlineai.dev. Three free outlines per day, no signup. If you want to see the full output of any of the five above, they're all on the samples page.
If you publish one, we'd genuinely like to see how it does. Email [email protected].
Ready to see your own topic in 10 seconds?
3 free outlines per day. No signup, no credit card.