These are hard rules. If you catch yourself writing any of these patterns, rewrite. Dо anti-pattern check, scan the draft for every pattern listed here. Zero tolerance.
The tell: "Not X. Y." or "Not X. Just Y." or "It's not about X. It's about Y." A negation followed by an affirmation, framed as revelation.
Symptoms:
- Two short sentences, first negating, second affirming
- Often starts with "Not" or "It's not about"
- The pair is supposed to sound like a mic drop
Examples:
- ❌ "Not just a tool. A methodology."
- ❌ "It's not about the code. It's about the process."
- ❌ "Not hype. Results."
Why it's a tell: This is the single most common LLM writing pattern. It sounds confident and pithy to a machine. To a human reader it sounds like a LinkedIn post.
Instead: Make the point directly.
- ✅ "The process matters more than the code, and here's three hours of public embarrassment proving it."
The tell: Balanced A/B sentence pairs with mirrored structure. One thing does X, the other does Y, and the two clauses are suspiciously symmetrical.
Symptoms:
- Two clauses with identical grammatical structure
- "Where X gives you A, Y gives you B"
- "One approach [verb]. The other [same verb]."
Examples:
- ❌ "Where vibecoding gives you speed, spec-driven development gives you correctness."
- ❌ "One approach trusts the model. The other trusts the process."
Why it's a tell: Real comparisons are messy. Things don't map 1:1 onto neat structural parallels. When they do in prose, it's because the writer manufactured the symmetry.
Instead: Show the comparison through narrative. Tell the story of A failing, then tell the story of B succeeding. Let the reader draw the conclusion.
The tell: Three short fragments in sequence, followed by a punchline. "X. Y. Z. And then [dramatic conclusion]."
Symptoms:
- Three sentence fragments, usually 1-4 words each
- Followed by a longer sentence starting with "And"
- Designed to build rhythm toward a reveal
Examples:
- ❌ "Fast. Cheap. Wrong. And deployed to production."
- ❌ "No tests. No specs. No way to verify. And 25% of Y Combinator is built this way."
Why it's a tell: The published posts DO use lists of three sometimes. The difference: they occur inside natural paragraphs, not as standalone staccato fragments designed to sound dramatic.
Instead: Embed the list in a flowing sentence.
- ✅ "No tests. No specs. No way to verify if it's doing what you actually wanted." (Works because it's part of a paragraph about vibecoding's failures, not standing alone as a dramatic fragment.)
The tell: Multiple sentence fragments in sequence for "dramatic effect." Each fragment is 1-5 words, usually noun phrases.
Symptoms:
- Three or more consecutive fragments
- No verbs, just noun phrases with periods
- Reads like a movie trailer voiceover
Examples:
- ❌ "Purple gradients. Chat interface. Zero tests. Pure vibes."
- ❌ "Same model. Same prompt. Different result."
Why it's a tell: It substitutes rhythm for meaning. Every fragment carries equal weight, which means none of them carry any weight.
Instead: Write actual sentences.
- ✅ "You get something that looks like an app. Purple gradients, chat interface, the whole AI-generated aesthetic. But underneath? Useless error handling."
The tell: Any sentence where the two halves mirror each other structurally. The clauses are balanced like a seesaw.
Symptoms:
- "[Subject A] [verb] [object]. [Subject B] [same verb] [contrasting object]."
- Chiasmus or antithesis that reads like a fortune cookie
- Inverted parallelism: "X without Y yields A. Y without X yields B."
Examples:
- ❌ "The model is smart, but the context is dumb."
- ❌ "Process without knowledge yields organized hallucinations. Knowledge without process yields correctly spelled chaos."
- ❌ "Spec-kit handles the process. Tessl provides the knowledge."
Why it's a tell: These read like fortune cookies. The structural balance makes the writer feel clever, but the reader feels lectured.
Instead: Make the point once, directly, without the balancing act.
- ✅ "Spec-kit will tell your agent how to work, but it has no idea what a Shelly Gen 1 API endpoint actually looks like. That's what tiles are for."
The tell: A short noun phrase posed as a question, immediately answered by its own punchy fragment. The "question" never actually asks anything.
Symptoms:
- [Short noun phrase, 2-4 words]? [Short declarative fragment].
- Two fragments, neither a real sentence
- The question mark is doing the work of an em-dash
Examples:
- ❌ "And the UI? No purple gradients."
- ❌ "The result? A cleaner architecture."
- ❌ "The best part? It just works."
- ❌ "The takeaway? Context is everything."
- ❌ "And the error message? Also hallucinated."
Why it's a tell: It creates fake dramatic tension where none exists. It's a formatting trick pretending to be rhetoric — a setup/punchline couplet disguised as inquiry.
Instead: Use real rhetorical questions that invite the reader to actually think.
- ✅ "You know what's worse than an agent that hallucinates an API? One that hallucinates the error message too."
- ✅ "Who hasn't shipped code they were embarrassed by?"
Real rhetorical questions work because the reader pauses to consider them. The self-answering version never invites thought.
The tell: Paired em-dashes used to set off an aside, where commas or parentheses would do the same job.
Symptoms:
- "X — [subordinate clause] — Y" structure
- The aside between the dashes is not dramatic or surprising enough to warrant them
- Often used for simple relative clauses or appositives
Examples:
- ❌ "The agent — which had already failed twice — tried again."
- ❌ "Tessl's CLI — the part most developers interact with first — handles all of this."
Why it's a tell: Paired em-dashes make every aside feel like a dramatic reveal when it's just a subordinate clause. LLMs scatter them everywhere because they pattern-match on "emphasis" without understanding that not everything deserves it.
Instead: Use commas or parentheses.
- ✅ "The agent, which had already failed twice, tried again."
- ✅ "Tessl's CLI (the part most developers interact with first) handles all of this."
Note: A single em-dash for a hard break at the end of a clause is fine: "It worked — barely." It's the matched pair acting as fancy commas that's the problem.
The tell: More than two em-dashes per section, even when used correctly.
Symptoms:
- Three or more em-dashes in a paragraph
- Em-dashes used as default punctuation instead of commas, colons, or periods
Why it's a tell: The published posts use em-dashes, but moderately. One or two per section is fine. Five per paragraph means you're using them as a crutch instead of writing clearer sentences.
Instead: Use commas, colons, semicolons, or periods. The em-dash is a spice, not a staple.
The tell: Announcing what the post is about to do before doing it.
Symptoms:
- "In this post, we'll explore..."
- "Let's take a look at..."
- "What follows is..."
Why it's a tell: The TLDR handles the preview. The reader clicked the title. They know what the post is about. Announcing it again is filler.
Instead: Just start. Open with the hook, the story, the confession. The reader doesn't need a table of contents narrated to them.
The tell: Filler phrases that soften a point without adding information.
Symptoms:
- "It's worth noting that..."
- "Interestingly enough..."
- "To be fair..."
- "It bears mentioning that..."
Why it's a tell: These are throat-clearing. They signal the writer isn't confident enough to just make the point. LLMs insert them as politeness padding.
Instead: Delete the hedge and start with the actual point.
Never. Zero. Not even in the TLDR. Not even ironically.