# 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.

### 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.

### 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.

### 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.

### 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.

## Punctuation

Marks that give away the tool or the training data.

### 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.

### 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.

### 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.

## Polski

Wzorce typowe dla polskiego tekstu z AI.

### Puste otwarcia

id: `pl-openers` · protocol § 11.1 · pl · zero allowed

Rozgrzewka przed tezą. Redaktor kasuje ją jako pierwszą.

- Bad: W dzisiejszym dynamicznie zmieniającym się świecie firmy muszą działać szybciej.
- Better: Konkurencja wypuszcza nową wersję co tydzień, my raz na kwartał.
- Fix: Zacznij od tego, co masz do powiedzenia.

### Fałszywa autentyczność

id: `pl-fake-authenticity` · protocol § 11.2 · pl · watch

Anegdota bez żadnego konkretu. Przechodzi tylko wtedy, gdy w następnym zdaniu pada rok, branża, liczba albo nazwa.

- Bad: Ostatnio rozmawiałem z klientem o ważnych sprawach.
- Better: Rozmawiałem z trenerką, która prowadzi szkolenia HR od 2018 roku.
- Fix: Dodaj konkret albo skasuj zdanie.

### Wypełniacze

id: `pl-fillers` · protocol § 11.3 · pl · zero allowed

Zwroty, które zapowiadają treść zamiast ją podać.

- Bad: Warto zauważyć, że kluczowym aspektem jest komunikacja.
- Better: Zespół odpisuje klientom w ciągu dwóch godzin.
- Fix: Skasuj w całości. Zdanie zwykle działa bez nich.

### Szkolne zakończenia

id: `pl-closers` · protocol § 11.4 · pl · zero allowed

Zakończenie z wypracowania: podsumowanie tego, co czytelnik właśnie przeczytał.

- Bad: Podsumowując, mam nadzieję, że ten artykuł okazał się pomocny.
- Better: Pilotaż kończy się w marcu. Wtedy zobaczymy, czy się zwraca.
- Fix: Kończ na ostatniej rzeczy, którą naprawdę masz do powiedzenia.

### To nie X, to Y

id: `pl-negative-parallelism` · protocol § 11.5 · pl · zero allowed

Najgłośniejsza konstrukcja z angielskiego szablonu, przeniesiona 1:1 na polski.

- Bad: To nie tylko narzędzie — to nowy sposób pracy.
- Better: Narzędzie skróciło nam przegląd umów z dwóch dni do jednego.
- Fix: Powiedz wprost, o co chodzi, albo napisz dwa zwykłe zdania.

### Trzy urwane zdania

id: `pl-stacked-fragments` · protocol § 11.5 · pl · zero allowed

„Bez ściemy. Bez bullshitu. Tylko konkret." to szablon, nie styl.

- Bad: Bez ściemy. Bez lania wody. Tylko konkret.
- Better: Raport ma dwie strony i każda liczba ma źródło.
- Fix: Napisz jedno zdanie, które mówi, o co chodzi.

### Przymiotniki bez pokrycia

id: `pl-empty-adjectives` · protocol § 11.6 · pl · max 1 per 150 words

Najsilniejszy polski sygnał. Trzy lub cztery z tej listy w jednym akapicie to praktycznie pewność, że pisała AI.

- Bad: Oferujemy kompleksowe, innowacyjne i profesjonalne rozwiązania.
- Better: Jako pierwsi w Polsce łączymy kurs Excela z audytem firmowych arkuszy.
- Fix: Zostaw jeden na 150 słów i tylko z liczbą albo dowodem obok.

### Kalki z angielskiego

id: `pl-calques` · protocol § 11.7 · pl · zero allowed

Angielskie wyrażenia przetłumaczone słowo w słowo.

- Bad: Dedykowane rozwiązanie zaadresuje problem i dostarczy wartość.
- Better: Program dla księgowych z biur rachunkowych skraca zamknięcie miesiąca o dwa dni.
- Fix: dedykowany → dla, przeznaczony dla · zaadresować problem → zająć się · dostarczać wartość → nazwij, co konkretnie.

### Czasowniki napuszone

id: `pl-inflated-verbs` · protocol § 11.8 · pl · max 1 per 150 words

Urzędowe czasowniki w miejscu zwykłych.

- Bad: Posiadamy zespół, który realizuje projekty poprzez dedykowane narzędzia.
- Better: Mamy pięć osób, które robią projekty w Figmie.
- Fix: posiadać → mieć · realizować → robić · dokonać zakupu → kupić · poprzez → przez · w celu → żeby.

### Ogony imiesłowowe

id: `pl-participle-tails` · protocol § 11.9 · pl · zero allowed

Dopisek na końcu zdania, który ma nadać mu wagę.

- Bad: Wdrożyliśmy nowy proces, co przekłada się na lepszą jakość.
- Better: Wdrożyliśmy nowy proces. Reklamacji jest o połowę mniej.
- Fix: Utnij albo zrób z tego osobne zdanie z prawdziwym podmiotem.

### Coachingowy bełkot

id: `pl-coaching` · protocol § 11.10 · pl · zero allowed

Język z okładek poradników.

- Bad: Uwolnij swój wewnętrzny potencjał i wyrusz w podróż transformacji.
- Better: Po sześciu tygodniach będziesz prowadzić spotkanie zespołu bez notatek.
- Fix: Skasuj. Napisz, co konkretnie się zmieni.

### Angielska pauza w polskim tekście

id: `pl-em-dash` · protocol § 11.11 · pl · zero allowed

Długa pauza bez spacji (słowo—słowo) to import z angielskiego. Po polsku myślnik ma spacje z obu stron, standardem jest półpauza.

- Bad: Wynik—jak się okazało—był lepszy.
- Better: Wynik – jak się okazało – był lepszy.
- Fix: słowo – słowo (półpauza ze spacjami). Poniżej 10 na 1000 słów, najwyżej jedna na akapit.

### Angielski cudzysłów

id: `pl-quotes` · protocol § 11.11 · pl · zero allowed

Polski cudzysłów to „tekst”. Angielski "tekst" albo “tekst” w polskim zdaniu to odcisk kopiuj-wklej.

- Bad: Nazwaliśmy to "szybką ścieżką".
- Better: Nazwaliśmy to „szybką ścieżką”.
- Fix: Zamień na „…”. Cytat w cytacie: «…».

### Trzy kropki zamiast wielokropka

id: `pl-ellipsis` · protocol § 11.11 · pl · watch

Wielokropek to jeden znak.

- Bad: I wtedy...
- Better: I wtedy…
- Fix: Zamień ... na …

### Przecinek po okoliczniku

id: `pl-comma-after-adverbial` · protocol § 11.7 · pl · zero allowed

„Dodatkowo, warto…" to angielska interpunkcja. Po polsku bez przecinka.

- Bad: Ponadto, system wysyła przypomnienia.
- Better: System wysyła też przypomnienia.
- Fix: Usuń przecinek albo cały łącznik.

### Nieodmienione nazwy

id: `pl-declension` · protocol § 11.12 · pl · zero allowed

Modele uczone na angielskim zostawiają nazwy w mianowniku: „podczas zamach na Donald Trump".

- Bad: Po rozmowie z Anna Kowalska podpisaliśmy umowę z firma Orlen.
- Better: Po rozmowie z Anną Kowalską podpisaliśmy umowę z Orlenem.
- Fix: Sprawdź przypadek każdej nazwy własnej, liczebniki („dwóch klientów") i rekcję („używać czegoś").
- Detection: needs a reader; the checker cannot count this one.

### Mieszana forma adresu

id: `pl-address-mixing` · protocol § 11.13 · pl · zero allowed

Przeskok z „Sprawdź" na „Zachęcamy Państwa" w sąsiednich akapitach.

- Bad: Sprawdź naszą ofertę. Zachęcamy Państwa do kontaktu.
- Better: Sprawdź naszą ofertę i napisz do nas.
- Fix: Wybierz jedną formę: ty, Państwo albo bezosobową, i trzymaj ją do końca.

### Anafora ×3

id: `pl-anaphora` · protocol § 11.5 · any language · zero allowed

Trzy zdania pod rząd zaczynające się tak samo to retoryczny szablon.

- Bad: Chcemy rosnąć. Chcemy zatrudniać. Chcemy zmieniać rynek.
- Better: W tym roku chcemy zatrudnić dwie osoby do obsługi klienta.
- Fix: Połącz dwa z nich albo zacznij inaczej.

### Wielkie Litery W Nagłówkach

id: `pl-title-case` · protocol § 11.7 · pl · zero allowed

Po polsku wielka litera tylko w pierwszym słowie i nazwach własnych.

- Bad: ## Jak Rozpoznać Tekst Pisany Przez AI
- Better: ## Jak rozpoznać tekst pisany przez AI
- Fix: „Jak rozpoznać tekst AI", nie „Jak Rozpoznać Tekst AI".
