| 0.00% | Adverbs in dialogue tags | Target: ≤10% dialogue tags with adverbs | | totalTags | 10 | | adverbTagCount | 2 | | adverbTags | | 0 | "he said again [again]" | | 1 | "Her voice sounded very [very]" |
| | dialogueSentences | 17 | | tagDensity | 0.588 | | leniency | 1 | | rawRatio | 0.2 | | effectiveRatio | 0.2 | |
| 90.43% | AI-ism adverb frequency | Target: <2% AI-ism adverbs (58 tracked) | | wordCount | 1567 | | totalAiIsmAdverbs | 3 | | found | | | highlights | | |
| 80.00% | AI-ism character names | Target: 0 AI-default names (17 tracked, −20% each) | | codexExemptions | (empty) | | found | | |
| 100.00% | AI-ism location names | Target: 0 AI-default location names (33 tracked, −20% each) | | codexExemptions | (empty) | | found | (empty) | |
| 90.43% | AI-ism word frequency | Target: <2% AI-ism words (290 tracked) | | wordCount | 1567 | | totalAiIsms | 3 | | found | | | highlights | | 0 | "pulse" | | 1 | "mosaic" | | 2 | "flicker" |
| |
| 100.00% | Cliché density | Target: ≤1 cliche(s) per 800-word window | | totalCliches | 0 | | maxInWindow | 0 | | found | (empty) | | highlights | (empty) | |
| 100.00% | Emotion telling (show vs. tell) | Target: ≤3% sentences with emotion telling | | emotionTells | 0 | | narrationSentences | 95 | | matches | (empty) | |
| 100.00% | Filter word density | Target: ≤3% sentences with filter/hedge words | | filterCount | 1 | | hedgeCount | 0 | | narrationSentences | 95 | | filterMatches | | | hedgeMatches | (empty) | |
| 100.00% | Gibberish response detection | Target: ≤1% gibberish-like sentences (hard fail if a sentence exceeds 800 words) | | analyzedSentences | 101 | | gibberishSentences | 0 | | adjustedGibberishSentences | 0 | | longSentenceCount | 0 | | runOnParagraphCount | 0 | | giantParagraphCount | 0 | | wordSaladCount | 0 | | repetitionLoopCount | 0 | | controlTokenCount | 0 | | repeatedSegmentCount | 0 | | maxSentenceWordsSeen | 65 | | ratio | 0 | | matches | (empty) | |
| 100.00% | Markdown formatting overuse | Target: ≤5% words in markdown formatting | | markdownSpans | 10 | | markdownWords | 38 | | totalWords | 1578 | | ratio | 0.024 | | matches | | 0 | "administration of unauthorised substances to unidentified patients" | | 1 | "Unidentified patients." | | 2 | "market" | | 3 | "2 min" | | 4 | "He's on a train, he's gone, I've lost him." | | 5 | "NO ENTRY — AUTHORISED PERSONNEL" | | 6 | "edited" | | 7 | "try" | | 8 | "Go back up the stairs" | | 9 | "but what actually happened, Harlow?" |
| |
| 100.00% | Missing dialogue indicators (quotation marks) | Target: ≤10% speech attributions without quotation marks | | totalAttributions | 16 | | unquotedAttributions | 0 | | matches | (empty) | |
| 100.00% | Name drop frequency | Target: ≤1.0 per-name mentions per 100 words | | totalMentions | 47 | | wordCount | 1469 | | uniqueNames | 26 | | maxNameDensity | 0.75 | | worstName | "Quinn" | | maxWindowNameDensity | 2 | | worstWindowName | "Quinn" | | discoveredNames | | Soho | 1 | | Bateman | 1 | | Street | 2 | | Raven | 2 | | Nest | 2 | | Quinn | 11 | | Herrera | 5 | | Seville-born | 1 | | Four | 2 | | Škoda | 1 | | Frith | 1 | | Portuguese | 1 | | Control | 1 | | Avenue | 1 | | Prius | 1 | | Cambridge | 1 | | Circus | 1 | | Tube | 1 | | Saint | 1 | | Christopher | 1 | | Camden | 1 | | Morris | 2 | | Circle | 1 | | Pret | 1 | | Christmas | 1 | | Three | 3 |
| | persons | | 0 | "Raven" | | 1 | "Nest" | | 2 | "Quinn" | | 3 | "Herrera" | | 4 | "Four" | | 5 | "Škoda" | | 6 | "Control" | | 7 | "Saint" | | 8 | "Christopher" | | 9 | "Morris" |
| | places | | 0 | "Soho" | | 1 | "Bateman" | | 2 | "Street" | | 3 | "Seville-born" | | 4 | "Frith" | | 5 | "Portuguese" | | 6 | "Avenue" | | 7 | "Cambridge" | | 8 | "Tube" |
| | globalScore | 1 | | windowScore | 1 | |
| 100.00% | Narrator intent-glossing | Target: ≤2% narration sentences with intent-glossing patterns | | analyzedSentences | 62 | | glossingSentenceCount | 1 | | matches | | 0 | "smelled like hot iron and old paper and th" |
| |
| 100.00% | "Not X but Y" pattern overuse | Target: ≤1 "not X but Y" per 1000 words | | totalMatches | 0 | | per1kWords | 0 | | wordCount | 1578 | | matches | (empty) | |
| 100.00% | Overuse of "that" (subordinate clause padding) | Target: ≤2% sentences with "that" clauses | | thatCount | 1 | | totalSentences | 101 | | matches | | |
| 100.00% | Paragraph length variance | Target: CV ≥0.5 for paragraph word counts | | totalParagraphs | 42 | | mean | 37.57 | | std | 31.4 | | cv | 0.836 | | sampleLengths | | 0 | 87 | | 1 | 102 | | 2 | 9 | | 3 | 24 | | 4 | 42 | | 5 | 56 | | 6 | 6 | | 7 | 44 | | 8 | 12 | | 9 | 120 | | 10 | 33 | | 11 | 58 | | 12 | 93 | | 13 | 48 | | 14 | 32 | | 15 | 83 | | 16 | 58 | | 17 | 18 | | 18 | 24 | | 19 | 4 | | 20 | 61 | | 21 | 5 | | 22 | 1 | | 23 | 20 | | 24 | 2 | | 25 | 19 | | 26 | 59 | | 27 | 9 | | 28 | 13 | | 29 | 48 | | 30 | 58 | | 31 | 104 | | 32 | 40 | | 33 | 64 | | 34 | 31 | | 35 | 3 | | 36 | 3 | | 37 | 24 | | 38 | 20 | | 39 | 22 | | 40 | 10 | | 41 | 9 |
| |
| 97.88% | Passive voice overuse | Target: ≤2% passive sentences | | passiveCount | 2 | | totalSentences | 95 | | matches | | 0 | "was gone" | | 1 | "been disturbed" |
| |
| 53.80% | Past progressive (was/were + -ing) overuse | Target: ≤2% past progressive verbs | | pastProgressiveCount | 5 | | totalVerbs | 228 | | matches | | 0 | "was going" | | 1 | "was still breathing" | | 2 | "was doing" | | 3 | "was walking" | | 4 | "was telling" |
| |
| 0.00% | Em-dash & semicolon overuse | Target: ≤2% sentences with em-dashes/semicolons | | emDashCount | 11 | | semicolonCount | 1 | | flaggedSentences | 9 | | totalSentences | 101 | | ratio | 0.089 | | matches | | 0 | "Four bodies in fourteen months, all of them with the same absence in the tox screens — not a poison, not a drug, just a hole where the chemistry should have been." | | 1 | "He moved like a man carrying something valuable in his ribs — quick, light, checking the street in the reflection of a parked Škoda's window rather than turning his head." | | 2 | "Once at Cambridge Circus, where the crowd outside the theatre had spilled out under a sea of umbrellas, and she stood in the middle of it turning like a compass needle until she caught the flash of him — pale blue shirt, wrong for the weather — going down the steps to the Tube." | | 3 | "Down the black slope at the platform's end, past a sign that said *NO ENTRY — AUTHORISED PERSONNEL* in a typeface from another century, and into the dark." | | 4 | "Warm, moving, low — lantern light, and the flicker of something bluer, and under it a sound she recognised instantly and had no category for: the sound of a market." | | 5 | "He was still breathing hard, and his hand went to his chest, and Quinn saw the little silver medallion he wore come up out of his shirt as he clutched it — Saint Christopher, patron of travellers, of people going somewhere they might not come back from." | | 6 | "He had gone through a door and she had stopped to answer her phone — six seconds, eight at most — and when she went through after him there had been nothing on the other side but a room with no other exit and a smell like a struck match, and she had spent thirty-six months building a version of the world where that made sense." | | 7 | "Past him, the platform opened out, and she could see stalls — actual stalls, trestles and canvas — and jars, and something in one of the jars turning to look at her." | | 8 | "Her watch strap was soaked through; the leather had gone dark and heavy, the way it did." |
| |
| 94.00% | Purple prose (modifier overload) | Target: <4% adverbs, <2% -ly adverbs, no adj stacking | | wordCount | 1461 | | adjectiveStacks | 1 | | stackExamples | | 0 | "Warm, moving, low — lantern" |
| | adverbCount | 38 | | adverbRatio | 0.026009582477754964 | | lyAdverbCount | 7 | | lyAdverbRatio | 0.004791238877481177 | |
| 100.00% | Repeated phrase echo | Target: ≤20% sentences with echoes (window: 2) | | totalSentences | 101 | | echoCount | 0 | | echoWords | (empty) | |
| 100.00% | Sentence length variance | Target: CV ≥0.4 for sentence word counts | | totalSentences | 101 | | mean | 15.62 | | std | 14.84 | | cv | 0.95 | | sampleLengths | | 0 | 30 | | 1 | 38 | | 2 | 3 | | 3 | 16 | | 4 | 16 | | 5 | 4 | | 6 | 32 | | 7 | 17 | | 8 | 33 | | 9 | 5 | | 10 | 4 | | 11 | 24 | | 12 | 2 | | 13 | 24 | | 14 | 6 | | 15 | 10 | | 16 | 7 | | 17 | 30 | | 18 | 2 | | 19 | 3 | | 20 | 14 | | 21 | 6 | | 22 | 44 | | 23 | 12 | | 24 | 15 | | 25 | 10 | | 26 | 36 | | 27 | 3 | | 28 | 31 | | 29 | 5 | | 30 | 20 | | 31 | 33 | | 32 | 9 | | 33 | 20 | | 34 | 29 | | 35 | 4 | | 36 | 54 | | 37 | 35 | | 38 | 7 | | 39 | 41 | | 40 | 4 | | 41 | 28 | | 42 | 5 | | 43 | 38 | | 44 | 4 | | 45 | 3 | | 46 | 1 | | 47 | 32 | | 48 | 2 | | 49 | 2 |
| |
| 75.91% | Sentence opener variety | Target: ≥60% unique sentence openers | | consecutiveRepeats | 5 | | diversityRatio | 0.48514851485148514 | | totalSentences | 101 | | uniqueOpeners | 49 | |
| 85.47% | Adverb-first sentence starts | Target: ≥3% sentences starting with an adverb | | adverbCount | 2 | | totalSentences | 78 | | matches | | 0 | "Once at Cambridge Circus, where" | | 1 | "Then again on the northbound" |
| | ratio | 0.026 | |
| 71.28% | Pronoun-first sentence starts | Target: ≤30% sentences starting with a pronoun | | pronounCount | 29 | | totalSentences | 78 | | matches | | 0 | "She had stopped asking questions." | | 1 | "She'd read that report eleven" | | 2 | "He'd cut his hair since" | | 3 | "He moved like a man" | | 4 | "He made her at Frith" | | 5 | "She saw the exact moment" | | 6 | "she shouted, and then didn't" | | 7 | "He was eleven years younger" | | 8 | "He took the alley behind" | | 9 | "She found it." | | 10 | "Her heel went out and" | | 11 | "She didn't reach for it." | | 12 | "He went through it at" | | 13 | "She lost him twice." | | 14 | "He'd walked to the far" | | 15 | "Her torch found the wall." | | 16 | "She followed the shine." | | 17 | "He was still breathing hard," | | 18 | "He looked at her with" | | 19 | "His accent came out thicker" |
| | ratio | 0.372 | |
| 100.00% | Subject-first sentence starts | Target: ≤72% sentences starting with a subject | | subjectCount | 55 | | totalSentences | 78 | | matches | | 0 | "The rain had been falling" | | 1 | "Quinn stood in the doorway" | | 2 | "The sign buzzed." | | 3 | "Every few seconds it stuttered," | | 4 | "This was a hypothesis." | | 5 | "She had stopped asking questions." | | 6 | "She'd read that report eleven" | | 7 | "He'd cut his hair since" | | 8 | "He moved like a man" | | 9 | "Quinn let him get to" | | 10 | "He made her at Frith" | | 11 | "She saw the exact moment" | | 12 | "she shouted, and then didn't" | | 13 | "The chase went the way" | | 14 | "He was eleven years younger" | | 15 | "He took the alley behind" | | 16 | "She found it." | | 17 | "Her heel went out and" | | 18 | "She didn't reach for it." | | 19 | "That was the thing she" |
| | ratio | 0.705 | |
| 100.00% | Subordinate conjunction sentence starts | Target: ≥2% sentences starting with a subordinating conjunction | | subConjCount | 2 | | totalSentences | 78 | | matches | | 0 | "Now she just watched." | | 1 | "Because she knew where he" |
| | ratio | 0.026 | |
| 47.62% | Technical jargon density | Target: ≤6% sentences with technical-jargon patterns | | analyzedSentences | 45 | | technicalSentenceCount | 6 | | matches | | 0 | "He took the alley behind the Portuguese place, vaulted a stack of bin bags that split under his trailing foot and put a slick of coffee grounds and cabbage acro…" | | 1 | "Down the black slope at the platform's end, past a sign that said *NO ENTRY — AUTHORISED PERSONNEL* in a typeface from another century, and into the dark." | | 2 | "Cable runs, furred with dust that hadn't been disturbed in decades, except along one clean stripe at shoulder height where hands had touched, hundreds of hands,…" | | 3 | "The tunnel gave onto a curve of platform that shouldn't have existed, with tilework the colour of nicotine and a name in the mosaic she'd never heard of, half o…" | | 4 | "And Quinn stood in the dark at the mouth of the tunnel with her warrant card in her pocket and eighteen years of decorated service behind her and every single o…" | | 5 | "Up the stairs was the northbound platform and a Circle line map and a Pret at street level that would be open by six, and the case file with four names in it th…" |
| |
| 100.00% | Useless dialogue additions | Target: ≤5% dialogue tags with trailing filler fragments | | totalTags | 10 | | uselessAdditionCount | 0 | | matches | (empty) | |
| 91.18% | Dialogue tag variety (said vs. fancy) | Target: ≤10% fancy dialogue tags | | totalTags | 8 | | fancyCount | 1 | | fancyTags | | | dialogueSentences | 17 | | tagDensity | 0.471 | | leniency | 0.941 | | rawRatio | 0.125 | | effectiveRatio | 0.118 | |