The problem
A content manager has an idea, or a link worth answering. They need a researched article and a post for every channel, with every fact traceable to a page the system actually read.
Nothing goes out until they approve it.
- Nothing unapproved goes out
- No fact without a source
What I asked first
The brief left these open. I answered each one before writing any code.
- Who reviews the sources? The brief never says. So a person does, before any article is written. The relevant ones are picked already, and dropping a bad one is one click.
- Three articles, or three directions? Three angles: a headline, an outline and the sources each would use. Only the one a person picks is written. Writing three to throw two away would triple the most expensive step.
- How many times does a person step in? Twice. First the sources and the angle, on one screen. Then the article, its grade and every channel version together.
- What may the grader judge? Only what can't be measured. Sources, facts and format are checked in code first. Tone and clarity are judged. A model grading its own facts is marking its own homework.
- What if the grader keeps failing it? Two rounds of revision, then it stops and hands it to a person with every problem visible. It never ships a failed draft, and it never loops.
- Can the channel posts add anything? No. They're made from the approved article alone, so a post can't invent a statistic.
How it runs
- Person
- Tool
- AI
- Check
- Result
Research
01, Human:
An idea or a link
Content manager
Something worth writing about.
02, Step:
Read the sources
Search, Firecrawl
Every page read is stored as excerpts.
03, AI:
Three angles
Haiku
A headline, an outline and its sources each.
Write
04, Human:
Pick the sources and angle
Content manager
Gate one. Nothing is written before it.
05, AI:
Write the article
Sonnet 5
Every fact cites a stored excerpt.
06, Logic:
Passes the grade?
Code, Sonnet 5
Two revisions, then a person decides.
Then: step 5 (no: revise); step 7 (yes).
Release
07, AI:
A version per channel
Haiku
LinkedIn, X and the newsletter.
08, Human:
Approve each channel
Content manager
Gate two. Nothing publishes before it.
09, Output:
Released on schedule
Resend
The newsletter sends. LinkedIn and X go to a person to post.
Enforced, not requested
- Every fact has a source Nothing is published that can't be traced to a page it actually read.
- The model never writes a link Links come from the stored sources, never from the model.
- No approval, no publishing The server blocks it, not just the screen.
- Never sent twice Every send is reserved, done, then confirmed, so a retry can't repeat it.
- Unsure means unsure A send with no clear outcome is marked uncertain and never retried on its own.
- Posts can't add facts Each channel version is made from the approved article only.
- Every request has a budget An estimate up front. Going over stops the work and asks.
The thing that nearly got past me
Incident
A free tier that failed without saying so
The free tier of the service that matches sentences to their sources quietly refused six of the articles the system had read. Nothing errored. Only two usable sources were left, and it surfaced three steps later as "the angles are too similar".
The fixI moved to a paid provider at the same price. Scores from two different models can't be compared, so I deleted every source the old one had matched and ran the research again, clean.
A free tier isn't a cheaper version of a paid one. It's a different way to fail, and it fails in the middle of the pipeline, not at the door.
The build, in numbers
41 / 44
claims traced to a stored source. The checks flagged the other 3.
4:54
minutes of machine time, from an idea to a graded article and every channel
$0.24
the cost of that full run
1
email delivered from two identical sends
2
places a person decides before anything goes out
265
automated tests passing
From the test report for the live build.
What it refuses to do
- Publish before approval A person approves every channel first.
- Publish a claim it can't trace Every fact points to a stored source.
- Write a link itself Links come from the sources it read.
- Retry a send it isn't sure about It's marked uncertain, and a person checks.
- Post to LinkedIn or X on its own There were no working accounts for either, so a person posts them.
What I took from it
Clever gets you a demo. Traceable gets you trusted. Every fact here points to a page it read, and nothing goes out without a person's yes.
The limit I'd fix first
if I did it again
- I moved the grader to a cheaper, faster model without testing the two side by side first.
- Two rounds of revision don't always fix the writing. One test article still needed a person after both.
