| 100.00% | Adverbs in dialogue tags | Target: ≤10% dialogue tags with adverbs | | totalTags | 4 | | adverbTagCount | 0 | | adverbTags | (empty) | | dialogueSentences | 11 | | tagDensity | 0.364 | | leniency | 0.727 | | rawRatio | 0 | | effectiveRatio | 0 | |
| 86.97% | AI-ism adverb frequency | Target: <2% AI-ism adverbs (58 tracked) | | wordCount | 1535 | | totalAiIsmAdverbs | 4 | | found | | | highlights | | 0 | "slowly" | | 1 | "gently" | | 2 | "very" | | 3 | "carefully" |
| |
| 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) | |
| 77.20% | AI-ism word frequency | Target: <2% AI-ism words (290 tracked) | | wordCount | 1535 | | totalAiIsms | 7 | | found | | | highlights | | 0 | "footsteps" | | 1 | "weight" | | 2 | "pulse" | | 3 | "sense of" |
| |
| 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 | 99 | | matches | (empty) | |
| 99.57% | Filter word density | Target: ≤3% sentences with filter/hedge words | | filterCount | 2 | | hedgeCount | 1 | | narrationSentences | 99 | | filterMatches | | | hedgeMatches | | |
| 100.00% | Gibberish response detection | Target: ≤1% gibberish-like sentences (hard fail if a sentence exceeds 800 words) | | analyzedSentences | 105 | | gibberishSentences | 0 | | adjustedGibberishSentences | 0 | | longSentenceCount | 0 | | runOnParagraphCount | 0 | | giantParagraphCount | 0 | | wordSaladCount | 0 | | repetitionLoopCount | 0 | | controlTokenCount | 0 | | repeatedSegmentCount | 0 | | maxSentenceWordsSeen | 68 | | ratio | 0 | | matches | (empty) | |
| 100.00% | Markdown formatting overuse | Target: ≤5% words in markdown formatting | | markdownSpans | 0 | | markdownWords | 0 | | totalWords | 1548 | | ratio | 0 | | matches | (empty) | |
| 100.00% | Missing dialogue indicators (quotation marks) | Target: ≤10% speech attributions without quotation marks | | totalAttributions | 6 | | unquotedAttributions | 0 | | matches | (empty) | |
| 100.00% | Name drop frequency | Target: ≤1.0 per-name mentions per 100 words | | totalMentions | 55 | | wordCount | 1513 | | uniqueNames | 30 | | maxNameDensity | 0.59 | | worstName | "Herrera" | | maxWindowNameDensity | 1 | | worstWindowName | "Herrera" | | discoveredNames | | Tomás | 1 | | Herrera | 9 | | Raven | 1 | | Nest | 1 | | Dean | 1 | | Street | 3 | | Old | 2 | | Compton | 1 | | Quinn | 8 | | Charing | 1 | | Cross | 1 | | Road | 3 | | Saint | 1 | | Christopher | 1 | | Cambridge | 1 | | Circus | 1 | | Tottenham | 1 | | Court | 1 | | Euston | 1 | | Camden | 2 | | High | 1 | | Tube | 1 | | Soho | 1 | | Dry | 1 | | February | 1 | | Whitechapel | 1 | | Harlow | 1 | | Morris | 2 | | London | 2 | | Three | 3 |
| | persons | | 0 | "Tomás" | | 1 | "Herrera" | | 2 | "Raven" | | 3 | "Quinn" | | 4 | "Saint" | | 5 | "Christopher" | | 6 | "Morris" |
| | places | | 0 | "Dean" | | 1 | "Street" | | 2 | "Old" | | 3 | "Compton" | | 4 | "Charing" | | 5 | "Cross" | | 6 | "Road" | | 7 | "Cambridge" | | 8 | "Tottenham" | | 9 | "Court" | | 10 | "Euston" | | 11 | "Camden" | | 12 | "High" | | 13 | "Soho" | | 14 | "Whitechapel" | | 15 | "London" | | 16 | "Three" |
| | globalScore | 1 | | windowScore | 1 | |
| 100.00% | Narrator intent-glossing | Target: ≤2% narration sentences with intent-glossing patterns | | analyzedSentences | 72 | | glossingSentenceCount | 0 | | matches | (empty) | |
| 100.00% | "Not X but Y" pattern overuse | Target: ≤1 "not X but Y" per 1000 words | | totalMatches | 0 | | per1kWords | 0 | | wordCount | 1548 | | matches | (empty) | |
| 100.00% | Overuse of "that" (subordinate clause padding) | Target: ≤2% sentences with "that" clauses | | thatCount | 1 | | totalSentences | 105 | | matches | | |
| 100.00% | Paragraph length variance | Target: CV ≥0.5 for paragraph word counts | | totalParagraphs | 35 | | mean | 44.23 | | std | 39.71 | | cv | 0.898 | | sampleLengths | | 0 | 17 | | 1 | 122 | | 2 | 88 | | 3 | 49 | | 4 | 2 | | 5 | 11 | | 6 | 139 | | 7 | 100 | | 8 | 57 | | 9 | 97 | | 10 | 45 | | 11 | 15 | | 12 | 6 | | 13 | 83 | | 14 | 36 | | 15 | 21 | | 16 | 3 | | 17 | 12 | | 18 | 2 | | 19 | 33 | | 20 | 14 | | 21 | 31 | | 22 | 71 | | 23 | 31 | | 24 | 13 | | 25 | 65 | | 26 | 106 | | 27 | 107 | | 28 | 19 | | 29 | 7 | | 30 | 3 | | 31 | 84 | | 32 | 48 | | 33 | 8 | | 34 | 3 |
| |
| 94.63% | Passive voice overuse | Target: ≤2% passive sentences | | passiveCount | 3 | | totalSentences | 99 | | matches | | 0 | "been taught" | | 1 | "been chased" | | 2 | "was built" |
| |
| 100.00% | Past progressive (was/were + -ing) overuse | Target: ≤2% past progressive verbs | | pastProgressiveCount | 3 | | totalVerbs | 229 | | matches | | 0 | "was ending" | | 1 | "was pushing" | | 2 | "were already fading" |
| |
| 0.00% | Em-dash & semicolon overuse | Target: ≤2% sentences with em-dashes/semicolons | | emDashCount | 12 | | semicolonCount | 1 | | flaggedSentences | 9 | | totalSentences | 105 | | ratio | 0.086 | | matches | | 0 | "23:12 by the worn leather watch on her left wrist, and he had the satchel with him — the same scuffed leather bag he carried everywhere, the one she'd bet her pension held sutures and scalpels and things no struck-off paramedic should be stitching into anybody." | | 1 | "She ran the way she'd been taught to run a long time ago — heel to toe, shoulders low, breath rationed into counts — and old drills carried her past the first burning in her lungs." | | 2 | "Once at Cambridge Circus, her fingers grazing the back of his jacket; once on Tottenham Court Road, where he slipped on the crown of the crossing and went down on one knee, and when he shoved himself up his sleeve rode back and she saw the long pale scar seamed along his left forearm." | | 3 | "There had been a version of her that would have called it in by now — that woman had a clean record and a partner, and both were three years gone." | | 4 | "He turned off Camden High Street into a service road without slowing, past lock gates and deadpub noise, and Quinn felt the ground change under her boots — cracked concrete, weeds, standing water — and understood a half-second before she saw it that the street was ending." | | 5 | "She got a fistful of jacket and swung him into the hoarding, and he twisted with a paramedic's economy — hips, elbow, dropping his weight — and something small spun out of his hand and skittered away into a puddle." | | 6 | "There was nothing behind it that she could see — only dark, and the sense of the dark looking back." | | 7 | "Morris's voice on the radio, static-chewed: Quinn, it's not — Harlow, the dark down here is — and then a sound she still played back at three in the morning, a sound like a crowd very far away, and then nothing at all." | | 8 | "Then the door made a sound like a key the size of a church turning over, and it opened onto a stairwell going down, and the cold came up it in a slow flood, and the market noise swelled with it — voices, the clink of glass, a creature's low churring that was almost, but not, a laugh." |
| |
| 100.00% | Purple prose (modifier overload) | Target: <4% adverbs, <2% -ly adverbs, no adj stacking | | wordCount | 1511 | | adjectiveStacks | 0 | | stackExamples | (empty) | | adverbCount | 47 | | adverbRatio | 0.031105228325612178 | | lyAdverbCount | 8 | | lyAdverbRatio | 0.005294506949040371 | |
| 100.00% | Repeated phrase echo | Target: ≤20% sentences with echoes (window: 2) | | totalSentences | 105 | | echoCount | 0 | | echoWords | (empty) | |
| 100.00% | Sentence length variance | Target: CV ≥0.4 for sentence word counts | | totalSentences | 105 | | mean | 14.74 | | std | 13.95 | | cv | 0.946 | | sampleLengths | | 0 | 17 | | 1 | 31 | | 2 | 49 | | 3 | 3 | | 4 | 29 | | 5 | 4 | | 6 | 6 | | 7 | 5 | | 8 | 46 | | 9 | 21 | | 10 | 8 | | 11 | 8 | | 12 | 14 | | 13 | 35 | | 14 | 2 | | 15 | 9 | | 16 | 2 | | 17 | 3 | | 18 | 26 | | 19 | 36 | | 20 | 9 | | 21 | 36 | | 22 | 29 | | 23 | 5 | | 24 | 54 | | 25 | 3 | | 26 | 8 | | 27 | 14 | | 28 | 16 | | 29 | 8 | | 30 | 11 | | 31 | 31 | | 32 | 7 | | 33 | 25 | | 34 | 3 | | 35 | 22 | | 36 | 47 | | 37 | 10 | | 38 | 26 | | 39 | 9 | | 40 | 10 | | 41 | 5 | | 42 | 6 | | 43 | 40 | | 44 | 4 | | 45 | 4 | | 46 | 25 | | 47 | 10 | | 48 | 11 | | 49 | 14 |
| |
| 74.29% | Sentence opener variety | Target: ≥60% unique sentence openers | | consecutiveRepeats | 7 | | diversityRatio | 0.4857142857142857 | | totalSentences | 105 | | uniqueOpeners | 51 | |
| 100.00% | Adverb-first sentence starts | Target: ≥3% sentences starting with an adverb | | adverbCount | 7 | | totalSentences | 92 | | matches | | 0 | "Twice she nearly had him." | | 1 | "Once at Cambridge Circus, her" | | 2 | "Then the steel door opened" | | 3 | "Slowly, she crouched over the" | | 4 | "Somewhere a bell." | | 5 | "Then the door made a" | | 6 | "Somewhere down there, Herrera's footsteps" |
| | ratio | 0.076 | |
| 85.22% | Pronoun-first sentence starts | Target: ≤30% sentences starting with a pronoun | | pronounCount | 31 | | totalSentences | 92 | | matches | | 0 | "He stood under the neon" | | 1 | "She picked him up on" | | 2 | "He crossed onto Dean Street," | | 3 | "Her voice cracked out flat" | | 4 | "He didn't stop." | | 5 | "He cut the corner into" | | 6 | "She ran the way she'd" | | 7 | "He used parked vans, took" | | 8 | "He never once let go" | | 9 | "Her radio sat dead weight" | | 10 | "She left the radio where" | | 11 | "They crossed Euston Road at" | | 12 | "He turned off Camden High" | | 13 | "She hit him at full" | | 14 | "She got a fistful of" | | 15 | "He looked at it." | | 16 | "He looked at her." | | 17 | "He slipped through the gap," | | 18 | "His accent curled the words," | | 19 | "His mouth pulled sideways." |
| | ratio | 0.337 | |
| 100.00% | Subject-first sentence starts | Target: ≤72% sentences starting with a subject | | subjectCount | 58 | | totalSentences | 92 | | matches | | 0 | "The rain had been falling" | | 1 | "Quinn had been watching the" | | 2 | "The green neon above the" | | 3 | "Herrera was careful." | | 4 | "Tonight he came out early." | | 5 | "He stood under the neon" | | 6 | "The look of a man" | | 7 | "She picked him up on" | | 8 | "He crossed onto Dean Street," | | 9 | "Her voice cracked out flat" | | 10 | "He didn't stop." | | 11 | "He cut the corner into" | | 12 | "She ran the way she'd" | | 13 | "Herrera ran like a man" | | 14 | "He used parked vans, took" | | 15 | "A Saint Christopher medallion swung" | | 16 | "He never once let go" | | 17 | "That told her something worth" | | 18 | "Her radio sat dead weight" | | 19 | "There had been a version" |
| | ratio | 0.63 | |
| 0.00% | Subordinate conjunction sentence starts | Target: ≥2% sentences starting with a subordinating conjunction | | subConjCount | 0 | | totalSentences | 92 | | matches | (empty) | | ratio | 0 | |
| 68.45% | Technical jargon density | Target: ≤6% sentences with technical-jargon patterns | | analyzedSentences | 48 | | technicalSentenceCount | 5 | | matches | | 0 | "A hole bored through one end, and carved into its face a lattice of interlocking curves that hurt to follow with the eye, the way a word repeated too many times…" | | 1 | "Body-warm, as if it had been in Herrera's pocket against his hip all the way from Soho." | | 2 | "Cold air breathed out of the slot and across her knuckles, and it carried the smell of copper, of incense, of rain that had never touched sky." | | 3 | "They found his torch three days later in a sealed section of tunnel, still burning, standing upright on the ground as if someone had set it down carefully." | | 4 | "Then the door made a sound like a key the size of a church turning over, and it opened onto a stairwell going down, and the cold came up it in a slow flood, and…" |
| |
| 100.00% | Useless dialogue additions | Target: ≤5% dialogue tags with trailing filler fragments | | totalTags | 4 | | uselessAdditionCount | 0 | | matches | (empty) | |
| 100.00% | Dialogue tag variety (said vs. fancy) | Target: ≤10% fancy dialogue tags | | totalTags | 1 | | fancyCount | 0 | | fancyTags | (empty) | | dialogueSentences | 11 | | tagDensity | 0.091 | | leniency | 0.182 | | rawRatio | 0 | | effectiveRatio | 0 | |