Voice & tone

Measured from the site's own copy under src/content/. The voice the sitedeclares — tone, person, word choices, phrases it does not use — lives onAspects. This page is what the copy actually does, so the two can be held against each other.

Scoped corpus. Only blog, newsletter, guides and docs were measured — 4 of 17 collections under src/content/. The rest is not site prose. Text hardcoded into src/pages/ templates is always measured, whatever the scope.

What was measured

265 files, 210,642 words of body prose and 38,577 words of display copy across 4351 headings, taglines, captions, labels and alt strings.

Read fromFiles
src/content/**/*.md — prose and frontmatter176
src/pages/**/*.astro — text hardcoded into a page89

The site's voice config is deliberately excluded. It holds the avoid list, so scanning it would make every site fail its own audit on the document that declares it.

Prose and display copy are measured apart, not averaged. Rhythm, register and vocabulary below run on body prose only — a caption is meant to be verbless, and scoring one for sentence rhythm reports a fault where there is a convention. Display copy gets its own section. The banned-phrase audit runs onboth: a phrase in a hero heading ships harder than one in a paragraph, because more people read it.

GroupDocsWordsMean sentenceVariationDiversity
docs91123,79719.51.1380.2
blog4956,666150.77106.2
guides1924,70815.10.76103.5
newsletter175,471103.21.59126.8

Groups are the top-level directories under src/content/. They are shown apart because they are usually written by different people to different rules, and one averaged number hides exactly the difference a style guide exists to settle.

Rhythm

An average sentence length tells you almost nothing. Copy where every sentence runs eighteen words, and copy that swings between four and thirty, can share the same average. What you want to see is the spread, and that is what the chart below shows.

Sentence length across all copy
Sentence lengthSentences
0–4 words968
5–9 words2528
10–14 words2476
15–19 words2031
20–24 words1407
25–29 words925
30–34 words545
35–39 words312
40–44 words174
45–49 words120
50–54 words78
55–59 words42
60–64 words54
65–69 words34
70–74 words14
75–79 words18
80–84 words20
85–89 words14
90–94 words12
95–99 words8
100–104 words2
105–109 words1
110–114 words4
115–119 words2
120–124 words5
125–129 words3
130–134 words2
135–139 words5
140–144 words2
145–149 words2
180–184 words2
190–194 words1
215–219 words1
240–244 words1
260–264 words1
330–334 words1
365–369 words1
435–439 words1
450–454 words1
455–459 words1
535–539 words1
885–889 words1
1230–1234 words1
Median 14 words, quartiles 9 and 22, longest 1231. 30% run under ten words; 12% run over thirty.

Length variation

1.23

Above target target 0.4–0.7

Sentence lengths vary by 21.9 words either side of an average of 17.8. This is the number that decides whether the copy has a pulse.

Under 0.4 the copy is metronomic; over 0.7 it reads restless. Corpus stylistics has no canonical band — this one is set from readable editorial prose.

How this is measured

Counts: How much sentence length differs across the copy.

Computed: Standard deviation of sentence length in words, divided by the mean (the coefficient of variation). Reported instead of the mean because a mean of 18 describes both copy where every sentence is 18 words and copy that runs 4, 31, 7, 30 — and those read nothing alike.

Limits: Scale-free by design, so it can be compared between sites. It says nothing about whether the long sentences are any good.

House style

Alternation

13 words

The average gap between one sentence and the next. Variation tells you the lengths differ. This tells you they take turns, instead of arriving in long blocks of the same length.

How this is measured

Counts: Whether long and short sentences take turns.

Computed: Mean absolute difference between each sentence and the one before it. Variation says the lengths differ; this says they interleave rather than arriving in one long block and then a short one.

House style

Short sentences

30 %

Sentences under ten words. The short ones carry the emphasis; the 12% that run over thirty carry the argument.

How this is measured

Counts: The share under ten words, and the share over thirty.

Computed: Sentences are split on terminal punctuation followed by a capital, re-joining known abbreviations, then counted in words.

Limits: A sentence with an unlisted abbreviation ("approx.", a middle initial) splits in two and counts as two short sentences.

House style

Lexical diversity

89.3

How many words go by before the vocabulary starts to repeat. About 50 is plain, 100 is ordinary, 130 is varied. Higher is not better by default: a site is allowed to call the same thing by the same name every time.

How this is measured

Counts: How many words the copy runs before it starts repeating vocabulary.

Computed: Tokens are walked until the running type-token ratio drops to 0.72, which closes one factor; the count is tokens divided by factors, averaged forwards and backwards. Roughly: 50 is plain, 100 ordinary, 130 varied.

Limits: Not scored below 50 tokens — there is not enough text for the number to mean anything. Higher is not automatically better: a site is allowed to call the same thing the same word every time, and should.

McCarthy & Jarvis

Person & stance

Who is speaking, who is being spoken to, and how much room a sentence leaves for the reader to disagree. Linguists call this the interpersonal layer of grammar. The source is in Method, at the end of the page.

PersonUsesPer 10,000 words
We — the firm532.5
You — the readerdominant5251249.3
They — the client, the brand108951.7
I — one person33015.7

We per you

0

Within target target 2 or fewer

The site says "we" 0 times for every "you".

Above two, the copy is addressed to a mirror. The most reliable single diagnostic on this page.

How this is measured

Counts: First-person-plural pronouns divided by second-person pronouns.

Computed: A ratio of the two counts above. Null rather than infinity when the copy never addresses the reader, because "infinitely self-regarding" is a joke and not a measurement.

Limits: On a case study the client is legitimately the subject, so a high ratio is evidence to read rather than a fault to fix.

Martin & White

Boosters

4.1 per 10k

Within target target 30 or fewer

Words that turn the volume up without adding any evidence — very, iconic, world-class.

Intensifiers assert force without adding evidence, and a reader discounts them because they are free to write. Thirty per 10,000 words is roughly one every three paragraphs.

How this is measured

Counts: Intensifiers and superlatives — very, iconic, world-class, award-winning.

Computed: A count of the booster list per 10,000 words. Appraisal calls this graduation: raising the force of a claim without adding anything a reader can check.

Limits: A fixed list, so it undercounts. It also cannot tell a quoted booster from an asserted one.

Martin & White

Hedges

27.7 per 10k

Words that widen a claim until it cannot be wrong — may, often, typically. A few read as honest. A lot read as evasive. This number is reported, not judged: where the line sits is a house decision.

How this is measured

Counts: Words that widen a claim so it cannot be wrong — arguably, tends, generally.

Computed: A count of the hedge list per 10,000 words. Reported and not targeted: a little hedging reads honest, a lot reads evasive, and where the line falls is a house decision rather than a fact.

Martin & White

Declarative

98 %

205 questions and 271 imperatives in 11822 sentences. A page that never asks a question and never gives an instruction is talking at the reader, not to them.

How this is measured

Counts: Statements, questions and commands.

Computed: Terminal punctuation decides questions and exclamations; a sentence opening with a bare verb from a short list counts as an imperative; everything else is declarative.

Limits: The imperative list is deliberately short and excludes verbs that are also nouns, so "Design without direction is decoration" is not read as a command. It therefore undercounts.

Halliday & Matthiessen

Modality — how much room a claim leaves for disagreement: 777 high (must, will, never), 1312 median (should, can), 182 low (may, might, could), across 11822 sentences. Almost none of either is a stance too — bald assertion.

Boosters in use: really ×27, very ×18, unique ×12, powerful ×7, leading ×6, deeply ×5, completely ×4, absolutely ×3, highly ×2, extremely ×1, incredibly ×1

Register

These are the habits that make writing sound corporate. Each one can be counted, which is why they are here. "Make it less corporate" gives a writer nothing to do. "Cut fourteen of these nouns" does.

Nominalization

146.8 per 10k

Within target target 250 or fewer

Verbs turned into nouns — creation, development, implementation. Each one hides the person who did it.

Deverbal nouns hide the actor: "the naming process was undertaken" against "we named it". Williams, Style, chapter 3.

How this is measured

Counts: Verbs turned into nouns — creation, development, implementation.

Computed: Words ending -tion, -sion, -ment, -ance, -ence or -ism, per 10,000 words, minus a named list of lexicalised exceptions. Each one loses the person who did the thing: "we named it" against "the naming was undertaken".

Limits: The exceptions list is by name, so an unlisted ordinary noun ("regiment", "torrent") would count as corporate prose. Add it to the list rather than living with the false positive.

Williams

Passive voice

11 % of sentences

Within target target 20 or fewer

Found by matching patterns rather than by parsing the grammar, so treat it as an estimate. The passive is the right choice whenever you do not know who acted, or it does not matter.

A share of sentences, not a ban. Passive voice is correct whenever the actor is unknown or beside the point.

How this is measured

Counts: The share of sentences containing a passive construction.

Computed: A form of "be" or "get", optionally an adverb, then a participle — either regular (-ed, -en) or one from a list of irregulars.

Limits: A heuristic, not a parse. It misses a prefixed irregular participle ("was redrawn", because the list holds "drawn"), and counts "is interested" as passive. Read it as an estimate. It is also not a fault to minimise: the passive is correct whenever the actor is unknown or beside the point.

Williams

Relational clauses

43 % of sentences

Sentences built on is, are and has. They say what something is, rather than what it does. A lot of them reads static: a list of things, with nothing happening.

How this is measured

Counts: Sentences built on is, are, has — classifying rather than narrating.

Computed: A sentence counts as relational if it contains any copular or possessive verb. High density reads static: a list of what things are, with nothing happening. It is the grammar of an "about us" page.

Limits: Detected by verb list, so a sentence with both a copula and an action verb counts as relational. The four process types overlap by construction and do not sum to the sentence count.

Halliday & Matthiessen

Sentences with a number

8 %

Below target target 15 or more

973 of 11822. How much of the copy a reader can check, rather than having to take on trust.

The share of sentences carrying a number. Set high on purpose: a case study that never counts anything is a description, not a result.

How this is measured

Counts: The share of sentences a reader could check rather than believe.

Computed: Any sentence containing a digit. Deliberately crude: the question is whether the copy counts anything at all, and a page that never does is a description rather than a result.

Limits: A year counts, and a year is not an outcome. Read the share as a floor on how much evidence is present, never as a ceiling.

House style

Also: 2157 contractions (102.4 per 10k — the informality dial), and 199 sentences opening with a conjunction (2%). The schoolroom rule againstAnd and But in first position is not an English rule; whether this site uses them is a decision, and this is the number that shows whether it made one.

Most frequent: conversation ×229, instruction ×179, notification ×152, orchestration ×115, permission ×111, connection ×104, integration ×95, sequence ×90, decision ×78, isolation ×73

Display copy

Headings, taglines, captions, button labels and alt text — 38,577 words across 4351 strings. More of the site by volume than its prose, and the part a reader is most likely to actually read.

Mean length

8.9 words

Display copy is short by nature, so rhythm is not the question. The questions are whether it repeats itself, and whether it uses an intensifier when it has only a few words to spend.

How this is measured

Counts: How long the average heading, tagline, caption or label runs.

Computed: Words divided by strings, across every readable string in the corpus. Measured apart from prose rather than averaged into it: a caption is a different register from a paragraph, and scoring one for sentence rhythm reports a fault where there is a convention.

House style

Repeated verbatim

15 %

Within target target 15 or fewer

How many strings appear more than once, word for word, somewhere on the site.

A repeated caption is a caption that was not written for its image. Some repetition is honest — the same product shot in four studies — but a high share means the copy is filling a slot rather than saying something.

How this is measured

Counts: The share of strings that appear more than once, identically.

Computed: Strings are lowercased and counted; every string belonging to a group of two or more counts as repeated. A repeated caption is a caption that was not written for its image.

Limits: Exact matches only, so two captions differing by one word both read as unique. Some repetition is honest — the same product shot appearing in four studies — so read a high share as a prompt to look, not as a fault.

House style

Verbless

30 %

Labels rather than statements. Reported, not judged: a caption is allowed to be a noun phrase, and a site that writes captions as full sentences has simply made a different choice.

How this is measured

Counts: The share of strings with no finite verb — labels rather than statements.

Computed: A string counts as verbless if it contains no form of be or have, no modal, and no word ending -ed or -s. Reported and not targeted: a caption is allowed to be a noun phrase, and a site that captions in full sentences is making a different, equally valid choice.

Limits: A regex, not a parse. A caption whose only verb is irregular ("Bottles made in Portland") reads as verbless, and a plural noun ("Bottles") reads as a verb.

House style

Boosters

3.6 per 10k

Within target target 30 or fewer

Intensifiers in display copy, where there is least room to earn one. This is where

Intensifiers assert force without adding evidence, and a reader discounts them because they are free to write. Thirty per 10,000 words is roughly one every three paragraphs.

How this is measured

Counts: Intensifiers and superlatives — very, iconic, world-class, award-winning.

Computed: A count of the booster list per 10,000 words. Appraisal calls this graduation: raising the force of a claim without adding anything a reader can check.

Limits: A fixed list, so it undercounts. It also cannot tell a quoted booster from an asserted one.

Martin & White

Most repeated strings:

  • may 16, 2026 ×10
  • copy ×8
  • the ×8
  • april 11, 2026 ×8
  • get crystl ×8
  • email ×7

Distinctive vocabulary

This is not a list of the most common words. That list begins with the, of, andfor every text ever written. These are the words this copy uses far more often than ordinary English does, measured against a large sample of general English. Brand names are left out: a table led by the client's own name tells you nothing you did not know.

WordUsesDocsTimes commoner than English
agent1763162130×
claude1010130832×
agents1020140136×
gem79490508×
terminal591116137×
code80014032×
quest55764142×
file63011353×
session54411449×
files47010778×
project67211719×
branch4566957×
settings36087100×
command43610841×
directory31279174×
each7691487×
run65313410×
sessions3689758×
own7481426×
every7501506×
prompt25684168×
isolated2887679×
guild24759138×
same7161505×

Read the top of this list as the site's actual subject. If a word belongs there and is missing, the copy is not about what the site thinks it is about. Words appearing in fewer than three documents are excluded, so what survives is habit rather than one page's topic.

Against the declared voice

The site declares a concrete, energetic, plain-spoken, playfully confident voice, written in the second person — you, your. The copy's dominant person is the second person — you, your. The two agree.

Not automatically a fault. A case study is about the client, so third person dominating is expected; what matters is whether the firm appears at all when it should, and whether the reader is ever addressed.

Phrases the site says it does not use

Clear None of the 7 banned phrases appear in the copy.

The rules this sets

Measuring is only half the job. These are the targets the numbers above are judged against, written so a writer can use them without reading a table. They are house style: set them where this site needs them, not where a textbook says.

  1. Vary the sentence length deliberately. Keep variation between 0.4 and 0.7. The cheapest fix for flat copy is to cut one sentence in four down to under ten words.
  2. Address the reader more than the firm. No more than twowes per you. Currently 0.
  3. Earn force with evidence, not intensifiers. Under 30 boosters per 10,000 words. Delete the adjective and put a number in its place.
  4. Keep the actor in the sentence. Under 250 nominalizations per 10,000 words and under 20% passive. We named it, notthe naming was undertaken.
  5. Count something. At least 15% of sentences should carry a number. Currently 8%.
  6. Say the same thing the same way. The word choices on Aspects are settled once so they are not re-argued per page.

Method

Every number above has an entry here, and the page cannot show a number without one. A voice report argues about somebody's writing. An unexplained number is worse than no number at all: it looks like a fact, nobody can check it, and the writer can only disagree by ignoring the whole page.

Where a measure is a heuristic it says so, and says where it is known to be wrong. A part-of-speech tagger would do better on clause types and passives; the kit does not ship one, and an approximate number with its method stated is worth more to a writer than no number at all. The word lists live in src/lib/voice-lexicons.ts, the maths insrc/lib/voice-metrics.ts, and this catalogue insrc/lib/voice-method.ts — all three are meant to be edited.

Every number on this page, and where the method comes from
MeasureWhat it countsHowSource
Length variationHow much sentence length differs across the copy.

Standard deviation of sentence length in words, divided by the mean (the coefficient of variation). Reported instead of the mean because a mean of 18 describes both copy where every sentence is 18 words and copy that runs 4, 31, 7, 30 — and those read nothing alike.

Limits Scale-free by design, so it can be compared between sites. It says nothing about whether the long sentences are any good.

House style
AlternationWhether long and short sentences take turns.

Mean absolute difference between each sentence and the one before it. Variation says the lengths differ; this says they interleave rather than arriving in one long block and then a short one.

House style
Short and long sentencesThe share under ten words, and the share over thirty.

Sentences are split on terminal punctuation followed by a capital, re-joining known abbreviations, then counted in words.

Limits A sentence with an unlisted abbreviation ("approx.", a middle initial) splits in two and counts as two short sentences.

House style
Lexical diversity (MTLD)How many words the copy runs before it starts repeating vocabulary.

Tokens are walked until the running type-token ratio drops to 0.72, which closes one factor; the count is tokens divided by factors, averaged forwards and backwards. Roughly: 50 is plain, 100 ordinary, 130 varied.

Limits Not scored below 50 tokens — there is not enough text for the number to mean anything. Higher is not automatically better: a site is allowed to call the same thing the same word every time, and should.

McCarthy & Jarvis
PersonPronouns, grouped into first plural, first singular, second and third.

A direct count of each group’s pronoun list against the tokenized prose, reported per 10,000 words so documents of different lengths compare.

Limits "We" is counted wherever it appears, including inside a client quotation. A tagger would not help; only a human reading the sentence would.

Halliday & Matthiessen
We per youFirst-person-plural pronouns divided by second-person pronouns.

A ratio of the two counts above. Null rather than infinity when the copy never addresses the reader, because "infinitely self-regarding" is a joke and not a measurement.

Limits On a case study the client is legitimately the subject, so a high ratio is evidence to read rather than a fault to fix.

Martin & White
BoostersIntensifiers and superlatives — very, iconic, world-class, award-winning.

A count of the booster list per 10,000 words. Appraisal calls this graduation: raising the force of a claim without adding anything a reader can check.

Limits A fixed list, so it undercounts. It also cannot tell a quoted booster from an asserted one.

Martin & White
HedgesWords that widen a claim so it cannot be wrong — arguably, tends, generally.

A count of the hedge list per 10,000 words. Reported and not targeted: a little hedging reads honest, a lot reads evasive, and where the line falls is a house decision rather than a fact.

Martin & White
ModalityHow much room a claim leaves for disagreement — must and never against may and might.

Modal verbs counted in three strengths. High closes the question, low holds it open, and copy with almost none of either is making bald assertions, which is a stance too.

Halliday & Matthiessen
MoodStatements, questions and commands.

Terminal punctuation decides questions and exclamations; a sentence opening with a bare verb from a short list counts as an imperative; everything else is declarative.

Limits The imperative list is deliberately short and excludes verbs that are also nouns, so "Design without direction is decoration" is not read as a command. It therefore undercounts.

Halliday & Matthiessen
NominalizationVerbs turned into nouns — creation, development, implementation.

Words ending -tion, -sion, -ment, -ance, -ence or -ism, per 10,000 words, minus a named list of lexicalised exceptions. Each one loses the person who did the thing: "we named it" against "the naming was undertaken".

Limits The exceptions list is by name, so an unlisted ordinary noun ("regiment", "torrent") would count as corporate prose. Add it to the list rather than living with the false positive.

Williams
Passive voiceThe share of sentences containing a passive construction.

A form of "be" or "get", optionally an adverb, then a participle — either regular (-ed, -en) or one from a list of irregulars.

Limits A heuristic, not a parse. It misses a prefixed irregular participle ("was redrawn", because the list holds "drawn"), and counts "is interested" as passive. Read it as an estimate. It is also not a fault to minimise: the passive is correct whenever the actor is unknown or beside the point.

Williams
Relational clausesSentences built on is, are, has — classifying rather than narrating.

A sentence counts as relational if it contains any copular or possessive verb. High density reads static: a list of what things are, with nothing happening. It is the grammar of an "about us" page.

Limits Detected by verb list, so a sentence with both a copula and an action verb counts as relational. The four process types overlap by construction and do not sum to the sentence count.

Halliday & Matthiessen
Sentences with a numberThe share of sentences a reader could check rather than believe.

Any sentence containing a digit. Deliberately crude: the question is whether the copy counts anything at all, and a page that never does is a description rather than a result.

Limits A year counts, and a year is not an outcome. Read the share as a floor on how much evidence is present, never as a ceiling.

House style
ContractionsThe informality dial — don’t, it’s, we’ve.

Contracted verb forms per 10,000 words. Bare ’s is ambiguous, so the hosts that genuinely contract a verb are named and possessives ("Miller’s bottle") are excluded.

House style
Conjunction openersSentences beginning with And, But, So.

First token of each sentence, matched against the coordinating conjunctions. The schoolroom rule against them is not an English rule; the number shows whether the site made a decision or never noticed.

House style
KeynessWords the copy uses far more often than English does.

Log-likelihood G² = 2·O·ln(O/E), where E is the word’s general-English rate times the corpus size. Filtered to words at least four times commoner than English (log-ratio ≥ 2), appearing four times or more, in at least three documents.

Limits Words absent from the reference list are dropped, not scored. They are nearly always brand names, and a table led by the client’s own name has answered its own question. The reference is a general-English blend, so a specialist site will look distinctive simply for being about its subject.

Dunning
The reference corpusWhat "commoner than English" is measured against.

Unigram frequencies for the 17,626 commonest English words, in occurrences per million, from the wordfreq model — subtitles, news, books, web text and Wikipedia blended.

Limits General English, not a genre-matched corpus. Comparing marketing copy against a genre-matched reference would be sharper and needs a corpus the kit does not ship.

wordfreq
Display copy lengthHow long the average heading, tagline, caption or label runs.

Words divided by strings, across every readable string in the corpus. Measured apart from prose rather than averaged into it: a caption is a different register from a paragraph, and scoring one for sentence rhythm reports a fault where there is a convention.

House style
Repeated display copyThe share of strings that appear more than once, identically.

Strings are lowercased and counted; every string belonging to a group of two or more counts as repeated. A repeated caption is a caption that was not written for its image.

Limits Exact matches only, so two captions differing by one word both read as unique. Some repetition is honest — the same product shot appearing in four studies — so read a high share as a prompt to look, not as a fault.

House style
Verbless display copyThe share of strings with no finite verb — labels rather than statements.

A string counts as verbless if it contains no form of be or have, no modal, and no word ending -ed or -s. Reported and not targeted: a caption is allowed to be a noun phrase, and a site that captions in full sentences is making a different, equally valid choice.

Limits A regex, not a parse. A caption whose only verb is irregular ("Bottles made in Portland") reads as verbless, and a plural noun ("Bottles") reads as a verb.

House style
Distinctive AI phrasesPhrases almost nobody writes on purpose — "here’s the kicker", "unlock the power of", "in today’s fast-paced world".

Each of the catalogue’s ban-tier patterns matched case-insensitively across prose and display copy. Counted flat: one hit is a hit, and the table shows what it matched so the reader can judge it rather than take the count on trust.

Limits A hit is not evidence of anything. People write these too, and a handful across a whole site is a handful. The examples are shown for exactly this reason.

AI-tells catalog
Overused ordinary EnglishPhrases that are normal English but 22x-182x commoner in machine-written text.

A density budget, not a ban: at most one hit per 400 words. Reported as words-per-hit against that budget. Position matters too — the catalogue counts a hit in a headline, an H1 or a CTA as over budget regardless of document length, so display-copy hits are counted separately.

Limits Chasing these to zero is the wrong outcome. Every one is a sentence a human writes sometimes, and a writer avoiding them all produces stilted prose, which is its own tell. Over budget means look, not delete.

AI-tells catalog
Sentence shapesConstructions rather than phrases: "not just X, it’s Y", rule-of-three cadence, stacked hedging, em-dash density, conjunctive-adverb openers, empty lead-ins.

Each shape matched by its own pattern over the prose, reported per 10,000 words against a budget. Shapes are measured because they survive paraphrase: a writer told to stop saying "not just X, it’s Y" writes "this isn’t merely X — it is Y", which a phrase list misses and the shape catches.

Limits The rule-of-three pattern is narrowed to three lowercase single words closing a sentence, because matching every "X, Y and Z" caught ordinary lists of services. It undercounts on purpose — for a number that gets read as an accusation, that is the right direction to be wrong in.

AI-tells catalog
Tells in display copyHits from either tier that landed in a heading, tagline, caption or button label rather than in a paragraph.

Every match is attributed to the field it came from as it is found, and display-copy matches are totalled across both tiers. Position is part of the measure rather than a refinement of it: the catalogue counts a hit in a headline, an H1 or a CTA as over budget regardless of how long the document is.

Limits It counts where a phrase sits, not how prominent that position actually is on the rendered page. A caption on the twelfth image and an H1 both count as display copy.

AI-tells catalog
Banned phrasesThe site’s own avoid list, run over the site’s own copy.

Each phrase matched case-insensitively on whole words, across prose and display copy together. A trailing YAML comment is stripped, and an entry written as a pattern ("it’s not just X, it’s Y") is skipped rather than matched literally.

Limits The site’s voice config is excluded from the corpus, or the avoid list would match itself once per entry. Only literal phrases are checked: a banned idea rephrased passes.

House style

References

House style

This kit. Not a finding from the literature.

A band somebody chose. Every target on the page carries the reason it sits where it does, and a site doing a different job should move it rather than fail against it.

McCarthy & Jarvis

Philip M. McCarthy and Scott Jarvis, "MTLD, vocd-D, and HD-D: A validation study of sophisticated approaches to lexical diversity assessment", Behavior Research Methods 42(2), 2010, 381–392.

Why MTLD is used here instead of type-token ratio, which falls as a text gets longer and so compares texts by their length.

Halliday & Matthiessen

M. A. K. Halliday and Christian Matthiessen, An Introduction to Functional Grammar, 4th ed., Routledge, 2014.

Systemic functional linguistics. The source of the ideational (process types) and interpersonal (person, mood, modality) metafunctions.

Martin & White

J. R. Martin and P. R. R. White, The Language of Evaluation: Appraisal in English, Palgrave Macmillan, 2005.

Appraisal theory. Graduation covers boosters and hedges; engagement covers how much room a claim leaves for disagreement.

Williams

Joseph M. Williams, Style: Lessons in Clarity and Grace, 12th ed., Pearson, 2016.

The standard treatment of nominalization and of when the passive is the right choice.

Dunning

Ted Dunning, "Accurate Methods for the Statistics of Surprise and Coincidence", Computational Linguistics 19(1), 1993, 61–74.

Log-likelihood (G²) for comparing a corpus against a reference. The standard keyness statistic in corpus linguistics.

wordfreq

Robyn Speer, wordfreq: a library for looking up the frequencies of words, v3, 2022. doi:10.5281/zenodo.7199437

The general-English reference frequencies keyness is scored against — a blend of subtitles, news, books, web text and Wikipedia. See src/data/README.md.

AI-tells catalog

The scrub-ai-tells catalog, ported to src/lib/ai-tells-catalog.ts. Its corpus-frequency tier cites a frequency study comparing AI-written and human-written corpora, in which each listed phrase is 22x-182x commoner in machine text.

A curated pattern bank, grown by hand as somebody notices a new tell. Not a trained classifier and not a detector: it cannot tell you who wrote something, and every pattern in it appears in prose written by people.