| 100.00% | Adverbs in dialogue tags | Target: ≤10% dialogue tags with adverbs | | totalTags | 4 | | adverbTagCount | 0 | | adverbTags | (empty) | | dialogueSentences | 103 | | tagDensity | 0.039 | | leniency | 0.078 | | rawRatio | 0 | | effectiveRatio | 0 | |
| 97.88% | AI-ism adverb frequency | Target: <2% AI-ism adverbs (58 tracked) | | wordCount | 2359 | | totalAiIsmAdverbs | 1 | | found | | | highlights | | |
| 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) | |
| 87.28% | AI-ism word frequency | Target: <2% AI-ism words (290 tracked) | | wordCount | 2359 | | totalAiIsms | 6 | | found | | | highlights | | 0 | "silence" | | 1 | "scanned" | | 2 | "etched" | | 3 | "trembled" | | 4 | "flicked" |
| |
| 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 | 207 | | matches | (empty) | |
| 100.00% | Filter word density | Target: ≤3% sentences with filter/hedge words | | filterCount | 3 | | hedgeCount | 0 | | narrationSentences | 207 | | filterMatches | | | hedgeMatches | (empty) | |
| 100.00% | Gibberish response detection | Target: ≤1% gibberish-like sentences (hard fail if a sentence exceeds 800 words) | | analyzedSentences | 306 | | gibberishSentences | 0 | | adjustedGibberishSentences | 0 | | longSentenceCount | 0 | | runOnParagraphCount | 0 | | giantParagraphCount | 0 | | wordSaladCount | 0 | | repetitionLoopCount | 0 | | controlTokenCount | 0 | | maxSentenceWordsSeen | 43 | | ratio | 0 | | matches | (empty) | |
| 100.00% | Markdown formatting overuse | Target: ≤5% words in markdown formatting | | markdownSpans | 0 | | markdownWords | 0 | | totalWords | 2359 | | ratio | 0 | | matches | (empty) | |
| 100.00% | Missing dialogue indicators (quotation marks) | Target: ≤10% speech attributions without quotation marks | | totalAttributions | 6 | | unquotedAttributions | 0 | | matches | (empty) | |
| 33.33% | Name drop frequency | Target: ≤1.0 per-name mentions per 100 words | | totalMentions | 87 | | wordCount | 1633 | | uniqueNames | 13 | | maxNameDensity | 1.84 | | worstName | "Quinn" | | maxWindowNameDensity | 4 | | worstWindowName | "Keats" | | discoveredNames | | Camden | 1 | | Detective | 1 | | Harlow | 1 | | Quinn | 30 | | Underground | 1 | | London | 1 | | Martin | 1 | | Keats | 30 | | Kowalski | 1 | | Oxford | 1 | | One | 4 | | Eva | 12 | | Dry | 3 |
| | persons | | 0 | "Harlow" | | 1 | "Quinn" | | 2 | "Martin" | | 3 | "Keats" | | 4 | "Kowalski" | | 5 | "Eva" |
| | places | | | globalScore | 0.581 | | windowScore | 0.333 | |
| 100.00% | Narrator intent-glossing | Target: ≤2% narration sentences with intent-glossing patterns | | analyzedSentences | 122 | | glossingSentenceCount | 1 | | matches | | 0 | "looked like hooked letters or little bone" |
| |
| 100.00% | "Not X but Y" pattern overuse | Target: ≤1 "not X but Y" per 1000 words | | totalMatches | 1 | | per1kWords | 0.424 | | wordCount | 2359 | | matches | | 0 | "Not colder in the way tunnels often turned cold, but precise, localised, as though someone had opened a cellar do" |
| |
| 100.00% | Overuse of "that" (subordinate clause padding) | Target: ≤2% sentences with "that" clauses | | thatCount | 0 | | totalSentences | 306 | | matches | (empty) | |
| 100.00% | Paragraph length variance | Target: CV ≥0.5 for paragraph word counts | | totalParagraphs | 209 | | mean | 11.29 | | std | 13.51 | | cv | 1.197 | | sampleLengths | | 0 | 14 | | 1 | 60 | | 2 | 12 | | 3 | 58 | | 4 | 14 | | 5 | 2 | | 6 | 8 | | 7 | 3 | | 8 | 13 | | 9 | 3 | | 10 | 6 | | 11 | 13 | | 12 | 11 | | 13 | 9 | | 14 | 44 | | 15 | 5 | | 16 | 4 | | 17 | 66 | | 18 | 9 | | 19 | 5 | | 20 | 31 | | 21 | 7 | | 22 | 1 | | 23 | 6 | | 24 | 29 | | 25 | 1 | | 26 | 10 | | 27 | 3 | | 28 | 18 | | 29 | 9 | | 30 | 2 | | 31 | 64 | | 32 | 16 | | 33 | 5 | | 34 | 10 | | 35 | 4 | | 36 | 5 | | 37 | 6 | | 38 | 6 | | 39 | 14 | | 40 | 6 | | 41 | 6 | | 42 | 3 | | 43 | 1 | | 44 | 28 | | 45 | 2 | | 46 | 1 | | 47 | 10 | | 48 | 6 | | 49 | 10 |
| |
| 100.00% | Passive voice overuse | Target: ≤2% passive sentences | | passiveCount | 2 | | totalSentences | 207 | | matches | | 0 | "got found" | | 1 | "been swept" |
| |
| 100.00% | Past progressive (was/were + -ing) overuse | Target: ≤2% past progressive verbs | | pastProgressiveCount | 0 | | totalVerbs | 262 | | matches | (empty) | |
| 100.00% | Em-dash & semicolon overuse | Target: ≤2% sentences with em-dashes/semicolons | | emDashCount | 0 | | semicolonCount | 0 | | flaggedSentences | 0 | | totalSentences | 306 | | ratio | 0 | | matches | (empty) | |
| 94.00% | Purple prose (modifier overload) | Target: <4% adverbs, <2% -ly adverbs, no adj stacking | | wordCount | 1637 | | adjectiveStacks | 1 | | stackExamples | | 0 | "behind soot-stained tiles." |
| | adverbCount | 53 | | adverbRatio | 0.032376298106292 | | lyAdverbCount | 5 | | lyAdverbRatio | 0.0030543677458766036 | |
| 100.00% | Repeated phrase echo | Target: ≤20% sentences with echoes (window: 2) | | totalSentences | 306 | | echoCount | 0 | | echoWords | (empty) | |
| 100.00% | Sentence length variance | Target: CV ≥0.4 for sentence word counts | | totalSentences | 306 | | mean | 7.71 | | std | 6.82 | | cv | 0.885 | | sampleLengths | | 0 | 14 | | 1 | 35 | | 2 | 6 | | 3 | 19 | | 4 | 12 | | 5 | 11 | | 6 | 3 | | 7 | 5 | | 8 | 6 | | 9 | 20 | | 10 | 7 | | 11 | 2 | | 12 | 4 | | 13 | 14 | | 14 | 2 | | 15 | 8 | | 16 | 3 | | 17 | 13 | | 18 | 3 | | 19 | 6 | | 20 | 13 | | 21 | 3 | | 22 | 1 | | 23 | 5 | | 24 | 2 | | 25 | 8 | | 26 | 1 | | 27 | 22 | | 28 | 22 | | 29 | 5 | | 30 | 4 | | 31 | 33 | | 32 | 1 | | 33 | 10 | | 34 | 2 | | 35 | 6 | | 36 | 5 | | 37 | 9 | | 38 | 9 | | 39 | 5 | | 40 | 31 | | 41 | 7 | | 42 | 1 | | 43 | 6 | | 44 | 7 | | 45 | 6 | | 46 | 12 | | 47 | 2 | | 48 | 2 | | 49 | 1 |
| |
| 48.42% | Sentence opener variety | Target: ≥60% unique sentence openers | | consecutiveRepeats | 19 | | diversityRatio | 0.32786885245901637 | | totalSentences | 305 | | uniqueOpeners | 100 | |
| 38.99% | Adverb-first sentence starts | Target: ≥3% sentences starting with an adverb | | adverbCount | 2 | | totalSentences | 171 | | matches | | 0 | "Too little of it." | | 1 | "Instead it sat in a" |
| | ratio | 0.012 | |
| 100.00% | Pronoun-first sentence starts | Target: ≤30% sentences starting with a pronoun | | pronounCount | 31 | | totalSentences | 171 | | matches | | 0 | "She ducked under the tape" | | 1 | "It also made the blood" | | 2 | "Her leather watch sat cold" | | 3 | "He rose when he saw" | | 4 | "She crouched by the victim’s" | | 5 | "She shifted her attention to" | | 6 | "She leaned in further." | | 7 | "It dipped beneath the shirt" | | 8 | "She stood and scanned the" | | 9 | "He opened his hands." | | 10 | "He looked down." | | 11 | "They looked like hooked letters" | | 12 | "Her mouth dried." | | 13 | "She moved to the platform" | | 14 | "She crouched again, following the" | | 15 | "He folded his arms." | | 16 | "She straightened and looked at" | | 17 | "He gave the broad platform" | | 18 | "Her worn leather satchel knocked" | | 19 | "She tucked hair behind her" |
| | ratio | 0.181 | |
| 62.34% | Subject-first sentence starts | Target: ≤72% sentences starting with a subject | | subjectCount | 136 | | totalSentences | 171 | | matches | | 0 | "The call came through at" | | 1 | "Water tapped somewhere in the" | | 2 | "A generator hummed on the" | | 3 | "She ducked under the tape" | | 4 | "The old station opened beneath" | | 5 | "Posters rotted down to paper" | | 6 | "Someone had set up flood" | | 7 | "It also made the blood" | | 8 | "A uniform constable lifted the" | | 9 | "Quinn glanced at the body" | | 10 | "The constable looked at his" | | 11 | "Quinn’s jaw tightened." | | 12 | "Her leather watch sat cold" | | 13 | "DS Martin Keats crouched near" | | 14 | "He rose when he saw" | | 15 | "Quinn looked past him." | | 16 | "The dead man lay on" | | 17 | "The other sat three feet" | | 18 | "A forensics photographer moved around" | | 19 | "Keats pointed at the tracks." |
| | ratio | 0.795 | |
| 87.72% | Subordinate conjunction sentence starts | Target: ≥2% sentences starting with a subordinating conjunction | | subConjCount | 3 | | totalSentences | 171 | | matches | | 0 | "If a fall had cracked" | | 1 | "If he had fallen, stumbled," | | 2 | "Because the killer hadn’t wanted" |
| | ratio | 0.018 | |
| 96.77% | Technical jargon density | Target: ≤6% sentences with technical-jargon patterns | | analyzedSentences | 62 | | technicalSentenceCount | 4 | | matches | | 0 | "DS Martin Keats crouched near the body, broad shoulders packed into a scene suit that looked ready to split at the seams." | | 1 | "The dead man lay on the old eastbound platform, half on his side, one arm bent under him, the other stretched towards the edge as if he had been reaching for th…" | | 2 | "Dust lay in broad grey coats everywhere except in a grid of hard-edged shapes across the platform, clean rectangles and narrow lanes between them, as if heavy o…" | | 3 | "Not colder in the way tunnels often turned cold, but precise, localised, as though someone had opened a cellar door in the brick." |
| |
| 100.00% | Useless dialogue additions | Target: ≤5% dialogue tags with trailing filler fragments | | totalTags | 4 | | uselessAdditionCount | 0 | | matches | (empty) | |
| 100.00% | Dialogue tag variety (said vs. fancy) | Target: ≤10% fancy dialogue tags | | totalTags | 4 | | fancyCount | 1 | | fancyTags | | | dialogueSentences | 103 | | tagDensity | 0.039 | | leniency | 0.078 | | rawRatio | 0.25 | | effectiveRatio | 0.019 | |