| 100.00% | Adverbs in dialogue tags | Target: ≤10% dialogue tags with adverbs | | totalTags | 15 | | adverbTagCount | 1 | | adverbTags | | 0 | "he said finally [finally]" |
| | dialogueSentences | 38 | | tagDensity | 0.395 | | leniency | 0.789 | | rawRatio | 0.067 | | effectiveRatio | 0.053 | |
| 91.91% | AI-ism adverb frequency | Target: <2% AI-ism adverbs (58 tracked) | | wordCount | 1236 | | totalAiIsmAdverbs | 2 | | 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.86% | AI-ism word frequency | Target: <2% AI-ism words (290 tracked) | | wordCount | 1236 | | totalAiIsms | 3 | | found | | | highlights | | 0 | "shattered" | | 1 | "standard" | | 2 | "silence" |
| |
| 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 | 66 | | matches | (empty) | |
| 99.57% | Filter word density | Target: ≤3% sentences with filter/hedge words | | filterCount | 1 | | hedgeCount | 1 | | narrationSentences | 66 | | filterMatches | | | hedgeMatches | | |
| 100.00% | Gibberish response detection | Target: ≤1% gibberish-like sentences (hard fail if a sentence exceeds 800 words) | | analyzedSentences | 88 | | gibberishSentences | 0 | | adjustedGibberishSentences | 0 | | longSentenceCount | 0 | | runOnParagraphCount | 0 | | giantParagraphCount | 0 | | wordSaladCount | 0 | | repetitionLoopCount | 0 | | controlTokenCount | 0 | | repeatedSegmentCount | 0 | | maxSentenceWordsSeen | 54 | | ratio | 0 | | matches | (empty) | |
| 100.00% | Markdown formatting overuse | Target: ≤5% words in markdown formatting | | markdownSpans | 0 | | markdownWords | 0 | | totalWords | 1224 | | ratio | 0 | | matches | (empty) | |
| 100.00% | Missing dialogue indicators (quotation marks) | Target: ≤10% speech attributions without quotation marks | | totalAttributions | 17 | | unquotedAttributions | 0 | | matches | (empty) | |
| 50.00% | Name drop frequency | Target: ≤1.0 per-name mentions per 100 words | | totalMentions | 23 | | wordCount | 705 | | uniqueNames | 6 | | maxNameDensity | 1.56 | | worstName | "Marsh" | | maxWindowNameDensity | 3.5 | | worstWindowName | "Marsh" | | discoveredNames | | Camden | 1 | | Marsh | 11 | | Quinn | 8 | | Transport | 1 | | London | 1 | | Fine | 1 |
| | persons | | | places | | | globalScore | 0.72 | | windowScore | 0.5 | |
| 89.02% | Narrator intent-glossing | Target: ≤2% narration sentences with intent-glossing patterns | | analyzedSentences | 41 | | glossingSentenceCount | 1 | | matches | | 0 | "as if reaching for something in the dark" |
| |
| 100.00% | "Not X but Y" pattern overuse | Target: ≤1 "not X but Y" per 1000 words | | totalMatches | 0 | | per1kWords | 0 | | wordCount | 1224 | | matches | (empty) | |
| 100.00% | Overuse of "that" (subordinate clause padding) | Target: ≤2% sentences with "that" clauses | | thatCount | 0 | | totalSentences | 88 | | matches | (empty) | |
| 100.00% | Paragraph length variance | Target: CV ≥0.5 for paragraph word counts | | totalParagraphs | 38 | | mean | 32.21 | | std | 25.21 | | cv | 0.783 | | sampleLengths | | 0 | 73 | | 1 | 33 | | 2 | 4 | | 3 | 68 | | 4 | 4 | | 5 | 31 | | 6 | 3 | | 7 | 24 | | 8 | 69 | | 9 | 17 | | 10 | 3 | | 11 | 45 | | 12 | 52 | | 13 | 12 | | 14 | 35 | | 15 | 10 | | 16 | 1 | | 17 | 90 | | 18 | 23 | | 19 | 10 | | 20 | 55 | | 21 | 17 | | 22 | 10 | | 23 | 72 | | 24 | 10 | | 25 | 4 | | 26 | 29 | | 27 | 19 | | 28 | 48 | | 29 | 36 | | 30 | 92 | | 31 | 20 | | 32 | 14 | | 33 | 32 | | 34 | 37 | | 35 | 65 | | 36 | 37 | | 37 | 20 |
| |
| 94.63% | Passive voice overuse | Target: ≤2% passive sentences | | passiveCount | 2 | | totalSentences | 66 | | matches | | 0 | "were gone" | | 1 | "been replaced" |
| |
| 100.00% | Past progressive (was/were + -ing) overuse | Target: ≤2% past progressive verbs | | pastProgressiveCount | 0 | | totalVerbs | 130 | | matches | (empty) | |
| 0.00% | Em-dash & semicolon overuse | Target: ≤2% sentences with em-dashes/semicolons | | emDashCount | 12 | | semicolonCount | 0 | | flaggedSentences | 9 | | totalSentences | 88 | | ratio | 0.102 | | matches | | 0 | "The air down here tasted different—copper and damp rot threaded through with something sweeter, something that didn't belong to the underground at all." | | 1 | "The tracks were gone—ripped up years ago when the station decommissioned—but the concrete bed remained, rutted and black." | | 2 | "His face held an expression she'd seen before—not pain, not surprise." | | 3 | "But there—tucked between the thumb and forefinger—something caught the light of the work lamps." | | 4 | "The walls carried their original tiling—cream rectangles edged in maroon—but here and there the tiles had been replaced, newer ones at odd intervals, as if someone had been maintaining this place long after Transport for London abandoned it." | | 5 | "The floor shifted under her boots—less grit, more of a thin layer of dust that had settled without disturbance." | | 6 | "The silence that followed was the kind that occupied a room the way water occupies a glass—completely, without apology." | | 7 | "Her leather watch pressed against her wrist—a habit, pressing her thumb into the worn strap the way other people squeezed a stress ball." | | 8 | "The expression—not pain, not fear." |
| |
| 100.00% | Purple prose (modifier overload) | Target: <4% adverbs, <2% -ly adverbs, no adj stacking | | wordCount | 718 | | adjectiveStacks | 0 | | stackExamples | (empty) | | adverbCount | 14 | | adverbRatio | 0.019498607242339833 | | lyAdverbCount | 4 | | lyAdverbRatio | 0.005571030640668524 | |
| 100.00% | Repeated phrase echo | Target: ≤20% sentences with echoes (window: 2) | | totalSentences | 88 | | echoCount | 0 | | echoWords | (empty) | |
| 100.00% | Sentence length variance | Target: CV ≥0.4 for sentence word counts | | totalSentences | 88 | | mean | 13.91 | | std | 10.42 | | cv | 0.749 | | sampleLengths | | 0 | 22 | | 1 | 16 | | 2 | 23 | | 3 | 12 | | 4 | 27 | | 5 | 6 | | 6 | 4 | | 7 | 9 | | 8 | 11 | | 9 | 18 | | 10 | 17 | | 11 | 13 | | 12 | 4 | | 13 | 12 | | 14 | 19 | | 15 | 3 | | 16 | 24 | | 17 | 3 | | 18 | 3 | | 19 | 23 | | 20 | 13 | | 21 | 2 | | 22 | 3 | | 23 | 11 | | 24 | 11 | | 25 | 17 | | 26 | 3 | | 27 | 16 | | 28 | 29 | | 29 | 5 | | 30 | 4 | | 31 | 6 | | 32 | 10 | | 33 | 14 | | 34 | 13 | | 35 | 12 | | 36 | 5 | | 37 | 30 | | 38 | 10 | | 39 | 1 | | 40 | 9 | | 41 | 38 | | 42 | 26 | | 43 | 17 | | 44 | 4 | | 45 | 19 | | 46 | 10 | | 47 | 30 | | 48 | 21 | | 49 | 4 |
| |
| 70.08% | Sentence opener variety | Target: ≥60% unique sentence openers | | consecutiveRepeats | 5 | | diversityRatio | 0.45454545454545453 | | totalSentences | 88 | | uniqueOpeners | 40 | |
| 0.00% | Adverb-first sentence starts | Target: ≥3% sentences starting with an adverb | | adverbCount | 0 | | totalSentences | 60 | | matches | (empty) | | ratio | 0 | |
| 100.00% | Pronoun-first sentence starts | Target: ≤30% sentences starting with a pronoun | | pronounCount | 17 | | totalSentences | 60 | | matches | | 0 | "She pulled her jacket tighter," | | 1 | "He didn't turn when she" | | 2 | "His face held an expression" | | 3 | "She crouched beside the nearest" | | 4 | "She walked toward it." | | 5 | "She crouched at the base" | | 6 | "He pulled at his collar." | | 7 | "She let the words settle" | | 8 | "He rubbed the back of" | | 9 | "She kept her face still." | | 10 | "Her leather watch pressed against" | | 11 | "She pointed at the vending" | | 12 | "She paused, watching the two" | | 13 | "He looked up." | | 14 | "She met Marsh's eyes" | | 15 | "He stood very still for" | | 16 | "he said finally, and turned" |
| | ratio | 0.283 | |
| 26.67% | Subject-first sentence starts | Target: ≤72% sentences starting with a subject | | subjectCount | 52 | | totalSentences | 60 | | matches | | 0 | "The police tape stretched across" | | 1 | "Quinn ducked under it, her" | | 2 | "The air down here tasted" | | 3 | "She pulled her jacket tighter," | | 4 | "He didn't turn when she" | | 5 | "Quinn let her eyes adjust" | | 6 | "The platform stretched thirty meters" | | 7 | "The tracks were gone—ripped up" | | 8 | "Marsh finally looked at her" | | 9 | "Quinn stopped walking." | | 10 | "The third column." | | 11 | "The body lay on its" | | 12 | "A man, mid-forties, wearing a" | | 13 | "His face held an expression" | | 14 | "Curiosity frozen at the exact" | | 15 | "She crouched beside the nearest" | | 16 | "The tech paused, tapping her" | | 17 | "Quinn studied the man's hand." | | 18 | "The nails were clean." | | 19 | "A disc, no larger than" |
| | ratio | 0.867 | |
| 0.00% | Subordinate conjunction sentence starts | Target: ≥2% sentences starting with a subordinating conjunction | | subConjCount | 0 | | totalSentences | 60 | | matches | (empty) | | ratio | 0 | |
| 0.00% | Technical jargon density | Target: ≤6% sentences with technical-jargon patterns | | analyzedSentences | 30 | | technicalSentenceCount | 7 | | matches | | 0 | "Quinn ducked under it, her boots finding their footing on decades of grime and shattered glass." | | 1 | "The air down here tasted different—copper and damp rot threaded through with something sweeter, something that didn't belong to the underground at all." | | 2 | "A man, mid-forties, wearing a suit that cost more than most people's rent." | | 3 | "The walls carried their original tiling—cream rectangles edged in maroon—but here and there the tiles had been replaced, newer ones at odd intervals, as if some…" | | 4 | "The floor shifted under her boots—less grit, more of a thin layer of dust that had settled without disturbance." | | 5 | "Marsh pulled out his phone, scrolling without looking at her." | | 6 | "The fluorescent tubes overhead buzzed, one of them flickering in a pattern that felt almost deliberate." |
| |
| 91.67% | Useless dialogue additions | Target: ≤5% dialogue tags with trailing filler fragments | | totalTags | 15 | | uselessAdditionCount | 1 | | matches | | 0 | "Quinn said, and the tech withdrew her gloved fingers" |
| |
| 100.00% | Dialogue tag variety (said vs. fancy) | Target: ≤10% fancy dialogue tags | | totalTags | 6 | | fancyCount | 0 | | fancyTags | (empty) | | dialogueSentences | 38 | | tagDensity | 0.158 | | leniency | 0.316 | | rawRatio | 0 | | effectiveRatio | 0 | |