Jake Mintz (@jakemintz) on X

X (formerly Twitter) ·

7 min read Original article ↗

Three generations of trying to make AI writing cross the bar

David Cho is one of our most respected engineers. He doesn't hand out unwarranted praise.

Last month he messaged me about three internal pieces I'd shared. He'd seen AI was involved and asked how I'd tweaked the style. After I explained, he replied: "Wow that's honestly very impressive. I think it paid off. Now if only everything I read was this clear."

That was the wow moment. Not because David was fooled — he wasn't. Because the output had crossed a bar a discriminating reader actually cared about. That didn't happen in Gen 1 (prompt engineering). Or in Gen 2 (voice cloning). It happened in Gen 3. This post is about what changed.

The problem

Two things make non-SWE AI hard.

First: models are RL'd for code. Coding is the #1 training priority. They generalize, but writing isn't where they're native. And writing is the modal output of everyone on my team who isn't shipping code.

Second: I have to keep my team's productivity growing alongside the SWE-output gains the models drive on their own. If engineers get 10x from AI, the rest of the org needs to keep up — or non-SWE work becomes the bottleneck for everything engineers ship.

The default output of AI writing is slop. Not factually wrong. The slop I mean is correct-but-unreadable. Every sentence is technically right, nothing lands, the piece is too long for what it's saying. Readers skim, skip, or stop.

That's a writing problem, not a correctness problem. The last two months of my time have gone there.

What I tried first

Gen 1 was better prompts. Everyone starts here. Gen 2 was voice cloning — capturing someone's taste and style so the output read like them. Both are real improvements over a cold prompt. Neither cleared the bar.

Prompt engineering hits a ceiling. You're fighting the model's defaults at the sentence level. The real problems live a level up. Voice cloning solves surface style but nothing underneath — a mimicked voice on a weak argument still reads as bad writing, just with better rhythm.

This is the same move senior engineers already make with AI code. Models don't produce great code without skill direction. They produce inelegant code, fast. Senior engineers add structure, taste, and craft on top, and that's what makes the output good. Writing has the same shape. The skill is in directing the abstraction, not editing the prose.

Three things, one mechanism

Gen 3 operates three levels up from prose.

The first level is an editing abstraction layer. The system doesn't iterate on paragraphs. It iterates on the abstraction of the piece: the one argument, the proof points in priority order, the specific details that have to land, the structural arc, the voice constraints, the audience constraints. All of those are editable in seconds. Move the third proof point above the second and the whole piece regenerates. Switch the audience from "CEO" to "engineering team" and every paragraph adjusts. The prose isn't the artifact you're working on. It's what the abstraction generates.

This took me the longest to get right. Most AI writing tools let you edit the prose. Some let you edit an outline. None let you edit the whole specification of a piece (argument, proof, structural arc, voice, audience) and have the prose follow. That's the layer the rest depends on.

The second level is encoded writing-craft knowledge. AI doesn't write this way by default. Models trained on the open web produce prose that's grammatical, confident, and on average mediocre. Good writing has rules — not style rules, craft rules. One argument, not seven. A paragraph that can be deleted without loss should be. Two adjacent paragraphs with the same summary should merge. These rules exist as checklists and rubrics the system runs against every piece. Not vibes. Checkable items.

The third level is two-loop refinement. Most AI writing tools have one loop: write, regenerate, tweak. Gen 3 has two. The first is pre-draft: build a Context Brief, run idea triage (one argument plus two or three proof points, cut the rest), generate a Style Contract, propose a structural plan. You approve each step before any prose gets written. The second is post-draft: draft, evaluate against the rubric, triage findings as must-fix / should-fix / consider, revise, evaluate again. Up to three rounds.

The ordering falls out of the layers. Concept first, because that's where the triage happens and the one argument lives. Structure next, because that's where the reader's thread either holds or breaks. Line last, because every sentence in a cut paragraph is wasted work.

That's the unlock. Concept before structure before line. Not as a slogan. As a consequence of operating at the right levels of abstraction with the right rubric and enough iteration.

Voice shapes structure

The other non-obvious claim. Voice isn't just style. Voice shapes structure.

Most "write like X" prompts capture what sentences sound like. They miss architecture. A Paul Graham essay meanders through exploration. A Morgan Housel piece compresses 1,200 words of anecdote into a paragraph's worth of argument. A Matt Levine column runs as commentary that keeps interrupting itself; the parentheticals are the point.

Imitate at the word level and you get prose that sounds right and feels wrong. The rhythm matches; the architecture doesn't. Voice files in Gen 3 encode both. A Housel piece gets planned as compression. A PG piece gets planned as exploration. Same raw material, different skeleton.

Voice matters for every draft, even when you only use your own. The structural patterns in your file shape how the pipeline builds.

The two voices I use most are my own and Technical Writer (for documentation). The rest of the named-writer catalog is closer to an Instagram filter than infrastructure: a fast way to stylize, but no replacement for the craft of framing and lighting.

Voice × audience

Voice is how you write. Audience is who you're writing for. They're orthogonal layers, and their cross-product is where the system compounds.

The same raw material, targeted at different audiences, produces different pieces. An audience profile isn't a vibes description ("smart and busy"). It's a set of hard constraints: max words, paragraph density, preferred structure, evidence style, CTA style, the patterns that reliably produce pushback.

Writing the same incident report for a CEO and an engineering team produces two different documents in my own voice. CEO version: BLUF opening, bounded-downside framing, explicit ownership, crescendo close. Eng-team version: alternatives considered and why each was rejected, reproduction triples, architecture sketches, named owners, no marketing register anywhere.

Voice stays constant; audience changes everything else.

Where it doesn't work

The skill is built for essays, memos, blog posts, and emails. PRDs are the aspirational target. Gen 3 doesn't reach them. Gen 4 does, more on that next.

It doesn't work for exploratory writing — feed it nothing and you get thin slop faster. It can't invent insights. It's not for fiction or poetry.

What's next

Two directions for Gen 4.

The first is simulation. The audience file describes how a reader reads. A simulator reads the reader in reverse: take a draft, hand it to the audience profile, get back the predicted reaction before you send. The private version I've been building is react-like-ceo. The audience profile becomes shared substrate: the same file constrains the writing AND evaluates the output.

The second is Karpathy's autoresearcher, applied on top of the editing pipeline. Today the evaluate-revise loop exits after three rounds because I want a human in the loop. Autoresearcher hill-climbing runs the loop without me at every checkpoint, climbing toward better writing autonomously. PRDs come into reach there.

The point of all of this isn't that AI will write your stuff for you. The point is that your team's reading and writing can keep pace with your engineers' code output. Model progress on code is model-funded by companies with obvious incentives. Model progress on your writing is your problem to solve, with the tools the labs have shipped.

Build those systems. Or steal mine: http://github.com/jakemintz-valon/valon-write-as.

This is the new bar.

Jake

Written with the skill it describes. Here is the session that generated it.