| 100.00% | Adverbs in dialogue tags | Target: ≤10% dialogue tags with adverbs | | totalTags | 4 | | adverbTagCount | 0 | | adverbTags | (empty) | | dialogueSentences | 8 | | tagDensity | 0.5 | | leniency | 1 | | rawRatio | 0 | | effectiveRatio | 0 | |
| 100.00% | AI-ism adverb frequency | Target: <2% AI-ism adverbs (58 tracked) | | wordCount | 1081 | | 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) | |
| 86.12% | AI-ism word frequency | Target: <2% AI-ism words (290 tracked) | | wordCount | 1081 | | totalAiIsms | 3 | | found | | | highlights | | 0 | "pumping" | | 1 | "flicker" | | 2 | "silence" |
| |
| 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 | 72 | | matches | (empty) | |
| 83.33% | Filter word density | Target: ≤3% sentences with filter/hedge words | | filterCount | 1 | | hedgeCount | 2 | | narrationSentences | 72 | | filterMatches | | | hedgeMatches | | 0 | "seemed to" | | 1 | "happened to" |
| |
| 100.00% | Gibberish response detection | Target: ≤1% gibberish-like sentences (hard fail if a sentence exceeds 800 words) | | analyzedSentences | 76 | | gibberishSentences | 0 | | adjustedGibberishSentences | 0 | | longSentenceCount | 0 | | runOnParagraphCount | 0 | | giantParagraphCount | 0 | | wordSaladCount | 0 | | repetitionLoopCount | 0 | | controlTokenCount | 0 | | repeatedSegmentCount | 0 | | maxSentenceWordsSeen | 56 | | ratio | 0 | | matches | (empty) | |
| 100.00% | Markdown formatting overuse | Target: ≤5% words in markdown formatting | | markdownSpans | 0 | | markdownWords | 0 | | totalWords | 1069 | | ratio | 0 | | matches | (empty) | |
| 100.00% | Missing dialogue indicators (quotation marks) | Target: ≤10% speech attributions without quotation marks | | totalAttributions | 3 | | unquotedAttributions | 0 | | matches | (empty) | |
| 100.00% | Name drop frequency | Target: ≤1.0 per-name mentions per 100 words | | totalMentions | 47 | | wordCount | 972 | | uniqueNames | 31 | | maxNameDensity | 0.62 | | worstName | "Quinn" | | maxWindowNameDensity | 1.5 | | worstWindowName | "Quinn" | | discoveredNames | | London | 1 | | Camden | 2 | | High | 1 | | Street | 1 | | Quinn | 6 | | Tomás | 1 | | Herrera | 4 | | Raven | 1 | | Nest | 1 | | Saint | 2 | | Christopher | 2 | | Silas | 1 | | Tommy | 2 | | Victorian | 1 | | Kentish | 1 | | Town | 2 | | Road | 1 | | Annex | 1 | | Charing | 1 | | Cross | 1 | | Silence | 1 | | Morris | 2 | | Ellen | 1 | | Christmas | 1 | | Harlow | 3 | | Professional | 1 | | Standards | 1 | | Whitechapel | 1 | | Detective | 1 | | Veil | 1 | | Market | 1 |
| | persons | | 0 | "Quinn" | | 1 | "Tomás" | | 2 | "Herrera" | | 3 | "Saint" | | 4 | "Christopher" | | 5 | "Silas" | | 6 | "Tommy" | | 7 | "Morris" | | 8 | "Ellen" | | 9 | "Christmas" | | 10 | "Harlow" |
| | places | | 0 | "London" | | 1 | "Camden" | | 2 | "High" | | 3 | "Street" | | 4 | "Raven" | | 5 | "Victorian" | | 6 | "Kentish" | | 7 | "Town" | | 8 | "Road" | | 9 | "Annex" | | 10 | "Charing" | | 11 | "Professional" | | 12 | "Veil" |
| | globalScore | 1 | | windowScore | 1 | |
| 51.96% | Narrator intent-glossing | Target: ≤2% narration sentences with intent-glossing patterns | | analyzedSentences | 51 | | glossingSentenceCount | 2 | | matches | | 0 | "felt like a good idea and didn't now" | | 1 | "looked like a man who was sorry for her" |
| |
| 100.00% | "Not X but Y" pattern overuse | Target: ≤1 "not X but Y" per 1000 words | | totalMatches | 0 | | per1kWords | 0 | | wordCount | 1069 | | matches | (empty) | |
| 78.95% | Overuse of "that" (subordinate clause padding) | Target: ≤2% sentences with "that" clauses | | thatCount | 2 | | totalSentences | 76 | | matches | | 0 | "cared that he" | | 1 | "keeping that promise" |
| |
| 100.00% | Paragraph length variance | Target: CV ≥0.5 for paragraph word counts | | totalParagraphs | 28 | | mean | 38.18 | | std | 22.98 | | cv | 0.602 | | sampleLengths | | 0 | 71 | | 1 | 20 | | 2 | 17 | | 3 | 58 | | 4 | 52 | | 5 | 52 | | 6 | 49 | | 7 | 65 | | 8 | 21 | | 9 | 54 | | 10 | 16 | | 11 | 48 | | 12 | 7 | | 13 | 74 | | 14 | 28 | | 15 | 26 | | 16 | 62 | | 17 | 12 | | 18 | 22 | | 19 | 3 | | 20 | 76 | | 21 | 14 | | 22 | 76 | | 23 | 10 | | 24 | 53 | | 25 | 25 | | 26 | 37 | | 27 | 21 |
| |
| 85.77% | Passive voice overuse | Target: ≤2% passive sentences | | passiveCount | 4 | | totalSentences | 72 | | matches | | 0 | "was gone" | | 1 | "being sent" | | 2 | "been smashed" | | 3 | "was locked" |
| |
| 100.00% | Past progressive (was/were + -ing) overuse | Target: ≤2% past progressive verbs | | pastProgressiveCount | 2 | | totalVerbs | 170 | | matches | | 0 | "was running" | | 1 | "was watching" |
| |
| 0.00% | Em-dash & semicolon overuse | Target: ≤2% sentences with em-dashes/semicolons | | emDashCount | 11 | | semicolonCount | 0 | | flaggedSentences | 7 | | totalSentences | 76 | | ratio | 0.092 | | matches | | 0 | "Rain came down the way London liked it best—mean, horizontal, unrelenting." | | 1 | "She'd seen his face for less than a heartbeat outside the Raven's Nest—olive skin, warm brown eyes going wide at the sight of her, that Saint Christopher flashing at the hollow of his throat—and then he was gone, vaulting a bollard and sprinting north like the devil had hold of his heels." | | 2 | "She swept the lane with her eyes, found the flicker of motion at the far end—his coat, black, moving left—and followed." | | 3 | "She turned the corner at Kentish Town Road and caught him again—Herrera, skidding on the wet pavement, glancing back once with that paramedic's calm cracking into something more animal." | | 4 | "Then a scrape—metal on stone—and a seam of pale greenish light opened at the base of the hoarding where no seam had any business being." | | 5 | "Her fingers found the cut edge of the panel—cold, slick, real—and she lifted it." | | 6 | "She thought of Morris's face the last time she'd seen it—white under the sodium lights of a car park in Whitechapel, mouth open around a word he never got to finish." |
| |
| 100.00% | Purple prose (modifier overload) | Target: <4% adverbs, <2% -ly adverbs, no adj stacking | | wordCount | 485 | | adjectiveStacks | 0 | | stackExamples | (empty) | | adverbCount | 16 | | adverbRatio | 0.032989690721649485 | | lyAdverbCount | 2 | | lyAdverbRatio | 0.004123711340206186 | |
| 100.00% | Repeated phrase echo | Target: ≤20% sentences with echoes (window: 2) | | totalSentences | 76 | | echoCount | 0 | | echoWords | (empty) | |
| 100.00% | Sentence length variance | Target: CV ≥0.4 for sentence word counts | | totalSentences | 76 | | mean | 14.07 | | std | 11.8 | | cv | 0.839 | | sampleLengths | | 0 | 11 | | 1 | 25 | | 2 | 35 | | 3 | 20 | | 4 | 3 | | 5 | 9 | | 6 | 5 | | 7 | 3 | | 8 | 3 | | 9 | 52 | | 10 | 39 | | 11 | 7 | | 12 | 6 | | 13 | 16 | | 14 | 1 | | 15 | 2 | | 16 | 12 | | 17 | 21 | | 18 | 15 | | 19 | 2 | | 20 | 15 | | 21 | 13 | | 22 | 4 | | 23 | 34 | | 24 | 4 | | 25 | 21 | | 26 | 6 | | 27 | 6 | | 28 | 4 | | 29 | 11 | | 30 | 29 | | 31 | 25 | | 32 | 16 | | 33 | 4 | | 34 | 6 | | 35 | 27 | | 36 | 8 | | 37 | 3 | | 38 | 7 | | 39 | 3 | | 40 | 2 | | 41 | 24 | | 42 | 16 | | 43 | 29 | | 44 | 7 | | 45 | 21 | | 46 | 1 | | 47 | 25 | | 48 | 21 | | 49 | 31 |
| |
| 74.12% | Sentence opener variety | Target: ≥60% unique sentence openers | | consecutiveRepeats | 7 | | diversityRatio | 0.5 | | totalSentences | 76 | | uniqueOpeners | 38 | |
| 100.00% | Adverb-first sentence starts | Target: ≥3% sentences starting with an adverb | | adverbCount | 4 | | totalSentences | 65 | | matches | | 0 | "Of course it did." | | 1 | "Then a scrape—metal on stone—and" | | 2 | "Then he slipped through the" | | 3 | "Somewhere in the dark a" |
| | ratio | 0.062 | |
| 35.38% | Pronoun-first sentence starts | Target: ≤30% sentences starting with a pronoun | | pronounCount | 30 | | totalSentences | 65 | | matches | | 0 | "It hammered the awnings along" | | 1 | "Her voice tore against the" | | 2 | "He didn't stop." | | 3 | "He never stopped." | | 4 | "She'd seen his face for" | | 5 | "She didn't care what was" | | 6 | "She cared that he was" | | 7 | "She swept the lane with" | | 8 | "Her watch, soaked leather gone" | | 9 | "She had maybe ninety more" | | 10 | "She cut herself off" | | 11 | "It always did when she" | | 12 | "She turned the corner at" | | 13 | "He saw her and surged" | | 14 | "He cut left, off the" | | 15 | "She'd walked it a hundred" | | 16 | "She smiled, grim, and went" | | 17 | "She slowed, one hand sliding" | | 18 | "Her pistol was locked in" | | 19 | "She pitched her voice lower," |
| | ratio | 0.462 | |
| 52.31% | Subject-first sentence starts | Target: ≤72% sentences starting with a subject | | subjectCount | 53 | | totalSentences | 65 | | matches | | 0 | "Rain came down the way" | | 1 | "It hammered the awnings along" | | 2 | "Harlow Quinn ran through it" | | 3 | "Her voice tore against the" | | 4 | "He didn't stop." | | 5 | "He never stopped." | | 6 | "She'd seen his face for" | | 7 | "She didn't care what was" | | 8 | "She cared that he was" | | 9 | "The alley he'd taken dumped" | | 10 | "The sickly orange of a" | | 11 | "She swept the lane with" | | 12 | "Her watch, soaked leather gone" | | 13 | "She had maybe ninety more" | | 14 | "Less in this cold." | | 15 | "She cut herself off" | | 16 | "A dead partner three years" | | 17 | "The radio coughed static at" | | 18 | "It always did when she" | | 19 | "She turned the corner at" |
| | ratio | 0.815 | |
| 0.00% | Subordinate conjunction sentence starts | Target: ≥2% sentences starting with a subordinating conjunction | | subConjCount | 0 | | totalSentences | 65 | | matches | (empty) | | ratio | 0 | |
| 63.49% | Technical jargon density | Target: ≤6% sentences with technical-jargon patterns | | analyzedSentences | 36 | | technicalSentenceCount | 4 | | matches | | 0 | "It hammered the awnings along Camden High Street and turned the gutters into little rivers that carried cigarette ends and bus tickets toward the drains." | | 1 | "He cut left, off the main road, down a pedestrian walk that shouldn't have gone anywhere." | | 2 | "They were old tile, the cream-and-maroon scheme the underground used to wear before the war, and they descended into a throat of warm air that smelled of tallow…" | | 3 | "Far below, a murmur: voices, many voices, the low collective hum of a crowd that had agreed not to be noticed." |
| |
| 0.00% | Useless dialogue additions | Target: ≤5% dialogue tags with trailing filler fragments | | totalTags | 4 | | uselessAdditionCount | 1 | | matches | | |
| 25.00% | Dialogue tag variety (said vs. fancy) | Target: ≤10% fancy dialogue tags | | totalTags | 1 | | fancyCount | 1 | | fancyTags | | | dialogueSentences | 8 | | tagDensity | 0.125 | | leniency | 0.25 | | rawRatio | 1 | | effectiveRatio | 0.25 | |