| 100.00% | Adverbs in dialogue tags | Target: ≤10% dialogue tags with adverbs | | totalTags | 3 | | adverbTagCount | 0 | | adverbTags | (empty) | | dialogueSentences | 12 | | tagDensity | 0.25 | | leniency | 0.5 | | rawRatio | 0 | | effectiveRatio | 0 | |
| 100.00% | AI-ism adverb frequency | Target: <2% AI-ism adverbs (58 tracked) | | wordCount | 1413 | | 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) | |
| 89.38% | AI-ism word frequency | Target: <2% AI-ism words (290 tracked) | | wordCount | 1413 | | totalAiIsms | 3 | | found | | | highlights | | 0 | "electric" | | 1 | "velvet" | | 2 | "glint" |
| |
| 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) | |
| 100.00% | Filter word density | Target: ≤3% sentences with filter/hedge words | | filterCount | 0 | | hedgeCount | 1 | | narrationSentences | 94 | | filterMatches | (empty) | | hedgeMatches | | |
| 100.00% | Gibberish response detection | Target: ≤1% gibberish-like sentences (hard fail if a sentence exceeds 800 words) | | analyzedSentences | 103 | | gibberishSentences | 0 | | adjustedGibberishSentences | 0 | | longSentenceCount | 0 | | runOnParagraphCount | 0 | | giantParagraphCount | 0 | | wordSaladCount | 0 | | repetitionLoopCount | 0 | | controlTokenCount | 0 | | repeatedSegmentCount | 0 | | maxSentenceWordsSeen | 61 | | ratio | 0 | | matches | (empty) | |
| 100.00% | Markdown formatting overuse | Target: ≤5% words in markdown formatting | | markdownSpans | 0 | | markdownWords | 0 | | totalWords | 1421 | | ratio | 0 | | matches | (empty) | |
| 100.00% | Missing dialogue indicators (quotation marks) | Target: ≤10% speech attributions without quotation marks | | totalAttributions | 8 | | unquotedAttributions | 0 | | matches | (empty) | |
| 100.00% | Name drop frequency | Target: ≤1.0 per-name mentions per 100 words | | totalMentions | 45 | | wordCount | 1357 | | uniqueNames | 20 | | maxNameDensity | 0.66 | | worstName | "Quinn" | | maxWindowNameDensity | 2 | | worstWindowName | "Morris" | | discoveredNames | | Camden | 2 | | High | 1 | | Street | 1 | | Quinn | 9 | | Raven | 1 | | Nest | 1 | | Soho | 1 | | Lock | 1 | | Saint | 2 | | Christopher | 1 | | Herrera | 7 | | Stand | 1 | | Harlow | 1 | | Monday | 1 | | Service | 2 | | Morris | 5 | | Tube | 1 | | Met | 1 | | Three | 3 | | Closed | 3 |
| | persons | | 0 | "Quinn" | | 1 | "Raven" | | 2 | "Saint" | | 3 | "Christopher" | | 4 | "Herrera" | | 5 | "Stand" | | 6 | "Morris" | | 7 | "Met" | | 8 | "Closed" |
| | places | | 0 | "Camden" | | 1 | "High" | | 2 | "Street" | | 3 | "Soho" | | 4 | "Lock" |
| | globalScore | 1 | | windowScore | 1 | |
| 100.00% | Narrator intent-glossing | Target: ≤2% narration sentences with intent-glossing patterns | | analyzedSentences | 69 | | glossingSentenceCount | 0 | | matches | (empty) | |
| 59.25% | "Not X but Y" pattern overuse | Target: ≤1 "not X but Y" per 1000 words | | totalMatches | 2 | | per1kWords | 1.407 | | wordCount | 1421 | | matches | | 0 | "not a foot chase, but her body fell into the old drill anyway" | | 1 | "Not electric light — this moved, breathed, guttered like candlelight but burned green" |
| |
| 100.00% | Overuse of "that" (subordinate clause padding) | Target: ≤2% sentences with "that" clauses | | thatCount | 1 | | totalSentences | 103 | | matches | | |
| 100.00% | Paragraph length variance | Target: CV ≥0.5 for paragraph word counts | | totalParagraphs | 41 | | mean | 34.66 | | std | 29.66 | | cv | 0.856 | | sampleLengths | | 0 | 3 | | 1 | 39 | | 2 | 82 | | 3 | 3 | | 4 | 52 | | 5 | 72 | | 6 | 6 | | 7 | 7 | | 8 | 72 | | 9 | 64 | | 10 | 37 | | 11 | 23 | | 12 | 40 | | 13 | 24 | | 14 | 74 | | 15 | 26 | | 16 | 14 | | 17 | 8 | | 18 | 91 | | 19 | 48 | | 20 | 83 | | 21 | 33 | | 22 | 7 | | 23 | 1 | | 24 | 30 | | 25 | 28 | | 26 | 1 | | 27 | 13 | | 28 | 3 | | 29 | 23 | | 30 | 110 | | 31 | 13 | | 32 | 38 | | 33 | 74 | | 34 | 11 | | 35 | 27 | | 36 | 10 | | 37 | 14 | | 38 | 85 | | 39 | 27 | | 40 | 5 |
| |
| 86.60% | Passive voice overuse | Target: ≤2% passive sentences | | passiveCount | 5 | | totalSentences | 94 | | matches | | 0 | "was gone" | | 1 | "been fenced" | | 2 | "been peeled" | | 3 | "were filmed" | | 4 | "been told" | | 5 | "been filed" |
| |
| 17.35% | Past progressive (was/were + -ing) overuse | Target: ≤2% past progressive verbs | | pastProgressiveCount | 6 | | totalVerbs | 219 | | matches | | 0 | "was walking" | | 1 | "was sprinting" | | 2 | "was coming" | | 3 | "was seeing" | | 4 | "was selling" | | 5 | "was weighing" |
| |
| 0.00% | Em-dash & semicolon overuse | Target: ≤2% sentences with em-dashes/semicolons | | emDashCount | 8 | | semicolonCount | 2 | | flaggedSentences | 9 | | totalSentences | 103 | | ratio | 0.087 | | matches | | 0 | "One moment he was walking north up Camden High Street with his collar turned against the rain, unhurried, a man with nowhere to be; the next he was sprinting, and Quinn went after him before she'd decided to move." | | 1 | "She'd dressed for a surveillance shift, not a foot chase, but her body fell into the old drill anyway — elbows in, breath counted, eyes on the Saint Christopher medallion bouncing against Herrera's chest." | | 2 | "A taxi's tyres hissed; the driver laid on the horn." | | 3 | "Through — sideways, into a gap where the hoarding had been peeled back like a tin lid, and the chain hung slack on one post where it hadn't a moment ago." | | 4 | "Ahead and below, a dead escalator dropped away into the earth, and from somewhere under it came a sound that didn't belong to any derelict building — a murmur, layered, like a crowd heard through a wall." | | 5 | "The smell changed as she descended — wet concrete giving ground to something resinous, something burnt-sweet, and under that, oranges." | | 6 | "Not electric light — this moved, breathed, guttered like candlelight but burned green and gold and a blue she had no name for." | | 7 | "The big man took it between finger and thumb and bit down, and something in his face shifted — approval, maybe, or appetite." | | 8 | "Heat first — the press of too many bodies under too little ground — then the light, green and gold and that nameless blue, crawling over stalls crammed into a tunnel platform that ran further than the architecture allowed." |
| |
| 100.00% | Purple prose (modifier overload) | Target: <4% adverbs, <2% -ly adverbs, no adj stacking | | wordCount | 1358 | | adjectiveStacks | 0 | | stackExamples | (empty) | | adverbCount | 29 | | adverbRatio | 0.021354933726067747 | | lyAdverbCount | 0 | | lyAdverbRatio | 0 | |
| 100.00% | Repeated phrase echo | Target: ≤20% sentences with echoes (window: 2) | | totalSentences | 103 | | echoCount | 0 | | echoWords | (empty) | |
| 100.00% | Sentence length variance | Target: CV ≥0.4 for sentence word counts | | totalSentences | 103 | | mean | 13.8 | | std | 11.65 | | cv | 0.845 | | sampleLengths | | 0 | 3 | | 1 | 39 | | 2 | 8 | | 3 | 41 | | 4 | 17 | | 5 | 3 | | 6 | 13 | | 7 | 3 | | 8 | 10 | | 9 | 4 | | 10 | 25 | | 11 | 13 | | 12 | 6 | | 13 | 15 | | 14 | 10 | | 15 | 34 | | 16 | 3 | | 17 | 4 | | 18 | 6 | | 19 | 7 | | 20 | 4 | | 21 | 15 | | 22 | 3 | | 23 | 6 | | 24 | 4 | | 25 | 23 | | 26 | 17 | | 27 | 6 | | 28 | 10 | | 29 | 32 | | 30 | 12 | | 31 | 4 | | 32 | 4 | | 33 | 2 | | 34 | 31 | | 35 | 13 | | 36 | 10 | | 37 | 7 | | 38 | 23 | | 39 | 1 | | 40 | 9 | | 41 | 10 | | 42 | 14 | | 43 | 8 | | 44 | 23 | | 45 | 6 | | 46 | 37 | | 47 | 10 | | 48 | 16 | | 49 | 14 |
| |
| 57.28% | Sentence opener variety | Target: ≥60% unique sentence openers | | consecutiveRepeats | 11 | | diversityRatio | 0.4077669902912621 | | totalSentences | 103 | | uniqueOpeners | 42 | |
| 74.91% | Adverb-first sentence starts | Target: ≥3% sentences starting with an adverb | | adverbCount | 2 | | totalSentences | 89 | | matches | | 0 | "Then the crowd took him," | | 1 | "Then he pulled the black" |
| | ratio | 0.022 | |
| 100.00% | Pronoun-first sentence starts | Target: ≤30% sentences starting with a pronoun | | pronounCount | 25 | | totalSentences | 89 | | matches | | 0 | "Her own fault." | | 1 | "He didn't look back." | | 2 | "He ran the way he" | | 3 | "He vaulted a chained-up stall" | | 4 | "She'd dressed for a surveillance" | | 5 | "Her radio crackled at her" | | 6 | "She thumbed it off." | | 7 | "Her DCI's voice sat in" | | 8 | "He went through them." | | 9 | "It skittered across the pavement" | | 10 | "She pocketed it and went" | | 11 | "Her phone torch cut a" | | 12 | "Her voice came back off" | | 13 | "She went down the frozen" | | 14 | "He held up a bone" | | 15 | "He said it flat, the" | | 16 | "His eyes were filmed over" | | 17 | "Her hand was already in" | | 18 | "She'd forgotten it was there." | | 19 | "She'd carried it three years," |
| | ratio | 0.281 | |
| 72.36% | Subject-first sentence starts | Target: ≤72% sentences starting with a subject | | subjectCount | 69 | | totalSentences | 89 | | matches | | 0 | "Herrera broke first." | | 1 | "Tonight she'd tailed the medic" | | 2 | "Her own fault." | | 3 | "A shop window, a bad" | | 4 | "A bus swept past and" | | 5 | "He didn't look back." | | 6 | "He ran the way he" | | 7 | "He vaulted a chained-up stall" | | 8 | "Quinn's boots hammered the wet" | | 9 | "Rain ran off her cropped" | | 10 | "She'd dressed for a surveillance" | | 11 | "Saint of travellers." | | 12 | "The irony wrote itself." | | 13 | "Her radio crackled at her" | | 14 | "She thumbed it off." | | 15 | "Her DCI's voice sat in" | | 16 | "The file's closed." | | 17 | "Herrera cut left across the" | | 18 | "A taxi's tyres hissed; the" | | 19 | "Herrera's hand slapped the bonnet" |
| | ratio | 0.775 | |
| 0.00% | Subordinate conjunction sentence starts | Target: ≥2% sentences starting with a subordinating conjunction | | subConjCount | 0 | | totalSentences | 89 | | matches | (empty) | | ratio | 0 | |
| 60.44% | Technical jargon density | Target: ≤6% sentences with technical-jargon patterns | | analyzedSentences | 52 | | technicalSentenceCount | 6 | | matches | | 0 | "Three weeks of the green neon over the Raven's Nest, of faces that went in through the front and never came out, of the bookshelf in the back room that swung on…" | | 1 | "Herrera's hand slapped the bonnet and he was gone again, up the slope towards the old station, the one behind the hoardings that had been fenced off since befor…" | | 2 | "A disc of bone, yellowed, the size of a two-pound coin, carved with a knot of lines that hurt to look at straight." | | 3 | "Ahead and below, a dead escalator dropped away into the earth, and from somewhere under it came a sound that didn't belong to any derelict building — a murmur, …" | | 4 | "She'd rubbed it through her coat lining on the hard days until its carved knot of lines had gone smooth as worry-stone, and she had never once asked what it was…" | | 5 | "Heat first — the press of too many bodies under too little ground — then the light, green and gold and that nameless blue, crawling over stalls crammed into a t…" |
| |
| 0.00% | Useless dialogue additions | Target: ≤5% dialogue tags with trailing filler fragments | | totalTags | 3 | | uselessAdditionCount | 1 | | matches | | 0 | "He said, the way a medic tells a bystander the truth" |
| |
| 100.00% | Dialogue tag variety (said vs. fancy) | Target: ≤10% fancy dialogue tags | | totalTags | 2 | | fancyCount | 0 | | fancyTags | (empty) | | dialogueSentences | 12 | | tagDensity | 0.167 | | leniency | 0.333 | | rawRatio | 0 | | effectiveRatio | 0 | |