| 100.00% | Adverbs in dialogue tags | Target: ≤10% dialogue tags with adverbs | | totalTags | 7 | | adverbTagCount | 0 | | adverbTags | (empty) | | dialogueSentences | 13 | | tagDensity | 0.538 | | leniency | 1 | | rawRatio | 0 | | effectiveRatio | 0 | |
| 100.00% | AI-ism adverb frequency | Target: <2% AI-ism adverbs (58 tracked) | | wordCount | 1083 | | totalAiIsmAdverbs | 0 | | found | (empty) | | highlights | (empty) | |
| 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.92% | AI-ism word frequency | Target: <2% AI-ism words (290 tracked) | | wordCount | 1083 | | totalAiIsms | 5 | | found | | | highlights | | 0 | "fractured" | | 1 | "streaming" | | 2 | "footsteps" | | 3 | "echoed" | | 4 | "weight" |
| |
| 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 | 78 | | matches | (empty) | |
| 100.00% | Filter word density | Target: ≤3% sentences with filter/hedge words | | filterCount | 2 | | hedgeCount | 0 | | narrationSentences | 78 | | filterMatches | | | hedgeMatches | (empty) | |
| 100.00% | Gibberish response detection | Target: ≤1% gibberish-like sentences (hard fail if a sentence exceeds 800 words) | | analyzedSentences | 84 | | gibberishSentences | 0 | | adjustedGibberishSentences | 0 | | longSentenceCount | 0 | | runOnParagraphCount | 0 | | giantParagraphCount | 0 | | wordSaladCount | 0 | | repetitionLoopCount | 0 | | controlTokenCount | 0 | | repeatedSegmentCount | 0 | | maxSentenceWordsSeen | 49 | | ratio | 0 | | matches | (empty) | |
| 100.00% | Markdown formatting overuse | Target: ≤5% words in markdown formatting | | markdownSpans | 1 | | markdownWords | 1 | | totalWords | 1077 | | ratio | 0.001 | | matches | | |
| 100.00% | Missing dialogue indicators (quotation marks) | Target: ≤10% speech attributions without quotation marks | | totalAttributions | 2 | | unquotedAttributions | 0 | | matches | (empty) | |
| 100.00% | Name drop frequency | Target: ≤1.0 per-name mentions per 100 words | | totalMentions | 27 | | wordCount | 962 | | uniqueNames | 13 | | maxNameDensity | 0.83 | | worstName | "Quinn" | | maxWindowNameDensity | 1.5 | | worstWindowName | "Quinn" | | discoveredNames | | Camden | 1 | | Harlow | 1 | | Quinn | 8 | | Raven | 1 | | Nest | 1 | | Soho | 1 | | Tomás | 1 | | Herrera | 6 | | Christopher | 1 | | Seville | 1 | | Tube | 1 | | Morris | 3 | | Cold | 1 |
| | persons | | 0 | "Harlow" | | 1 | "Quinn" | | 2 | "Raven" | | 3 | "Tomás" | | 4 | "Herrera" | | 5 | "Christopher" | | 6 | "Morris" |
| | places | | | globalScore | 1 | | windowScore | 1 | |
| 51.96% | Narrator intent-glossing | Target: ≤2% narration sentences with intent-glossing patterns | | analyzedSentences | 51 | | glossingSentenceCount | 2 | | matches | | 0 | "quite fear—more like calculation, like a man deciding how much she could be allowed to see" | | 1 | "something like pity" |
| |
| 100.00% | "Not X but Y" pattern overuse | Target: ≤1 "not X but Y" per 1000 words | | totalMatches | 1 | | per1kWords | 0.929 | | wordCount | 1077 | | matches | | 0 | "not with her reason but with the older part of her" |
| |
| 100.00% | Overuse of "that" (subordinate clause padding) | Target: ≤2% sentences with "that" clauses | | thatCount | 1 | | totalSentences | 84 | | matches | | |
| 100.00% | Paragraph length variance | Target: CV ≥0.5 for paragraph word counts | | totalParagraphs | 37 | | mean | 29.11 | | std | 23.13 | | cv | 0.795 | | sampleLengths | | 0 | 46 | | 1 | 18 | | 2 | 9 | | 3 | 6 | | 4 | 78 | | 5 | 24 | | 6 | 40 | | 7 | 18 | | 8 | 29 | | 9 | 17 | | 10 | 2 | | 11 | 47 | | 12 | 7 | | 13 | 49 | | 14 | 27 | | 15 | 42 | | 16 | 3 | | 17 | 56 | | 18 | 26 | | 19 | 90 | | 20 | 65 | | 21 | 12 | | 22 | 1 | | 23 | 21 | | 24 | 23 | | 25 | 24 | | 26 | 46 | | 27 | 13 | | 28 | 80 | | 29 | 48 | | 30 | 16 | | 31 | 6 | | 32 | 22 | | 33 | 7 | | 34 | 44 | | 35 | 5 | | 36 | 10 |
| |
| 96.27% | Passive voice overuse | Target: ≤2% passive sentences | | passiveCount | 2 | | totalSentences | 78 | | matches | | |
| 100.00% | Past progressive (was/were + -ing) overuse | Target: ≤2% past progressive verbs | | pastProgressiveCount | 0 | | totalVerbs | 154 | | matches | (empty) | |
| 0.00% | Em-dash & semicolon overuse | Target: ≤2% sentences with em-dashes/semicolons | | emDashCount | 8 | | semicolonCount | 0 | | flaggedSentences | 7 | | totalSentences | 84 | | ratio | 0.083 | | matches | | 0 | "She'd done her homework on him—Seville, the NHS, the quiet dismissal that the records buried three layers deep." | | 1 | "Warm brown eyes, wide with something that wasn't quite fear—more like calculation, like a man deciding how much she could be allowed to see." | | 2 | "Below her the air pushed up warm and wrong, carrying smells she couldn't place—copper, woodsmoke, something floral and rotten underneath, like lilies left too long in a vase." | | 3 | "The tile gave way to bare earth shored with timber, then to walls that looked carved rather than built, smooth and seamless, lit by lamps that held no flame she could identify—just a cold green glow, the colour of that neon sign, pooling in iron cages." | | 4 | "The crowd moved through it all—hooded, masked, some not wearing faces she could look at directly without her eyes sliding away." | | 5 | "She understood that the way she understood the green light and the floating scale—not with her reason but with the older part of her that had been screaming since the top of the stairs." | | 6 | "He shook his head once—*don't*—and turned to slip between two stalls, toward a dark archway at the far end of the platform." |
| |
| 100.00% | Purple prose (modifier overload) | Target: <4% adverbs, <2% -ly adverbs, no adj stacking | | wordCount | 970 | | adjectiveStacks | 0 | | stackExamples | (empty) | | adverbCount | 23 | | adverbRatio | 0.023711340206185566 | | lyAdverbCount | 2 | | lyAdverbRatio | 0.002061855670103093 | |
| 100.00% | Repeated phrase echo | Target: ≤20% sentences with echoes (window: 2) | | totalSentences | 84 | | echoCount | 0 | | echoWords | (empty) | |
| 100.00% | Sentence length variance | Target: CV ≥0.4 for sentence word counts | | totalSentences | 84 | | mean | 12.82 | | std | 11.09 | | cv | 0.865 | | sampleLengths | | 0 | 23 | | 1 | 23 | | 2 | 18 | | 3 | 7 | | 4 | 2 | | 5 | 3 | | 6 | 3 | | 7 | 8 | | 8 | 25 | | 9 | 45 | | 10 | 13 | | 11 | 5 | | 12 | 6 | | 13 | 17 | | 14 | 2 | | 15 | 3 | | 16 | 18 | | 17 | 13 | | 18 | 5 | | 19 | 3 | | 20 | 2 | | 21 | 24 | | 22 | 17 | | 23 | 2 | | 24 | 6 | | 25 | 14 | | 26 | 1 | | 27 | 3 | | 28 | 23 | | 29 | 7 | | 30 | 8 | | 31 | 4 | | 32 | 9 | | 33 | 28 | | 34 | 16 | | 35 | 11 | | 36 | 6 | | 37 | 3 | | 38 | 27 | | 39 | 3 | | 40 | 3 | | 41 | 3 | | 42 | 10 | | 43 | 46 | | 44 | 26 | | 45 | 1 | | 46 | 24 | | 47 | 5 | | 48 | 27 | | 49 | 19 |
| |
| 81.35% | Sentence opener variety | Target: ≥60% unique sentence openers | | consecutiveRepeats | 5 | | diversityRatio | 0.5238095238095238 | | totalSentences | 84 | | uniqueOpeners | 44 | |
| 46.95% | Adverb-first sentence starts | Target: ≥3% sentences starting with an adverb | | adverbCount | 1 | | totalSentences | 71 | | matches | | 0 | "Then he was gone, ducking" |
| | ratio | 0.014 | |
| 90.42% | Pronoun-first sentence starts | Target: ≤30% sentences starting with a pronoun | | pronounCount | 23 | | totalSentences | 71 | | matches | | 0 | "Her voice tore against the" | | 1 | "He didn't stop." | | 2 | "They never did." | | 3 | "She'd been watching the bar" | | 4 | "Her shoulder cracked against brick." | | 5 | "She pushed off it without" | | 6 | "She'd done her homework on" | | 7 | "she shouted, hauling herself over" | | 8 | "He glanced back." | | 9 | "She stopped at the lip" | | 10 | "Her watch read 11:52." | | 11 | "She'd seen it in his" | | 12 | "He'd gone forward." | | 13 | "She'd lost him." | | 14 | "It was a child's voice" | | 15 | "She reached for the warrant" | | 16 | "She understood that the way" | | 17 | "It crumpled with something like" | | 18 | "He shook his head once—*don't*—and" | | 19 | "She looked at the rain-cold" |
| | ratio | 0.324 | |
| 58.59% | Subject-first sentence starts | Target: ≤72% sentences starting with a subject | | subjectCount | 57 | | totalSentences | 71 | | matches | | 0 | "The rain came down in" | | 1 | "Detective Harlow Quinn ran with" | | 2 | "Her voice tore against the" | | 3 | "He didn't stop." | | 4 | "They never did." | | 5 | "She'd been watching the bar" | | 6 | "The Raven's Nest, that green" | | 7 | "Tonight she'd followed Tomás Herrera" | | 8 | "Quinn hit the mouth of" | | 9 | "Her shoulder cracked against brick." | | 10 | "She pushed off it without" | | 11 | "Herrera vaulted a low fence" | | 12 | "Patron of travellers." | | 13 | "She'd done her homework on" | | 14 | "she shouted, hauling herself over" | | 15 | "The metal bit her palms." | | 16 | "He glanced back." | | 17 | "The gap opened onto a" | | 18 | "A Tube station." | | 19 | "Herrera's footsteps echoed down into" |
| | ratio | 0.803 | |
| 0.00% | Subordinate conjunction sentence starts | Target: ≥2% sentences starting with a subordinating conjunction | | subConjCount | 0 | | totalSentences | 71 | | matches | (empty) | | ratio | 0 | |
| 0.00% | Technical jargon density | Target: ≤6% sentences with technical-jargon patterns | | analyzedSentences | 35 | | technicalSentenceCount | 7 | | matches | | 0 | "The rain came down in sheets, turning the Camden pavement into a black mirror that swallowed the streetlights and spat them back fractured." | | 1 | "Warm brown eyes, wide with something that wasn't quite fear—more like calculation, like a man deciding how much she could be allowed to see." | | 2 | "The tile gave way to bare earth shored with timber, then to walls that looked carved rather than built, smooth and seamless, lit by lamps that held no flame she…" | | 3 | "Tables heaped with glass jars that glowed and twitched, with bones laid out like cutlery, with bottles of liquid that moved against the tilt of their containers…" | | 4 | "The crowd moved through it all—hooded, masked, some not wearing faces she could look at directly without her eyes sliding away." | | 5 | "The noise hit her a beat late, as though the stairs had held it back: bartering voices in languages that scraped the inside of her skull, the chime of coins tha…" | | 6 | "She understood that the way she understood the green light and the floating scale—not with her reason but with the older part of her that had been screaming sin…" |
| |
| 100.00% | Useless dialogue additions | Target: ≤5% dialogue tags with trailing filler fragments | | totalTags | 7 | | uselessAdditionCount | 0 | | matches | (empty) | |
| 73.08% | Dialogue tag variety (said vs. fancy) | Target: ≤10% fancy dialogue tags | | totalTags | 1 | | fancyCount | 1 | | fancyTags | | | dialogueSentences | 13 | | tagDensity | 0.077 | | leniency | 0.154 | | rawRatio | 1 | | effectiveRatio | 0.154 | |