# Write Like Human: pattern catalog

version: 1.2.0 · canonical: https://writelikehuman.app/patterns

Every tell the Human Writing Protocol names, one entry each, with a bad example, a better one and the fix. 
"zero allowed" means none in finished writing. "max N per M words" is a density cap. "watch" is a signal worth a second look, not an error on its own. The full protocol is at https://writelikehuman.app/rules.md.

## Leakage

Chatbot residue that no human ever types.

### Citation and tool artifacts

id: `citation-artifacts` · protocol § 1 · any language · zero allowed

Internal tokens from ChatGPT, Grok and other tools that survive a copy-paste. Nothing else produces them.

- Bad: Revenue grew in Q3 :contentReference[oaicite:2]{index=2}.
- Better: Revenue grew in Q3 (company filing, 14 October).
- Fix: Delete the token. If a real source sat behind it, cite that source by name.

### Chatbot tracking parameters

id: `tracking-params` · protocol § 1 · any language · zero allowed

Links copied out of a chatbot answer carry the chatbot in the URL.

- Bad: https://example.com/report?utm_source=chatgpt.com
- Better: https://example.com/report
- Fix: Strip the utm_source parameter.

### Knowledge-cutoff disclaimer

id: `cutoff-disclaimer` · protocol § 1 · en · zero allowed

Only a language model talks about its training data.

- Bad: As of my last update, the tool supports six languages.
- Better: The tool supported six languages in March.
- Fix: Delete the whole sentence. If the information may be stale, say what date it comes from.

### Refusal and assistant residue

id: `refusal-residue` · protocol § 1 · en · zero allowed

Assistant voice leaking into text that a person is supposed to have written.

- Bad: As an AI language model, I cannot give legal advice, but here are some points.
- Better: This is not legal advice. Three points to check with your lawyer:
- Fix: Delete the whole sentence.

### Unfilled template slots

id: `template-slots` · protocol § 1 · any language · zero allowed

A bracketed blank means the text was generated and never read.

- Bad: Dear [Client Name], thank you for choosing [Company].
- Better: Dear Ms Ortega, thank you for choosing Harbor Print.
- Fix: Stop and ask the user for the missing value. Never guess it.

### Unasked closing offer

id: `closing-offer` · protocol § 1 · en · zero allowed

The chatbot sign-off. A person who wrote the text does not offer to write more of it.

- Bad: Let me know if you would like me to expand on any of these points!
- Better: (nothing; the text ends on its last point)
- Fix: Delete it. End on the last real point.

### Meta-narration

id: `meta-narration` · protocol § 1 · en · zero allowed

Describing the text instead of writing it. It reads like the wrapper around a chatbot answer.

- Bad: Certainly! Here's a rewritten version that is more concise:
- Better: (start with the text itself)
- Fix: Delete it. The reader can see the structure.

### Markdown in a plain-text channel

id: `markdown-in-plain-text` · protocol § 1 · any language · watch

Asterisks and hashes show up raw in email, LinkedIn and SMS. Only a model pastes them there.

- Bad: Hi Sam, **quick update:** ### Next steps
- Better: Hi Sam, quick update on next steps.
- Fix: Use the channel's own formatting, or none.

## Rhetoric

Sentence shapes models reach for by default.

### Negative parallelism

id: `negative-parallelism` · protocol § 2.1 · en · zero allowed

The loudest short-form tell of 2026. It invents a position nobody held so it can knock it down.

- Bad: It's not just a tool, it's a new way of working.
- Better: The tool cut our review time from two days to one.
- Fix: State the claim directly, or write two plain sentences.

### Rule of three on autopilot

id: `autopilot-triplet` · protocol § 2.2 · en · max 1 per 200 words

Three balanced items is what a model produces when it has one real example and fills to three.

- Bad: Our platform is efficient, scalable, and reliable.
- Better: The platform handled 3,000 orders on Black Friday without a restart.
- Fix: Keep the items you can defend. Two or four is fine. Uneven lists read as human.

### Empty opener

id: `empty-opener` · protocol § 2.3 · en · zero allowed

Throat-clearing before the point. An editor deletes it first.

- Bad: In today's fast-paced digital world, businesses need to move quickly.
- Better: Our competitors ship a release every week. We ship one a quarter.
- Fix: Open on the actual claim.

### Fake authority

id: `fake-authority` · protocol § 2.4 · en · zero allowed

An appeal to research that has no name, date or link behind it.

- Bad: Studies have shown that remote teams are more productive.
- Better: In a 2015 Stanford experiment with a Chinese travel agency, staff working from home were 13% more productive.
- Fix: Name the study, the number and the year, or delete the claim. Never attach a citation you cannot verify.

### Pseudo-wisdom filler

id: `pseudo-wisdom` · protocol § 2.5 · en · zero allowed

A sentence shaped like insight that carries no information. Delete it and nothing is lost.

- Bad: At the end of the day, the key is finding the right balance.
- Better: We cap meetings at two afternoons a week.
- Fix: Delete it. If the paragraph now feels thin, it was thin before.

### Transition stacking

id: `transition-stacking` · protocol § 2.6 · en · density limit

Paragraphs that open with Furthermore, Moreover, Additionally read like an outline being filled in.

- Bad: Moreover, the new process reduces errors.
- Better: The new process also caught the invoice bug we missed in May.
- Fix: Delete the connector. Let the order of the paragraphs carry the logic. Zero in anything under 400 words.

### Outline-formula closer

id: `outline-closer` · protocol § 2.7 · en · zero allowed

The five-paragraph-essay ending: challenges, then the future, then a restatement.

- Bad: As the landscape continues to evolve, one thing is clear: adaptability will be key.
- Better: We will know by March whether the pilot pays for itself.
- Fix: End on the last real thing you have to say.

### Superficial -ing tail

id: `ing-tail` · protocol § 2.8 · en · zero allowed

A participle bolted onto the end of a sentence to claim significance it has not earned.

- Bad: The team shipped the feature early, highlighting the importance of collaboration.
- Better: The team shipped the feature a week early.
- Fix: Cut the tail, or make it its own sentence with a real subject.

### Sycophantic tone

id: `sycophancy` · protocol § 2.9 · en · zero allowed

Praise for the question instead of an answer to it.

- Bad: Great question! You're absolutely right to ask about pricing.
- Better: Pricing starts at $12 a seat.
- Fix: Delete it. Start with the answer.

### Copula avoidance

id: `copula-avoidance` · protocol § 2.10 · en · max 1 per 300 words

Models avoid plain "is" and "has" and reach for "serves as" and "boasts".

- Bad: The library serves as a hub for the community and boasts a large archive.
- Better: The library is where the town meets. It has 40,000 photographs of the harbour.
- Fix: Use "is" or "has" unless the fancier verb adds meaning.

### Significance inflation

id: `significance-inflation` · protocol § 2.11 · en · zero allowed

Everything is pivotal, vital and lasting. The reader stops believing any of it.

- Bad: The launch marks a pivotal moment and leaves an indelible mark on the industry.
- Better: The launch doubled our weekly sign-ups.
- Fix: Say what happened and let the fact carry its own weight.

### Promotional puffery

id: `promotional-puffery` · protocol § 2.11 · en · max 1 per 300 words

Brochure adjectives. They describe how the writer wants you to feel, not the thing.

- Bad: Nestled in the heart of the city, this breathtaking venue offers world-class service.
- Better: The venue is two streets from the station and seats 120.
- Fix: Replace the adjective with the detail that made you reach for it.

### Elegant variation

id: `elegant-variation` · protocol § 2.12 · any language · watch

Rotating synonyms so a noun never repeats. The reader wonders whether "the firm" and "the organisation" are different things.

- Bad: Acme raised prices. The firm said the organisation needed to cover costs, and the Ohio-based company expects…
- Better: Acme raised prices. Acme said it needed to cover costs and expects…
- Fix: Pick one name and repeat it, or use a pronoun.
- Detection: needs a reader; the checker cannot count this one.

### False range

id: `false-range` · protocol § 2.13 · en · zero allowed

"From X to Y" where X and Y are not two ends of any scale. It sounds broad and says little.

- Bad: We help everyone from startups to governments with everything from pricing to culture.
- Better: We help software companies with 10 to 200 staff set their prices.
- Fix: Name the things you mean, or drop the phrase.

### Staged reveal

id: `staged-reveal` · protocol § 2.14 · en · zero allowed

A drumroll before the point. Social-media copy taught models to set up every fact like a punchline.

- Bad: The result? A 40% drop in errors. Here's the kicker: it took one afternoon.
- Better: Errors dropped 40%, and the change took one afternoon.
- Fix: State the result in a normal sentence.

### Fragment drumroll

id: `stacked-fragments` · protocol § 2.14 · any language · zero allowed

Three clipped fragments in a row ("No fluff. No filler. Just results.") is a template, not a voice.

- Bad: No fluff. No filler. Just results.
- Better: The report is two pages and every number in it has a source.
- Fix: Write one sentence that says the thing.

### Anaphora ×3

id: `anaphora` · protocol § 2.14 · any language · zero allowed

Three sentences in a row that open with the same word is a speech template, not a voice.

- Bad: We want to grow. We want to hire. We want to change the market.
- Better: This year we want to hire two people for customer support.
- Fix: Merge two of them, or start one differently.

### Audience split

id: `whether-youre` · protocol § 2.14 · en · zero allowed

"Whether you're a X or a Y" tries to address everyone and so addresses no one.

- Bad: Whether you're a seasoned pro or just starting out, this guide has you covered.
- Better: This guide is for people setting up their first online shop.
- Fix: Write to the one reader this text is for.

### Hedge stacking

id: `hedge-stacking` · protocol § 7 · en · watch

Two hedges on one claim. Honest uncertainty names its limit; stacked hedges just blur it.

- Bad: This could potentially help to possibly reduce costs.
- Better: This should cut costs if the supplier holds its price.
- Fix: Keep one hedge and say what it depends on.

## Lexicon

Words whose frequency jumped after 2022.

### Post-2022 style words

id: `style-words` · protocol § 3.1 · en · max 3 per 500 words

Words like delve, underscore and showcase spiked in published text after ChatGPT launched. Two in one sentence is a fingerprint.

- Bad: This report delves into the intricate landscape of fintech, underscoring its multifaceted nature.
- Better: This report looks at how 40 fintech startups priced their first product.
- Fix: delve → look at · underscore → show · tapestry → describe the thing · landscape → field · foster → build · harness → use · navigate → handle.

### Corporate verb inflation

id: `verb-inflation` · protocol § 3.2 · en · max 1 per 300 words

Latinate verbs standing in for plain ones.

- Bad: We leverage AI to streamline and facilitate onboarding.
- Better: We use AI to fill in the onboarding forms.
- Fix: utilize/leverage → use · facilitate → help · streamline → simplify · commence → start · endeavour → try.

### Buzz phrases

id: `buzz-phrases` · protocol § 3.3 · en · zero allowed

Phrases so worn they carry no meaning.

- Bad: This is a real game-changer that will move the needle.
- Better: This halves the time it takes to close a month.
- Fix: Say what changed, what the easy part is, what moved.

### Empty intensifiers

id: `empty-intensifiers` · protocol § 3.4 · en · max 1 per 200 words

Very, truly, incredibly: volume without information.

- Bad: Sales grew significantly and the team was incredibly happy.
- Better: Sales grew 34%.
- Fix: Delete it, or replace it with a number.

## Punctuation

Marks that give away the tool or the training data.

### Em dash density

id: `em-dash-density` · protocol § 4.1 · en · density limit

Humans use dashes too. The tell is density: well above 10 per 1,000 words, several per paragraph. Banning dashes outright is now its own tell.

- Bad: The plan — which we tested — worked — mostly.
- Better: The plan worked, mostly. We tested it for two weeks.
- Fix: Keep under 15 per 1,000 words and one per paragraph in short pieces. Swap the rest for commas, colons, parentheses or full stops.

### Mixed dash conventions

id: `dash-convention-mix` · protocol § 4.1 · en · watch

Spaced dashes ( — ) and tight dashes (word—word) in the same text suggest pasted fragments.

- Bad: The plan — tested twice—worked.
- Better: The plan, tested twice, worked.
- Fix: Pick one convention and hold it.

### Double hyphen as a dash

id: `double-hyphen` · protocol § 4.2 · any language · zero allowed

A plain-text substitute for a dash that usually marks copied output.

- Bad: We shipped it -- finally.
- Better: We shipped it. Finally.
- Fix: Use a full stop or a comma.

### Curly quotes in plain text

id: `curly-quotes-plain-text` · protocol § 4.2 · en · watch

Typographic quotes in a code comment, SMS or form field are a copy-paste fingerprint.

- Bad: Reply “yes” to confirm.
- Better: Reply "yes" to confirm.
- Fix: Use straight quotes when the destination is plain text. Keep curly quotes in typeset documents.

### Emoji as bullets or dividers

id: `emoji-bullets` · protocol § 4.3 · any language · zero allowed

The rocket, lightbulb, sparkles and check-mark set is the signature of generated social posts.

- Bad: 🚀 Faster builds / 💡 Smarter defaults / ✅ Fewer bugs
- Better: Builds are faster, the defaults changed, and we closed 30 bugs.
- Fix: At most one emoji per message, and only when it carries tone a word cannot.

## Formatting

Structure used because it is safe, not because the content needs it.

### Bold lead-ins in lists

id: `bold-lead-ins` · protocol § 4.4 · any language · zero allowed

"**Speed:** the system is faster" on every bullet is the house style of chatbot answers.

- Bad: - **Speed:** The system is faster. / - **Cost:** It is cheaper.
- Better: The system is faster and costs less to run.
- Fix: Write the bullet as a sentence, or turn the list into prose. Fine in reference documentation.

### Title-case headings

id: `title-case-headings` · protocol § 4.4 · any language · zero allowed

Every Word Capitalised in a body-copy heading is a default, not a choice.

- Bad: ## How To Improve Your Team Workflow
- Better: ## How to improve your team workflow
- Fix: Sentence case: capital on the first word and on names only.

### Bold overuse

id: `bold-overuse` · protocol § 4.4 · any language · density limit

When everything is bold, nothing is.

- Bad: The **new plan** gives **every team** a **clear budget** and **faster approvals**.
- Better: The new plan gives every team its own budget. **Approvals now take one day.**
- Fix: Keep bold for the one phrase a skimming reader must not miss.

### A list where prose would do

id: `list-for-prose` · protocol § 4.4 · any language · watch

Models reach for bullets because bullets are safe. Three sentences that follow from each other are not a list.

- Bad: - The deadline moved / - So we cut scope / - So we shipped on time
- Better: The deadline moved, so we cut scope and still shipped on time.
- Fix: Write the sentences.
- Detection: needs a reader; the checker cannot count this one.

### Horizontal rules everywhere

id: `rule-between-sections` · protocol § 4.4 · any language · watch

A divider between every short section is decoration.

- Bad: Intro / --- / Point one / --- / Point two
- Better: Intro, then two sections under their own headings.
- Fix: Let headings and white space separate sections.
- Detection: needs a reader; the checker cannot count this one.

## Substance

Text that reads fine and says nothing.

### Vague quantifiers

id: `vague-quantifiers` · protocol § 6 · en · watch

"Many", "numerous", "a wide range of" stand where a number should be.

- Bad: Numerous customers use a wide range of our features.
- Better: 212 customers use at least three of our features.
- Fix: Use the number. If you do not have it, ask for it.

### No specifics

id: `no-specifics` · protocol § 6 · any language · density limit

The most reliable signal. Strip every tell from an empty paragraph and it is still empty.

- Bad: Nutrition plays a crucial role in overall wellness.
- Better: Swapping one soda a day for water cut my sugar intake by about 35 grams.
- Fix: At least one number, name or date per 100 words. If the source has none, ask the user for one. Never invent it.

### Fails the deletion test

id: `deletion-test` · protocol § 6 · any language · density limit

A sentence you can delete without losing information was filler.

- Bad: Communication is essential in any team. It helps everyone stay aligned.
- Better: We moved the stand-up to Slack and got back 40 minutes a day.
- Fix: Delete it. Fewer than a third of sentences should survive deletion without loss.
- Detection: needs a reader; the checker cannot count this one.

### Fabricated specifics

id: `fabricated-specifics` · protocol § 10 · any language · zero allowed

The worst outcome of humanising. A made-up statistic is real harm; a generic sentence is only a style problem.

- Bad: (an invented "73% of managers" to satisfy the specificity rule)
- Better: "How many clients did you onboard last quarter? I will use your number."
- Fix: Ask the user for the number. Use [brackets] only while drafting, and never ship them.
- Detection: needs a reader; the checker cannot count this one.

## Overcorrection

The tells that come from scrubbing too hard.

### Over-scrubbing

id: `over-scrubbing` · protocol § 7 · any language · watch

Choppy fragments, forced lowercase and no subordinate clauses: the style that replaced the em dash as a tell.

- Bad: we tried it. it worked. kind of. not really.
- Better: We tried it for a month, and it worked about half the time.
- Fix: Keep long sentences when the idea is long. Merge two short sentences into one.

### Deliberate flaws

id: `deliberate-flaws` · protocol § 7 · any language · zero allowed

Planted typos, fake "I think maybe" hedges and padded personal detail are now tells of their own.

- Bad: i think maybe this could work lol, teh numbers look ok
- Better: This could work. The numbers hold if churn stays under 3%.
- Fix: Write correctly. Keep the author's real quirks; do not add new ones.
- Detection: needs a reader; the checker cannot count this one.

### Scrubbing the author's voice

id: `voice-scrubbing` · protocol § 10 · any language · zero allowed

An author's lowercase starts or double-dot pauses are the fingerprint you are protecting.

- Bad: (normalising a writer who always starts emails with "hey..")
- Better: (leaving "hey.." exactly as they write it)
- Fix: Keep the quirks from the source text, including ones that look like errors.
- Detection: needs a reader; the checker cannot count this one.

### Synonym swapping without restructuring

id: `synonym-swapping` · protocol § 10 · any language · watch

Swapping "leverage" for "use" inside the same balanced 20-word sentence changes nothing measurable.

- Bad: We use AI to simplify and help onboarding. (same shape as before)
- Better: AI now fills in the onboarding forms. It took a week to set up.
- Fix: Fix the structure first, the vocabulary second.
- Detection: needs a reader; the checker cannot count this one.
