| 100.00% | Adverbs in dialogue tags | Target: ≤10% dialogue tags with adverbs | | totalTags | 17 | | adverbTagCount | 0 | | adverbTags | (empty) | | dialogueSentences | 48 | | tagDensity | 0.354 | | leniency | 0.708 | | rawRatio | 0 | | effectiveRatio | 0 | |
| 88.03% | AI-ism adverb frequency | Target: <2% AI-ism adverbs (58 tracked) | | wordCount | 1671 | | totalAiIsmAdverbs | 4 | | found | | | highlights | | 0 | "slowly" | | 1 | "really" | | 2 | "very" | | 3 | "carefully" |
| |
| 100.00% | AI-ism character names | Target: 0 AI-default names (17 tracked, −20% each) | | codexExemptions | (empty) | | found | (empty) | |
| 100.00% | AI-ism location names | Target: 0 AI-default location names (33 tracked, −20% each) | | codexExemptions | (empty) | | found | (empty) | |
| 76.06% | AI-ism word frequency | Target: <2% AI-ism words (290 tracked) | | wordCount | 1671 | | totalAiIsms | 8 | | found | | | highlights | | 0 | "footsteps" | | 1 | "familiar" | | 2 | "flicked" | | 3 | "pulse" | | 4 | "etched" | | 5 | "unwavering" | | 6 | "magnetic" | | 7 | "chill" |
| |
| 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 | 88 | | matches | (empty) | |
| 77.92% | Filter word density | Target: ≤3% sentences with filter/hedge words | | filterCount | 2 | | hedgeCount | 2 | | narrationSentences | 88 | | filterMatches | | | hedgeMatches | | |
| 100.00% | Gibberish response detection | Target: ≤1% gibberish-like sentences (hard fail if a sentence exceeds 800 words) | | analyzedSentences | 117 | | gibberishSentences | 0 | | adjustedGibberishSentences | 0 | | longSentenceCount | 0 | | runOnParagraphCount | 0 | | giantParagraphCount | 0 | | wordSaladCount | 0 | | repetitionLoopCount | 0 | | controlTokenCount | 0 | | repeatedSegmentCount | 0 | | maxSentenceWordsSeen | 64 | | ratio | 0 | | matches | (empty) | |
| 100.00% | Markdown formatting overuse | Target: ≤5% words in markdown formatting | | markdownSpans | 0 | | markdownWords | 0 | | totalWords | 1689 | | ratio | 0 | | matches | (empty) | |
| 100.00% | Missing dialogue indicators (quotation marks) | Target: ≤10% speech attributions without quotation marks | | totalAttributions | 17 | | unquotedAttributions | 0 | | matches | (empty) | |
| 83.33% | Name drop frequency | Target: ≤1.0 per-name mentions per 100 words | | totalMentions | 48 | | wordCount | 1185 | | uniqueNames | 17 | | maxNameDensity | 1.18 | | worstName | "Quinn" | | maxWindowNameDensity | 2.5 | | worstWindowName | "Quinn" | | discoveredNames | | Tube | 1 | | Harlow | 3 | | Quinn | 14 | | Blitz | 1 | | Doyle | 8 | | Twenty | 1 | | Morris | 5 | | June | 1 | | Men | 2 | | London | 1 | | Poland | 1 | | Oxford | 1 | | Eva | 4 | | Started | 1 | | Kowalski | 1 | | Hackney | 2 | | July | 1 |
| | persons | | 0 | "Harlow" | | 1 | "Quinn" | | 2 | "Doyle" | | 3 | "Morris" | | 4 | "Eva" | | 5 | "Kowalski" |
| | places | | 0 | "June" | | 1 | "London" | | 2 | "Poland" | | 3 | "Oxford" | | 4 | "Hackney" | | 5 | "July" |
| | globalScore | 0.909 | | windowScore | 0.833 | |
| 100.00% | Narrator intent-glossing | Target: ≤2% narration sentences with intent-glossing patterns | | analyzedSentences | 61 | | glossingSentenceCount | 1 | | matches | | 0 | "t cutters and, apparently, with confidence" |
| |
| 100.00% | "Not X but Y" pattern overuse | Target: ≤1 "not X but Y" per 1000 words | | totalMatches | 0 | | per1kWords | 0 | | wordCount | 1689 | | matches | (empty) | |
| 100.00% | Overuse of "that" (subordinate clause padding) | Target: ≤2% sentences with "that" clauses | | thatCount | 0 | | totalSentences | 117 | | matches | (empty) | |
| 100.00% | Paragraph length variance | Target: CV ≥0.5 for paragraph word counts | | totalParagraphs | 51 | | mean | 33.12 | | std | 26.37 | | cv | 0.796 | | sampleLengths | | 0 | 16 | | 1 | 84 | | 2 | 60 | | 3 | 19 | | 4 | 54 | | 5 | 1 | | 6 | 9 | | 7 | 74 | | 8 | 62 | | 9 | 1 | | 10 | 33 | | 11 | 4 | | 12 | 34 | | 13 | 37 | | 14 | 41 | | 15 | 61 | | 16 | 19 | | 17 | 34 | | 18 | 3 | | 19 | 41 | | 20 | 5 | | 21 | 8 | | 22 | 14 | | 23 | 77 | | 24 | 58 | | 25 | 6 | | 26 | 9 | | 27 | 16 | | 28 | 3 | | 29 | 94 | | 30 | 3 | | 31 | 37 | | 32 | 13 | | 33 | 59 | | 34 | 6 | | 35 | 45 | | 36 | 18 | | 37 | 4 | | 38 | 73 | | 39 | 32 | | 40 | 39 | | 41 | 9 | | 42 | 72 | | 43 | 49 | | 44 | 10 | | 45 | 72 | | 46 | 4 | | 47 | 68 | | 48 | 53 | | 49 | 26 |
| |
| 93.30% | Passive voice overuse | Target: ≤2% passive sentences | | passiveCount | 3 | | totalSentences | 88 | | matches | | 0 | "were trained" | | 1 | "been placed" | | 2 | "was closed" |
| |
| 0.00% | Past progressive (was/were + -ing) overuse | Target: ≤2% past progressive verbs | | pastProgressiveCount | 7 | | totalVerbs | 190 | | matches | | 0 | "was reading" | | 1 | "were catching" | | 2 | "was tucking" | | 3 | "was not pointing" | | 4 | "was standing" | | 5 | "was watching" | | 6 | "was lying" |
| |
| 0.00% | Em-dash & semicolon overuse | Target: ≤2% sentences with em-dashes/semicolons | | emDashCount | 14 | | semicolonCount | 0 | | flaggedSentences | 11 | | totalSentences | 117 | | ratio | 0.094 | | matches | | 0 | "The air smelled of damp limestone, old soot, and underneath it all, something wrong — a mineral sharpness, like the inside of a freezer, that had no business being in a tunnel." | | 1 | "The body lay on its back halfway along the platform, arms arranged neatly at its sides — and that was the first wrong note, because nobody who died of cardiac arrest arranged anything." | | 2 | "Quinn approached the way she'd approach a spooked horse — oblique angle, hands visible." | | 3 | "She'd heard word salad from witnesses before — grief did strange arithmetic to people's memories — but Eva Kowalski didn't have the flat affect of a fantasist or the darting eyes of a liar." | | 4 | "The dead man's left hand was closed, the fingers curled with the deliberate tightness of rigor, but the right hand was open, palm up — and in the center of the palm, pressed into the skin as if he'd been gripping it at the moment of death, was a small disc of yellow-white material." | | 5 | "It had rolled under the edge of the platform bench, just out of the lamplight — a small brass compass, green with verdigris, its face etched with symbols she'd never seen in any jeweler's window." | | 6 | "It swung in a slow, steady circle, like the second hand of a watch, and then it stopped — pointing directly at her." | | 7 | "\"His heart just stopped.\" Quinn looked down at the dead man's face, at the frost feathering his lashes, and something at the back of her mind — the part she'd spent three years teaching to be quiet — stirred." | | 8 | "Morris had stood where Doyle was standing now and said the same words — the evidence doesn't add up, Harlow — and two days later Morris was dead too, in circumstances the report called unexplained and the file called closed." | | 9 | "\"Bag everything.\" She slipped the compass into an evidence sleeve, and felt, absurdly, that she was lying to it — that it knew she was a policewoman and disapproved." | | 10 | "\"Cardiac arrest doesn't frost a man's face in June. Cardiac arrest doesn't arrange his arms. And cardiac arrest—\" she weighed the compass in its bag, the needle still straining toward her through the plastic, \"—doesn't know my name.\"" |
| |
| 94.00% | Purple prose (modifier overload) | Target: <4% adverbs, <2% -ly adverbs, no adj stacking | | wordCount | 1111 | | adjectiveStacks | 1 | | stackExamples | | 0 | "unexplainable under acceptable categories." |
| | adverbCount | 31 | | adverbRatio | 0.0279027902790279 | | lyAdverbCount | 12 | | lyAdverbRatio | 0.010801080108010801 | |
| 100.00% | Repeated phrase echo | Target: ≤20% sentences with echoes (window: 2) | | totalSentences | 117 | | echoCount | 0 | | echoWords | (empty) | |
| 100.00% | Sentence length variance | Target: CV ≥0.4 for sentence word counts | | totalSentences | 117 | | mean | 14.44 | | std | 13.1 | | cv | 0.907 | | sampleLengths | | 0 | 16 | | 1 | 27 | | 2 | 25 | | 3 | 32 | | 4 | 19 | | 5 | 16 | | 6 | 25 | | 7 | 15 | | 8 | 4 | | 9 | 18 | | 10 | 36 | | 11 | 1 | | 12 | 9 | | 13 | 20 | | 14 | 7 | | 15 | 33 | | 16 | 9 | | 17 | 5 | | 18 | 2 | | 19 | 5 | | 20 | 13 | | 21 | 7 | | 22 | 9 | | 23 | 26 | | 24 | 1 | | 25 | 2 | | 26 | 31 | | 27 | 4 | | 28 | 17 | | 29 | 13 | | 30 | 4 | | 31 | 25 | | 32 | 9 | | 33 | 3 | | 34 | 15 | | 35 | 26 | | 36 | 4 | | 37 | 31 | | 38 | 8 | | 39 | 18 | | 40 | 14 | | 41 | 5 | | 42 | 15 | | 43 | 19 | | 44 | 3 | | 45 | 25 | | 46 | 16 | | 47 | 5 | | 48 | 3 | | 49 | 2 |
| |
| 80.91% | Sentence opener variety | Target: ≥60% unique sentence openers | | consecutiveRepeats | 7 | | diversityRatio | 0.5213675213675214 | | totalSentences | 117 | | uniqueOpeners | 61 | |
| 43.86% | Adverb-first sentence starts | Target: ≥3% sentences starting with an adverb | | adverbCount | 1 | | totalSentences | 76 | | matches | | 0 | "Then she found the second" |
| | ratio | 0.013 | |
| 100.00% | Pronoun-first sentence starts | Target: ≤30% sentences starting with a pronoun | | pronounCount | 20 | | totalSentences | 76 | | matches | | 0 | "She walked the platform slowly," | | 1 | "His eyes were open and" | | 2 | "She held her palm an" | | 3 | "She was tucking a strand" | | 4 | "She'd heard word salad from" | | 5 | "She had the look of" | | 6 | "She crouched again." | | 7 | "She turned it over" | | 8 | "She bagged it without comment." | | 9 | "It had rolled under the" | | 10 | "It was cold." | | 11 | "It swung in a slow," | | 12 | "She rotated the compass in" | | 13 | "Her voice came out level" | | 14 | "It cost her something." | | 15 | "She had never told anyone" | | 16 | "She slipped the compass into" | | 17 | "she weighed the compass in" | | 18 | "She didn't say the rest." | | 19 | "She didn't say that somewhere" |
| | ratio | 0.263 | |
| 100.00% | Subject-first sentence starts | Target: ≤72% sentences starting with a subject | | subjectCount | 54 | | totalSentences | 76 | | matches | | 0 | "The Tube station had been" | | 1 | "Detective Harlow Quinn ducked under" | | 2 | "Camden's abandoned platform sat ninety" | | 3 | "The air smelled of damp" | | 4 | "Sergeant Doyle met her at" | | 5 | "Quinn checked her watch out" | | 6 | "Doyle said it with the" | | 7 | "She walked the platform slowly," | | 8 | "Military precision, Morris used to" | | 9 | "The body lay on its" | | 10 | "Men who overdosed died like" | | 11 | "This man had been placed." | | 12 | "His eyes were open and" | | 13 | "Men like Doyle survived the" | | 14 | "She held her palm an" | | 15 | "The cold rose off him" | | 16 | "Doyle said, changing the subject" | | 17 | "Quinn followed his nod." | | 18 | "She was tucking a strand" | | 19 | "Quinn approached the way she'd" |
| | ratio | 0.711 | |
| 65.79% | Subordinate conjunction sentence starts | Target: ≥2% sentences starting with a subordinating conjunction | | subConjCount | 1 | | totalSentences | 76 | | matches | | 0 | "Because she had seen a" |
| | ratio | 0.013 | |
| 0.00% | Technical jargon density | Target: ≤6% sentences with technical-jargon patterns | | analyzedSentences | 32 | | technicalSentenceCount | 7 | | matches | | 0 | "Detective Harlow Quinn ducked under the cordon tape at the bottom of the emergency stairs, her boots ringing on tile that hadn't heard footsteps since the Blitz…" | | 1 | "The air smelled of damp limestone, old soot, and underneath it all, something wrong — a mineral sharpness, like the inside of a freezer, that had no business be…" | | 2 | "Unshaven, expensive coat over cheap clothes, which was its own kind of statement." | | 3 | "The dead man's left hand was closed, the fingers curled with the deliberate tightness of rigor, but the right hand was open, palm up — and in the center of the …" | | 4 | "The carving on the reverse was a knot-work pattern that hurt to look at directly, the eye sliding off it like a finger off wet glass." | | 5 | "Pointing at her, still, unwavering, as though she herself were magnetic north." | | 6 | "How the dead man in Hackney had been cold in July, cold in a way that had nothing to do with temperature." |
| |
| 95.59% | Useless dialogue additions | Target: ≤5% dialogue tags with trailing filler fragments | | totalTags | 17 | | uselessAdditionCount | 1 | | matches | | 0 | "she weighed, the needle still straining toward her through the plastic," |
| |
| 100.00% | Dialogue tag variety (said vs. fancy) | Target: ≤10% fancy dialogue tags | | totalTags | 3 | | fancyCount | 0 | | fancyTags | (empty) | | dialogueSentences | 48 | | tagDensity | 0.063 | | leniency | 0.125 | | rawRatio | 0 | | effectiveRatio | 0 | |