If you've been following along since the hub article on the AI system behind this site, you already know the broad shape of the pipeline. A pitch comes in, gets approved, and eventually becomes a published article. This piece is about the middle part — the step where approved pitch becomes actual draft — because that's where most AI content systems quietly fall apart, and the way this one handles it is worth walking through in detail.

Two models, two jobs
The research pass and the drafting pass use different models. Gemini handles research; Claude Sonnet's drafting strengths handle the actual prose.
This isn't a philosophical stance on which model is "better." It's closer to how you'd staff a project if you were hiring people: the person who's good at pulling information together and the person who's good at writing for a specific voice are often not the same person. Asking one model to do both in a single pass usually means one job gets done well and the other gets done adequately.
The handoff is structured. Gemini produces a research brief — facts, examples, angles, source material. That brief goes to Sonnet as the source document for the draft. Sonnet doesn't go back out to the web; it works from what's in the brief. This keeps the draft grounded in verified material rather than whatever the model decides to reach for on its own.
I'll be honest: when I first started thinking about multi-model setups, I assumed the complexity would outweigh the benefit. The two-model handoff is one of the things that changed my mind on that.
The audit trail

Every draft gets written to two places simultaneously.
One copy lands in the review folder — the editable version I work with. The other goes into a frozen baseline folder that nothing in the pipeline ever touches again. The verbatim raw input (the research brief that went into the model) is archived separately.
So the full history of any piece is: raw input → frozen draft → whatever the edited version became. If you want to know how much changed between what the model produced and what published, the evidence is sitting there.
This matters more than it sounds like it does.
Most people using AI for content creation have no idea how much they're actually changing. They have a vague sense of "I cleaned it up a bit" or "I rewrote most of it," but no actual record. The frozen baseline makes that concrete. It's also the honest foundation for any transparency disclosure — you're not estimating, you're comparing.
I don't think every creator needs a system this formal. But having some version of "what did the model actually produce before I touched it" is worth more than most people realize, especially if you're going to make any claims about how much AI is or isn't in your work.
A voice reference that's actually useful
This is the part I find most interesting.
There's a voice reference file that the drafting model reads before generating anything. Most content systems have something like this — and if you've ever tried to teach AI to write in your voice, you know the usual approach is a style guide, a tone document, a "be conversational and direct" prompt. They're usually pretty useless because they describe the desired output in abstract terms. "Sound like a smart friend." "Be direct." "Avoid jargon." The model nods along and then produces exactly the kind of clean, structured, slightly-too-clever prose it always produces.
This one works differently because it's built from actual edit-diffs.
When I rewrite a draft, the pattern behind the change gets documented with a real before-and-after example. Not "be more casual" — the actual sentence that was too formal, the actual replacement, and a note about what the pattern was. "He cuts the clever comparison and just says the thing straight." "He inserts himself into the observation." "He steelmans the opposing view before explaining his position."
There's also a list of specific banned structures — not just words, but rhetorical moves. The negation-pivot ("That's not X. It's Y.") is on there (hated it before AI started to use it so frequently). So are abstract-noun-as-metaphor-of-change sentences. So are parallel closing lines that feel like manufactured "mic drops."
The difference between a style guide built from vibes and one built from evidence is enormous.
The vibe-based guide tells the model what you want. The evidence-based guide shows the model what you actually do, which is a different thing entirely.
Why a prompt rule isn't enough
Here's the honest part, and it's useful for anyone building with LLMs.
The negation-pivot structure — "That's not X. It's Y." — is in the voice reference as a banned pattern. It's in the prompt explicitly. The models still produce it. Not always, but often enough that it can't be caught by asking nicely.
The reason is that it's a strong model-level habit. These structures are everywhere in the training data. They feel like good writing to the model because they pattern-match to confident, punchy prose that probably performed well wherever it appeared. Telling the model not to do it is like telling someone not to say "um" — they'll do it anyway under normal conditions because it's not a conscious choice.
The reliable fix was to check the output and retry with feedback, not to refine the prompt further.
There's a script called voice-guard.js that regex-checks generated drafts for the banned patterns. When it finds one, it doesn't just flag it — it triggers an automatic rewrite pass with specific corrective feedback about what was wrong. The model gets told: here's the sentence, here's why it violates the voice, here's what to do instead.
Three gates total: the prompt going in, the post-generation check, and a confidence scorer. The confidence scorer is worth a separate mention.
What the confidence scorer actually does
Each draft gets scored 0–100 across a few dimensions: voice match, sensitivity, topic familiarity, type risk.
The interesting part isn't the score. It's that the system knows which drafts it's unsure about.
A draft that scores 90 on voice match goes to review with a different level of attention than one that scores 60. The low-confidence drafts get flagged. My review is still manual — the scorer is triage, not autopilot. But triage is genuinely useful when you're running a pipeline that produces multiple pieces in a batch.
This is a pattern worth borrowing even if you're not running anything like a formal pipeline. If you use AI to help you write, you probably have an intuition about which outputs feel closer to your voice and which ones feel like they need more work. Making that intuition explicit — even just a gut-check rating you assign before you start editing — changes how you approach the revision. You're not treating every draft as equally finished.
What this means for how you might think about your own setup
I'm not suggesting everyone needs a two-model pipeline with frozen baselines and a voice-guard script — if you're curious about how this pipeline was built in the first place, that's a separate piece. Most of us are working in ChatGPT or Claude.ai or Gemini's interface, and the overhead of building something like this would eat the time it's supposed to save.
But there are a few things here that translate to simpler setups.
The edit-diff logic behind the voice reference is something anyone can do manually — and it's part of the journey from AI user to AI builder that doesn't require shipping a full pipeline. If you use AI to help you write and you find yourself rewriting the same kinds of things over and over — the same too-clever constructions, the same over-explained transitions, the same punchline endings — write that down. Not as abstract style advice, but as before-and-after examples. Feed those examples back into your prompt the next time. You're doing the same thing the voice reference does, just without the automation.
The frozen baseline idea is also easy to replicate. Before you start editing an AI draft, copy it somewhere. A separate doc, a note, anything. You'll know what you actually changed, which is worth knowing.
And the "prompt rule isn't enough" lesson is probably the most transferable. If a model keeps doing something you've explicitly asked it not to do, asking more emphatically usually doesn't fix it. Checking the output, naming the specific problem, and asking for a targeted revision does. That's true whether you're running a pipeline or just working in a chat window.
The part that's still manual
Approval is still manual. I read every draft before it moves forward. The confidence scorer helps him know where to focus attention, but nothing publishes without a human decision.
I think this is the right call, and not just for quality reasons. The pipeline is good at producing drafts that are close to the voice. It's not good at knowing whether a piece should exist at all, whether the angle is actually interesting, whether the timing is right. Those are judgment calls that don't reduce to a score.
The pipeline handles the parts of the work that are genuinely tedious — research aggregation, structure, first-draft prose that's mostly in the right register. That frees up the editorial attention for the parts that actually require it.
That's probably the most honest framing of what a well-built AI content system does: it doesn't replace editorial judgment, it concentrates it. You're still making the calls that matter. You're just not also formatting citations and drafting topic sentences.