You can usually tell within two sentences. Not because the writing is bad, but because it is evenly good. Every sentence roughly the same length, every claim balanced against its counterclaim, every paragraph closing on a restatement of its own first line.
The tells are not stylistic accidents. Each one is produced by a specific property of how the text was generated, and once you can name the cause you can remove the effect. This guide is about using the model for the parts where it is genuinely strong and keeping it away from the part where it is only average.
Last verified against the linked guides on this site. Version-specific details drift — check the vendor docs before relying on an exact flag or limit.
Why asking the model to write the draft removes the thinking
The default is a prompt describing the piece, followed by editing whatever comes back. It produces the fastest possible path to prose nobody finishes reading.
The reason is not model quality. It is that the draft is where the thinking happens, and a draft you did not think through has nothing in it that only you could know. You can edit generated prose for hours and never add the one detail that makes it worth reading, because editing operates on sentences and the missing thing is not a sentence.
Invert it. You write the draft, badly and fast. The model works on the draft: interrogates it, finds the hole in the argument, proposes structures, plays the reader who disagrees. That division puts each party on the side of the work it is actually better at.
By the end you will have
- A split between the jobs the model does well and the one job it does not
- The mechanism behind generated prose, stated so you can predict the tells
- A named list of tells with the cause of each
- The Three-Pass De-Slop Sweep
- A final check that no amount of editing can fake
Use the model where it has an advantage
The model is better than you at four things, and they are all pre-writing or post-writing jobs.
| Job | Why the model wins | Prompt shape |
|---|---|---|
| Structural critique | It reads your outline without your intent filling the gaps | "Where does this argument skip a step?" |
| Adversarial reading | It has no ego investment in your thesis | "Argue the strongest case against this" |
| Compression | It sees redundancy you are blind to after three passes | "Cut 30% without losing a claim" |
| Coverage check | It holds the whole piece at once | "What would a skeptical reader still ask?" |
The one job to keep: the sentences that carry something only you know. The specific number, the afternoon it broke, the decision you regret. Those cannot be generated, because they were never in the training data, and a piece without them is interchangeable with every other piece on the topic.
Mechanism dive: why generated prose has a shape
Three properties of the generation process, each producing a visible tell.
Uniform sampling produces uniform rhythm. Human writing has bursts: a nine-word sentence after a forty-word one, because the writer got impatient or wanted emphasis. Generated text samples each token from a distribution conditioned on fluency, and fluency is smooth. The result is low variance in sentence length across a whole piece, which reads as competent and feels flat, and which is the single most reliable tell.
Preference training rewards completeness and balance. Models are tuned toward being helpful, which in prose becomes covering every angle, acknowledging the counterargument, and refusing to fully commit. That produces the "of course, it depends" register, the both-sides paragraph nobody asked for, and the closing sentence that summarizes what you just read instead of ending.
The model has no unshared information. This is the deep one. Every specific fact available to the model is, by construction, a fact that was written down publicly somewhere. So when a sentence needs a concrete detail, the model reaches for a category noun rather than a proper noun: "a leading provider" instead of a name, "significant improvements" instead of a number, "many developers find" instead of the developer who told you. Vagueness is not laziness in the writing. It is the honest output of a system that does not have the detail.
That third property is why the fix is structural and not editorial. You cannot polish in specificity that was never there. You can only supply it.
The tells, and the cause of each
| Tell | Cause |
|---|---|
| Every sentence 15 to 25 words | Uniform sampling, low burstiness |
It's not just X, it's Y | High-probability rhetorical frame, heavily represented in training data |
| Paragraphs closing on a restatement | Completeness reward, no confidence to just stop |
| "Many teams find" / "experts agree" | No unshared information, so attribution goes generic |
| Tricolon everywhere, three items per list | Three is the modal list length in the corpus |
| Hedged claims with no stated position | Balance reward |
| Adjectives doing the work of evidence | Category nouns standing in for missing specifics |
| Section endings that promise the next section | Structural scaffolding leaking into prose |
The worked example: a post that was rewritten backwards
A piece on a deployment failure, first attempted the default way. The prompt described the incident, the model returned a clean 1,100 words, and editing it took two hours and produced something accurate and forgettable. It read like an incident report because every specific in it was a category: "a configuration issue", "downtime", "our team".
The rewrite started from a page of notes written in fifteen minutes: what the error string actually said, what I checked first and why that was the wrong instinct, the exact wrong assumption about how the health check worked. Ugly, disordered, and full of things no model could have supplied.
Then the model got three jobs. It found the place where the argument jumped from symptom to cause without evidence. It argued that the real failure was the alert threshold, not the config, which was a better read than mine and changed the piece. Then it cut a quarter of the length. What shipped kept my sentences and the model's structure, which is the correct assignment of both.
Magnet: Three-Pass De-Slop Sweep
Run in order on any draft, generated or not. Pass one is mechanical, pass three is the one that decides.
Pass 1: rhythm. Count words per sentence for one section and look at the spread.
# words per sentence, one number per line
sed 's/\([.!?]\) /\1\n/g' draft.md | awk 'NF{print NF}'If most values sit between 15 and 25 with nothing under 8, the rhythm is generated. Fix by cutting, not adding: break the longest sentence in every paragraph, and let one sentence be four words.
Pass 2: the kill list. Delete on sight, no case-by-case judgment.
`not just ... it's` `delve` `landscape` `unlock`
leverage (as verb) seamless robust in today's world
it's important to note that said at the end of the day
game-changer tapestry navigate the (metaphorical)
"In conclusion" "Let's dive in"
Any paragraph whose last sentence restates its first
Any "on the other hand" that is not followed by a real objectionPass 3: the specificity audit. For every paragraph, ask: could this sentence appear in a competitor's post on the same topic? If yes, it is carrying no information. Replace category nouns with proper ones, ranges with the actual number, "recently" with the date.
You should see: pass 3 removing or rewriting a large share of the draft, and the piece getting shorter and better at the same time. If pass 3 finds nothing to change, the draft has no unshared information in it, and the correct response is not to edit further. It is to go get the missing specifics, or to not publish the piece.
Failure modes
| Smell | Result | Repair |
|---|---|---|
| Model writes the draft, you edit | Nothing in it only you could know | You draft, model critiques |
| Kill list applied, nothing else | Slop words gone, slop shape intact | Rhythm and specificity passes are the real ones |
| Asking for "more engaging" | More adjectives, same emptiness | Ask for a specific structural change |
| Generated examples left in | Plausible-sounding fabrications with your name on them | Every example traces to something real |
| Model asked to match your voice | It matches the average of writing like yours | Supply voice by writing sentences yourself |
| Long piece generated in one call | Uniform rhythm across all of it, unfixable by editing | Draft in sections, by hand |
When not to write with AI
- The piece is short. Under 300 words, the round trip costs more than writing it. Say the thing.
- The value is entirely the voice. A personal essay, a founder letter, a note to your team. There is nothing here for the model to be better at.
- You have not done the thinking. Generation will produce a piece that looks finished and hides the fact that you have no position. That is worse than a blank page, because blank pages get fixed.
- The facts are load-bearing and unverified. See Research With AI Without Fake Citations before any of this.
- You are trying to sound like someone else. It works, and it produces a piece nobody trusts on the second read.
path
Make the standard enforceable
Agent OS Setup installs writing rules, review passes, and checks that run on every draft instead of when you remember.
A model can improve any sentence you give it. It cannot supply the sentence that made the piece worth writing.
Your next action: take a draft you were about to publish and run the Three-Pass De-Slop Sweep in order, ending on the specificity audit. Count how many paragraphs survive the question "could a competitor have written this?" If the answer is most of them, the draft is not finished.
Related: Design With AI Without Shipping AI Slop applies the same convergence argument to interfaces.







