| 100.00% | Adverbs in dialogue tags | Target: ≤10% dialogue tags with adverbs | | totalTags | 22 | | adverbTagCount | 1 | | adverbTags | | 0 | "Fenwick glanced back [back]" |
| | dialogueSentences | 52 | | tagDensity | 0.423 | | leniency | 0.846 | | rawRatio | 0.045 | | effectiveRatio | 0.038 | |
| 96.97% | AI-ism adverb frequency | Target: <2% AI-ism adverbs (58 tracked) | | wordCount | 1649 | | 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) | |
| 66.65% | AI-ism word frequency | Target: <2% AI-ism words (290 tracked) | | wordCount | 1649 | | totalAiIsms | 11 | | found | | | highlights | | 0 | "measured" | | 1 | "perfect" | | 2 | "weight" | | 3 | "mechanical" | | 4 | "crystal" | | 5 | "etched" | | 6 | "magnetic" | | 7 | "scanned" | | 8 | "trembled" |
| |
| 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 | 94 | | matches | (empty) | |
| 82.07% | Filter word density | Target: ≤3% sentences with filter/hedge words | | filterCount | 2 | | hedgeCount | 2 | | narrationSentences | 94 | | filterMatches | | | hedgeMatches | | |
| 100.00% | Gibberish response detection | Target: ≤1% gibberish-like sentences (hard fail if a sentence exceeds 800 words) | | analyzedSentences | 122 | | 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 | 3 | | markdownWords | 6 | | totalWords | 1659 | | ratio | 0.004 | | matches | | 0 | "clean" | | 1 | "through" | | 2 | "trinket, animal, origin unknown" |
| |
| 100.00% | Missing dialogue indicators (quotation marks) | Target: ≤10% speech attributions without quotation marks | | totalAttributions | 17 | | unquotedAttributions | 0 | | matches | (empty) | |
| 66.67% | Name drop frequency | Target: ≤1.0 per-name mentions per 100 words | | totalMentions | 36 | | wordCount | 1077 | | uniqueNames | 13 | | maxNameDensity | 1.02 | | worstName | "Quinn" | | maxWindowNameDensity | 3 | | worstWindowName | "Quinn" | | discoveredNames | | Camden | 1 | | High | 1 | | Street | 1 | | Putney | 1 | | Grey-bearded | 1 | | Quinn | 11 | | Fenwick | 6 | | Eva | 9 | | Victorian | 1 | | Market | 1 | | Bethnal | 1 | | Green | 1 | | Morris | 1 |
| | persons | | 0 | "Quinn" | | 1 | "Fenwick" | | 2 | "Eva" | | 3 | "Market" | | 4 | "Morris" |
| | places | | 0 | "Camden" | | 1 | "High" | | 2 | "Street" | | 3 | "Putney" | | 4 | "Bethnal" |
| | globalScore | 0.989 | | windowScore | 0.667 | |
| 100.00% | Narrator intent-glossing | Target: ≤2% narration sentences with intent-glossing patterns | | analyzedSentences | 60 | | glossingSentenceCount | 1 | | matches | | 0 | "looked like a man recalculating a mortgag" |
| |
| 100.00% | "Not X but Y" pattern overuse | Target: ≤1 "not X but Y" per 1000 words | | totalMatches | 0 | | per1kWords | 0 | | wordCount | 1659 | | matches | (empty) | |
| 100.00% | Overuse of "that" (subordinate clause padding) | Target: ≤2% sentences with "that" clauses | | thatCount | 0 | | totalSentences | 122 | | matches | (empty) | |
| 100.00% | Paragraph length variance | Target: CV ≥0.5 for paragraph word counts | | totalParagraphs | 51 | | mean | 32.53 | | std | 26.36 | | cv | 0.81 | | sampleLengths | | 0 | 22 | | 1 | 78 | | 2 | 85 | | 3 | 34 | | 4 | 33 | | 5 | 41 | | 6 | 3 | | 7 | 22 | | 8 | 3 | | 9 | 79 | | 10 | 18 | | 11 | 40 | | 12 | 6 | | 13 | 53 | | 14 | 7 | | 15 | 80 | | 16 | 24 | | 17 | 13 | | 18 | 6 | | 19 | 51 | | 20 | 14 | | 21 | 2 | | 22 | 69 | | 23 | 5 | | 24 | 51 | | 25 | 1 | | 26 | 32 | | 27 | 12 | | 28 | 35 | | 29 | 21 | | 30 | 56 | | 31 | 5 | | 32 | 44 | | 33 | 5 | | 34 | 40 | | 35 | 15 | | 36 | 67 | | 37 | 69 | | 38 | 11 | | 39 | 1 | | 40 | 49 | | 41 | 50 | | 42 | 103 | | 43 | 70 | | 44 | 5 | | 45 | 27 | | 46 | 16 | | 47 | 16 | | 48 | 13 | | 49 | 37 |
| |
| 79.13% | Passive voice overuse | Target: ≤2% passive sentences | | passiveCount | 7 | | totalSentences | 94 | | matches | | 0 | "was found" | | 1 | "been sealed" | | 2 | "was carpeted" | | 3 | "was disturbed" | | 4 | "was buried" | | 5 | "was etched" | | 6 | "being asked" |
| |
| 87.01% | Past progressive (was/were + -ing) overuse | Target: ≤2% past progressive verbs | | pastProgressiveCount | 3 | | totalVerbs | 177 | | matches | | 0 | "wasn't pointing" | | 1 | "was pointing" | | 2 | "were checking" |
| |
| 0.00% | Em-dash & semicolon overuse | Target: ≤2% sentences with em-dashes/semicolons | | emDashCount | 11 | | semicolonCount | 0 | | flaggedSentences | 9 | | totalSentences | 122 | | ratio | 0.074 | | matches | | 0 | "The air changed halfway down — the flat, recycled cold of the street above giving way to something older, mineral, tasting of wet chalk and rust." | | 1 | "Her watch — a worn leather strap on her left wrist, older than some of the officers she supervised — read 11:47." | | 2 | "The platform was carpeted in decades of dust — grey, felt-thick, lying over every surface like snowfall in a room where no one had walked." | | 3 | "Up close, the coat was black with dried blood, but the wound itself had bled inward — the wool was saturated, and the skin around the puncture was pallid, as if the bleeding had stopped the instant his heart did." | | 4 | "A young woman stood there — small, five-foot-nothing in flat shoes, drowning in a forensic suit several sizes too large." | | 5 | "\"Because I asked to see them, and your sergeant is a kind man, and because—\" Eva paused, choosing honesty over tact, \"—because I don't think they're from anywhere you're going to find on a map.\"" | | 6 | "The face was etched with sigils — concentric rings of characters in no alphabet she knew, fine as engraver's work." | | 7 | "\"The Market moves every full moon. New site, no warning. And the survey crew that found the body—\" she nodded at the logbook in Fenwick's hand, \"—were checking this tunnel because of a proposed freight link. Which means someone flagged this station as viable. Which means someone knew the Market would be here.\"" | | 8 | "Three years ago — the memory rose now like water filling a hold — she had knelt beside her partner in a stairwell in Bethnal Green, DS Morris cold and neat as a laid-out table, and in his pocket she had found a disc of carved yellowed bone that the lab logged as *trinket, animal, origin unknown*." |
| |
| 100.00% | Purple prose (modifier overload) | Target: <4% adverbs, <2% -ly adverbs, no adj stacking | | wordCount | 1012 | | adjectiveStacks | 0 | | stackExamples | (empty) | | adverbCount | 20 | | adverbRatio | 0.019762845849802372 | | lyAdverbCount | 0 | | lyAdverbRatio | 0 | |
| 100.00% | Repeated phrase echo | Target: ≤20% sentences with echoes (window: 2) | | totalSentences | 122 | | echoCount | 0 | | echoWords | (empty) | |
| 100.00% | Sentence length variance | Target: CV ≥0.4 for sentence word counts | | totalSentences | 122 | | mean | 13.6 | | std | 11.83 | | cv | 0.87 | | sampleLengths | | 0 | 22 | | 1 | 13 | | 2 | 26 | | 3 | 12 | | 4 | 2 | | 5 | 2 | | 6 | 23 | | 7 | 22 | | 8 | 11 | | 9 | 22 | | 10 | 6 | | 11 | 12 | | 12 | 12 | | 13 | 12 | | 14 | 22 | | 15 | 18 | | 16 | 2 | | 17 | 2 | | 18 | 11 | | 19 | 10 | | 20 | 14 | | 21 | 17 | | 22 | 3 | | 23 | 18 | | 24 | 4 | | 25 | 3 | | 26 | 25 | | 27 | 2 | | 28 | 25 | | 29 | 3 | | 30 | 2 | | 31 | 5 | | 32 | 17 | | 33 | 5 | | 34 | 13 | | 35 | 14 | | 36 | 26 | | 37 | 6 | | 38 | 19 | | 39 | 10 | | 40 | 24 | | 41 | 2 | | 42 | 5 | | 43 | 29 | | 44 | 40 | | 45 | 7 | | 46 | 4 | | 47 | 19 | | 48 | 5 | | 49 | 8 |
| |
| 66.39% | Sentence opener variety | Target: ≥60% unique sentence openers | | consecutiveRepeats | 13 | | diversityRatio | 0.4628099173553719 | | totalSentences | 121 | | uniqueOpeners | 56 | |
| 86.58% | Adverb-first sentence starts | Target: ≥3% sentences starting with an adverb | | adverbCount | 2 | | totalSentences | 77 | | matches | | 0 | "Just the drip of water" | | 1 | "Just the man, lying in" |
| | ratio | 0.026 | |
| 100.00% | Pronoun-first sentence starts | Target: ≤30% sentences starting with a pronoun | | pronounCount | 19 | | totalSentences | 77 | | matches | | 0 | "Her watch — a worn" | | 1 | "She noted it out of" | | 2 | "She'd been in a briefing" | | 3 | "He was on his back" | | 4 | "She swept her torch along" | | 5 | "She rose and moved along" | | 6 | "She had seen a thousand" | | 7 | "They didn't do that." | | 8 | "It had stopped at 3:33." | | 9 | "He looked like a man" | | 10 | "She tucked a curl behind" | | 11 | "It was brass, small enough" | | 12 | "It was pointing steadily, unerringly," | | 13 | "she nodded at the logbook" | | 14 | "She turned to face the" | | 15 | "She had spent three years" | | 16 | "she said, without turning around" | | 17 | "She raised the compass bag" | | 18 | "It wasn't a question." |
| | ratio | 0.247 | |
| 83.38% | Subject-first sentence starts | Target: ≤72% sentences starting with a subject | | subjectCount | 58 | | totalSentences | 77 | | matches | | 0 | "The crime scene was forty" | | 1 | "Quinn descended at a measured" | | 2 | "The air changed halfway down" | | 3 | "Her watch — a worn" | | 4 | "She noted it out of" | | 5 | "The gate log said the" | | 6 | "She'd been in a briefing" | | 7 | "The abandoned station had been" | | 8 | "He was on his back" | | 9 | "A face that had been" | | 10 | "Fenwick, the CSI, met her" | | 11 | "Fenwick glanced back at the" | | 12 | "The platform was carpeted in" | | 13 | "Quinn crouched at the edge" | | 14 | "She swept her torch along" | | 15 | "The dust lay undisturbed for" | | 16 | "She rose and moved along" | | 17 | "She had seen a thousand" | | 18 | "They didn't do that." | | 19 | "The watch on his wrist" |
| | ratio | 0.753 | |
| 100.00% | Subordinate conjunction sentence starts | Target: ≥2% sentences starting with a subordinating conjunction | | subConjCount | 2 | | totalSentences | 77 | | matches | | 0 | "By the time her boots" | | 1 | "Now it was a pocket" |
| | ratio | 0.026 | |
| 84.94% | Technical jargon density | Target: ≤6% sentences with technical-jargon patterns | | analyzedSentences | 37 | | technicalSentenceCount | 3 | | matches | | 0 | "Around the body, the dust was disturbed in a perfect, crisp oval, as though someone had drawn a line around him and vacuumed the interior." | | 1 | "Up close, the coat was black with dried blood, but the wound itself had bled inward — the wool was saturated, and the skin around the puncture was pallid, as if…" | | 2 | "The watch on his wrist was a heavy mechanical chronometer, the kind that cost more than her annual salary." |
| |
| 100.00% | Useless dialogue additions | Target: ≤5% dialogue tags with trailing filler fragments | | totalTags | 22 | | uselessAdditionCount | 1 | | matches | | 0 | "she said, without turning around" |
| |
| 100.00% | Dialogue tag variety (said vs. fancy) | Target: ≤10% fancy dialogue tags | | totalTags | 10 | | fancyCount | 0 | | fancyTags | (empty) | | dialogueSentences | 52 | | tagDensity | 0.192 | | leniency | 0.385 | | rawRatio | 0 | | effectiveRatio | 0 | |