| 100.00% | Adverbs in dialogue tags | Target: ≤10% dialogue tags with adverbs | | totalTags | 12 | | adverbTagCount | 0 | | adverbTags | (empty) | | dialogueSentences | 20 | | tagDensity | 0.6 | | leniency | 1 | | rawRatio | 0 | | effectiveRatio | 0 | |
| 100.00% | AI-ism adverb frequency | Target: <2% AI-ism adverbs (58 tracked) | | wordCount | 1457 | | 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) | |
| 69.11% | AI-ism word frequency | Target: <2% AI-ism words (290 tracked) | | wordCount | 1457 | | totalAiIsms | 9 | | found | | | highlights | | 0 | "weight" | | 1 | "whisper" | | 2 | "footsteps" | | 3 | "grave" | | 4 | "familiar" | | 5 | "echoed" | | 6 | "clenching" | | 7 | "navigate" |
| |
| 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 | 115 | | matches | (empty) | |
| 100.00% | Filter word density | Target: ≤3% sentences with filter/hedge words | | filterCount | 1 | | hedgeCount | 1 | | narrationSentences | 115 | | filterMatches | | | hedgeMatches | | |
| 100.00% | Gibberish response detection | Target: ≤1% gibberish-like sentences (hard fail if a sentence exceeds 800 words) | | analyzedSentences | 123 | | 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 | 1451 | | ratio | 0.001 | | matches | | |
| 100.00% | Missing dialogue indicators (quotation marks) | Target: ≤10% speech attributions without quotation marks | | totalAttributions | 11 | | unquotedAttributions | 0 | | matches | (empty) | |
| 77.42% | Name drop frequency | Target: ≤1.0 per-name mentions per 100 words | | totalMentions | 56 | | wordCount | 1240 | | uniqueNames | 24 | | maxNameDensity | 1.45 | | worstName | "Quinn" | | maxWindowNameDensity | 2.5 | | worstWindowName | "Quinn" | | discoveredNames | | Harlow | 1 | | Quinn | 18 | | Tomás | 2 | | Herrera | 11 | | Wardour | 1 | | Street | 1 | | Brixton | 1 | | Peckham | 1 | | Raven | 1 | | Nest | 2 | | Saint | 2 | | Christopher | 2 | | Soho | 1 | | Tube | 1 | | Morris | 2 | | Bermondsey | 1 | | Metropolitan | 1 | | Police | 1 | | Glock | 1 | | Veil | 1 | | Market | 1 | | London | 1 | | Like | 1 | | Met | 1 |
| | persons | | 0 | "Harlow" | | 1 | "Quinn" | | 2 | "Tomás" | | 3 | "Herrera" | | 4 | "Raven" | | 5 | "Saint" | | 6 | "Christopher" | | 7 | "Morris" | | 8 | "Police" | | 9 | "Met" |
| | places | | 0 | "Wardour" | | 1 | "Street" | | 2 | "Brixton" | | 3 | "Soho" | | 4 | "Bermondsey" | | 5 | "London" |
| | globalScore | 0.774 | | windowScore | 0.833 | |
| 100.00% | Narrator intent-glossing | Target: ≤2% narration sentences with intent-glossing patterns | | analyzedSentences | 68 | | glossingSentenceCount | 0 | | matches | (empty) | |
| 100.00% | "Not X but Y" pattern overuse | Target: ≤1 "not X but Y" per 1000 words | | totalMatches | 1 | | per1kWords | 0.689 | | wordCount | 1451 | | matches | | 0 | "Not the body they'd found in the warehouse, but the man" |
| |
| 100.00% | Overuse of "that" (subordinate clause padding) | Target: ≤2% sentences with "that" clauses | | thatCount | 0 | | totalSentences | 123 | | matches | (empty) | |
| 100.00% | Paragraph length variance | Target: CV ≥0.5 for paragraph word counts | | totalParagraphs | 37 | | mean | 39.22 | | std | 20.99 | | cv | 0.535 | | sampleLengths | | 0 | 47 | | 1 | 43 | | 2 | 47 | | 3 | 52 | | 4 | 65 | | 5 | 21 | | 6 | 76 | | 7 | 16 | | 8 | 5 | | 9 | 57 | | 10 | 34 | | 11 | 31 | | 12 | 3 | | 13 | 68 | | 14 | 54 | | 15 | 51 | | 16 | 46 | | 17 | 1 | | 18 | 21 | | 19 | 32 | | 20 | 24 | | 21 | 28 | | 22 | 28 | | 23 | 39 | | 24 | 21 | | 25 | 15 | | 26 | 69 | | 27 | 52 | | 28 | 37 | | 29 | 70 | | 30 | 35 | | 31 | 52 | | 32 | 7 | | 33 | 74 | | 34 | 63 | | 35 | 52 | | 36 | 15 |
| |
| 96.11% | Passive voice overuse | Target: ≤2% passive sentences | | passiveCount | 3 | | totalSentences | 115 | | matches | | 0 | "was cracked" | | 1 | "being found" | | 2 | "were gone" |
| |
| 59.35% | Past progressive (was/were + -ing) overuse | Target: ≤2% past progressive verbs | | pastProgressiveCount | 5 | | totalVerbs | 237 | | matches | | 0 | "was watching" | | 1 | "was counting" | | 2 | "was breathing" | | 3 | "was already moving" | | 4 | "was walking" |
| |
| 26.71% | Em-dash & semicolon overuse | Target: ≤2% sentences with em-dashes/semicolons | | emDashCount | 6 | | semicolonCount | 0 | | flaggedSentences | 5 | | totalSentences | 123 | | ratio | 0.041 | | matches | | 0 | "She didn't look at the time so much as feel it—the weight of another night that wouldn't end clean." | | 1 | "The air changed immediately—thicker, warmer, smelling of ozone and something else, something organic and wrong, like wet earth after a fresh grave." | | 2 | "Music too—jazz, old and scratchy, coming from a phonograph that shouldn't work in a place with no power." | | 3 | "Children—actual children, Quinn's breath caught—ran between the stalls with baskets of mushrooms that steamed in the cold air." | | 4 | "Not the body they'd found in the warehouse, but the man—his laugh, the way he always saved her the last biscuit, the night before he died when he'd said something about doors that shouldn't be opened and Quinn had laughed and told him to stop reading ghost stories." |
| |
| 100.00% | Purple prose (modifier overload) | Target: <4% adverbs, <2% -ly adverbs, no adj stacking | | wordCount | 1250 | | adjectiveStacks | 0 | | stackExamples | (empty) | | adverbCount | 37 | | adverbRatio | 0.0296 | | lyAdverbCount | 6 | | lyAdverbRatio | 0.0048 | |
| 100.00% | Repeated phrase echo | Target: ≤20% sentences with echoes (window: 2) | | totalSentences | 123 | | echoCount | 0 | | echoWords | (empty) | |
| 100.00% | Sentence length variance | Target: CV ≥0.4 for sentence word counts | | totalSentences | 123 | | mean | 11.8 | | std | 9.54 | | cv | 0.808 | | sampleLengths | | 0 | 7 | | 1 | 22 | | 2 | 7 | | 3 | 11 | | 4 | 6 | | 5 | 14 | | 6 | 14 | | 7 | 9 | | 8 | 4 | | 9 | 2 | | 10 | 22 | | 11 | 19 | | 12 | 9 | | 13 | 9 | | 14 | 23 | | 15 | 3 | | 16 | 8 | | 17 | 35 | | 18 | 30 | | 19 | 5 | | 20 | 1 | | 21 | 2 | | 22 | 13 | | 23 | 8 | | 24 | 5 | | 25 | 14 | | 26 | 8 | | 27 | 10 | | 28 | 2 | | 29 | 2 | | 30 | 27 | | 31 | 8 | | 32 | 8 | | 33 | 5 | | 34 | 22 | | 35 | 18 | | 36 | 17 | | 37 | 5 | | 38 | 18 | | 39 | 11 | | 40 | 13 | | 41 | 3 | | 42 | 3 | | 43 | 1 | | 44 | 11 | | 45 | 3 | | 46 | 3 | | 47 | 5 | | 48 | 16 | | 49 | 17 |
| |
| 56.10% | Sentence opener variety | Target: ≥60% unique sentence openers | | consecutiveRepeats | 11 | | diversityRatio | 0.3902439024390244 | | totalSentences | 123 | | uniqueOpeners | 48 | |
| 100.00% | Adverb-first sentence starts | Target: ≥3% sentences starting with an adverb | | adverbCount | 5 | | totalSentences | 99 | | matches | | 0 | "Just a single word in" | | 1 | "Just her and the suspicion" | | 2 | "Instead, Quinn stepped off the" | | 3 | "Just kept counting coins, his" | | 4 | "Just a tiredness that went" |
| | ratio | 0.051 | |
| 78.59% | Pronoun-first sentence starts | Target: ≤30% sentences starting with a pronoun | | pronounCount | 35 | | totalSentences | 99 | | matches | | 0 | "Her boots hit puddles with" | | 1 | "She'd lost him three times" | | 2 | "She didn't look at the" | | 3 | "She'd found his name in" | | 4 | "She'd staked out the Raven's" | | 5 | "She'd followed him through Soho," | | 6 | "Her breath came fast, visible" | | 7 | "She'd left her radio in" | | 8 | "She stepped into the tunnel." | | 9 | "Her boots found the old" | | 10 | "She moved along it, hand" | | 11 | "They descended into darkness that" | | 12 | "She counted them." | | 13 | "She'd heard stories." | | 14 | "He wore a different coat" | | 15 | "He was counting coins, his" | | 16 | "She should have called for" | | 17 | "She should have stayed on" | | 18 | "He didn't flinch." | | 19 | "Her voice carried in the" |
| | ratio | 0.354 | |
| 71.11% | Subject-first sentence starts | Target: ≤72% sentences starting with a subject | | subjectCount | 77 | | totalSentences | 99 | | matches | | 0 | "The rain fell hard enough" | | 1 | "Detective Harlow Quinn pulled her" | | 2 | "Her boots hit puddles with" | | 3 | "The streetlamps on Wardour Street" | | 4 | "She'd lost him three times" | | 5 | "Each time, he'd doubled back" | | 6 | "Quinn checked her watch." | | 7 | "The leather strap was cracked" | | 8 | "She didn't look at the" | | 9 | "Herrera had been her best" | | 10 | "The paramedic who patched up" | | 11 | "She'd found his name in" | | 12 | "She'd staked out the Raven's" | | 13 | "She'd followed him through Soho," | | 14 | "The abandoned Tube station that" | | 15 | "Quinn stopped at the mouth" | | 16 | "Water dripped from the concrete" | | 17 | "Her breath came fast, visible" | | 18 | "She'd left her radio in" | | 19 | "The Metropolitan Police called it" |
| | ratio | 0.778 | |
| 100.00% | Subordinate conjunction sentence starts | Target: ≥2% sentences starting with a subordinating conjunction | | subConjCount | 2 | | totalSentences | 99 | | matches | | 0 | "Now he'd led her here." | | 1 | "Now she stood at the" |
| | ratio | 0.02 | |
| 8.93% | Technical jargon density | Target: ≤6% sentences with technical-jargon patterns | | analyzedSentences | 48 | | technicalSentenceCount | 9 | | matches | | 0 | "She'd followed him through Soho, past the closed sex shops and the last kebab place still serving, down streets that narrowed until the buildings seemed to lean…" | | 1 | "Music too—jazz, old and scratchy, coming from a phonograph that shouldn't work in a place with no power." | | 2 | "They descended into darkness that felt deliberate, like the dark was watching her." | | 3 | "Instead, Quinn stepped off the platform and into the market, her boots ringing against stone that felt wrong underfoot, like the ground was breathing." | | 4 | "He reached into his coat and withdrew a cigarette, lit it with a match that flared blue before settling to orange." | | 5 | "The shadowless man sharpened his whispering knife on a stone that sang." | | 6 | "Saint Christopher, patron of travelers, of lost causes, of journeys that shouldn't be taken." | | 7 | "Not the body they'd found in the warehouse, but the man—his laugh, the way he always saved her the last biscuit, the night before he died when he'd said somethi…" | | 8 | "But there was nowhere else to go, and Herrera was walking ahead with the certainty of a man who had made this journey before, and Quinn followed him into the ma…" |
| |
| 83.33% | Useless dialogue additions | Target: ≤5% dialogue tags with trailing filler fragments | | totalTags | 12 | | uselessAdditionCount | 1 | | matches | | 0 | "Herrera leaned, his medallion catching the lantern light" |
| |
| 100.00% | Dialogue tag variety (said vs. fancy) | Target: ≤10% fancy dialogue tags | | totalTags | 6 | | fancyCount | 1 | | fancyTags | | 0 | "Herrera continued (continue)" |
| | dialogueSentences | 20 | | tagDensity | 0.3 | | leniency | 0.6 | | rawRatio | 0.167 | | effectiveRatio | 0.1 | |