| 100.00% | Adverbs in dialogue tags | Target: ≤10% dialogue tags with adverbs | | totalTags | 4 | | adverbTagCount | 0 | | adverbTags | (empty) | | dialogueSentences | 14 | | tagDensity | 0.286 | | leniency | 0.571 | | rawRatio | 0 | | effectiveRatio | 0 | |
| 96.86% | AI-ism adverb frequency | Target: <2% AI-ism adverbs (58 tracked) | | wordCount | 1590 | | 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) | |
| 81.13% | AI-ism word frequency | Target: <2% AI-ism words (290 tracked) | | wordCount | 1590 | | totalAiIsms | 6 | | found | | | highlights | | 0 | "streaming" | | 1 | "measured" | | 2 | "calibrated" | | 3 | "gleaming" | | 4 | "standard" | | 5 | "mechanical" |
| |
| 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 | 84 | | matches | (empty) | |
| 74.83% | Filter word density | Target: ≤3% sentences with filter/hedge words | | filterCount | 2 | | hedgeCount | 2 | | narrationSentences | 84 | | filterMatches | | | hedgeMatches | | |
| 100.00% | Gibberish response detection | Target: ≤1% gibberish-like sentences (hard fail if a sentence exceeds 800 words) | | analyzedSentences | 94 | | gibberishSentences | 0 | | adjustedGibberishSentences | 0 | | longSentenceCount | 0 | | runOnParagraphCount | 0 | | giantParagraphCount | 0 | | wordSaladCount | 0 | | repetitionLoopCount | 0 | | controlTokenCount | 0 | | repeatedSegmentCount | 0 | | maxSentenceWordsSeen | 47 | | ratio | 0 | | matches | (empty) | |
| 100.00% | Markdown formatting overuse | Target: ≤5% words in markdown formatting | | markdownSpans | 3 | | markdownWords | 6 | | totalWords | 1579 | | ratio | 0.004 | | matches | | 0 | "unresolved misadventure" | | 1 | "Ghosts." | | 2 | "The Veil Market." |
| |
| 100.00% | Missing dialogue indicators (quotation marks) | Target: ≤10% speech attributions without quotation marks | | totalAttributions | 9 | | unquotedAttributions | 0 | | matches | (empty) | |
| 100.00% | Name drop frequency | Target: ≤1.0 per-name mentions per 100 words | | totalMentions | 50 | | wordCount | 1448 | | uniqueNames | 21 | | maxNameDensity | 0.97 | | worstName | "Quinn" | | maxWindowNameDensity | 2 | | worstWindowName | "Herrera" | | discoveredNames | | Camden | 2 | | Harlow | 1 | | Quinn | 14 | | Herrera | 9 | | Soho | 1 | | Raven | 1 | | Nest | 2 | | Morris | 6 | | Northern | 1 | | Line | 1 | | Glock | 2 | | Saint | 1 | | Christopher | 1 | | Wandsworth | 1 | | Spain | 1 | | London | 1 | | Whitechapel | 1 | | Victorian | 1 | | Tube | 1 | | Blitz | 1 | | Veil | 1 |
| | persons | | 0 | "Camden" | | 1 | "Harlow" | | 2 | "Quinn" | | 3 | "Herrera" | | 4 | "Raven" | | 5 | "Morris" | | 6 | "Saint" | | 7 | "Christopher" | | 8 | "Blitz" |
| | places | | 0 | "Soho" | | 1 | "Wandsworth" | | 2 | "Spain" | | 3 | "London" | | 4 | "Whitechapel" | | 5 | "Victorian" |
| | globalScore | 1 | | windowScore | 1 | |
| 81.51% | Narrator intent-glossing | Target: ≤2% narration sentences with intent-glossing patterns | | analyzedSentences | 73 | | glossingSentenceCount | 2 | | matches | | 0 | "as if yielding to immense heat, and the double doors swung upward with a pneumatic hiss that smelled of ozone, rotting lilies, and cold, subterranean lime" | | 1 | "liquids that seemed to glow without a light source" |
| |
| 10.01% | "Not X but Y" pattern overuse | Target: ≤1 "not X but Y" per 1000 words | | totalMatches | 3 | | per1kWords | 1.9 | | wordCount | 1579 | | matches | | 0 | "not the fear of a dealer facing five years in Wandsworth, but something raw" | | 1 | "not merely out of service but entirely blank, the battery icon drained to an empty shell" | | 2 | "not into a sewer or a maintenance tunnel, but onto the vaulted ceramic-tiled platform of an abandoned Tube" |
| |
| 100.00% | Overuse of "that" (subordinate clause padding) | Target: ≤2% sentences with "that" clauses | | thatCount | 1 | | totalSentences | 94 | | matches | | |
| 100.00% | Paragraph length variance | Target: CV ≥0.5 for paragraph word counts | | totalParagraphs | 42 | | mean | 37.6 | | std | 25.79 | | cv | 0.686 | | sampleLengths | | 0 | 55 | | 1 | 56 | | 2 | 112 | | 3 | 42 | | 4 | 23 | | 5 | 72 | | 6 | 26 | | 7 | 47 | | 8 | 27 | | 9 | 97 | | 10 | 34 | | 11 | 12 | | 12 | 30 | | 13 | 4 | | 14 | 27 | | 15 | 22 | | 16 | 54 | | 17 | 8 | | 18 | 1 | | 19 | 30 | | 20 | 67 | | 21 | 12 | | 22 | 24 | | 23 | 34 | | 24 | 31 | | 25 | 35 | | 26 | 1 | | 27 | 77 | | 28 | 32 | | 29 | 38 | | 30 | 64 | | 31 | 4 | | 32 | 13 | | 33 | 71 | | 34 | 55 | | 35 | 28 | | 36 | 59 | | 37 | 71 | | 38 | 32 | | 39 | 29 | | 40 | 6 | | 41 | 17 |
| |
| 88.55% | Passive voice overuse | Target: ≤2% passive sentences | | passiveCount | 4 | | totalSentences | 84 | | matches | | 0 | "been pulled" | | 1 | "was fused" | | 2 | "were choked" | | 3 | "were locked" |
| |
| 82.01% | Past progressive (was/were + -ing) overuse | Target: ≤2% past progressive verbs | | pastProgressiveCount | 4 | | totalVerbs | 226 | | matches | | 0 | "wasn't reaching" | | 1 | "was arranging" | | 2 | "was skinning" | | 3 | "was running" |
| |
| 0.00% | Em-dash & semicolon overuse | Target: ≤2% sentences with em-dashes/semicolons | | emDashCount | 11 | | semicolonCount | 5 | | flaggedSentences | 13 | | totalSentences | 94 | | ratio | 0.138 | | matches | | 0 | "The clique that used the back room of the Nest was at the center of it, and Herrera was their stitcher—the disgraced paramedic who patched up people who shouldn't exist, using things that shouldn't work." | | 1 | "He saw the badge she flashed in her palm—or perhaps just the unmistakable posture of a woman carrying a Glock under her left armpit—and panicked." | | 2 | "He wasn't reaching for a gun; his fingers fished into the collar of his shirt, dragging out a silver Saint Christopher medallion on a broken chain, and beside it, tucked into the knot of his shirt, a piece of carved white material the size of a domino." | | 3 | "He looked up at her, his warm brown eyes wide with genuine terror—not the fear of a dealer facing five years in Wandsworth, but something raw and ancestral." | | 4 | "With a sudden, violent shove, Herrera pressed the white object—a flat piece of carved bone—into a narrow crevice between the iron doors." | | 5 | "The lock didn't snap; it seemed to dissolve, the heavy iron groaned as if yielding to immense heat, and the double doors swung upward with a pneumatic hiss that smelled of ozone, rotting lilies, and cold, subterranean lime." | | 6 | "A draft hit Quinn's face—freezing, stale air pulled from deep beneath the crust of the city." | | 7 | "She shook the handset, checked the display; the screen was dead, not merely out of service but entirely blank, the battery icon drained to an empty shell." | | 8 | "She checked her watch—the worn leather strap cold against her wrist—and noted the second hand had frozen at the twelve." | | 9 | "The smell grew heavier—a suffocating mixture of sulfur, bitter almond, and roasted meat." | | 10 | "Figures moved between them in an uneasy, predatory hush—some cloaked in heavy woolen shawls, others moving with an unnatural, fluid grace that made the small hairs on Quinn's forearms prickle." | | 11 | "He didn't look back; his eyes were locked on an old signaling room at the far end of the platform, where a dull yellow light spilled across the ballast." | | 12 | "Her badge was a scrap of metal; her gun, sixteen rounds against an impossible dark." |
| |
| 94.00% | Purple prose (modifier overload) | Target: <4% adverbs, <2% -ly adverbs, no adj stacking | | wordCount | 1470 | | adjectiveStacks | 1 | | stackExamples | | 0 | "low, pressed tight against her" |
| | adverbCount | 29 | | adverbRatio | 0.019727891156462583 | | lyAdverbCount | 12 | | lyAdverbRatio | 0.00816326530612245 | |
| 100.00% | Repeated phrase echo | Target: ≤20% sentences with echoes (window: 2) | | totalSentences | 94 | | echoCount | 0 | | echoWords | (empty) | |
| 100.00% | Sentence length variance | Target: CV ≥0.4 for sentence word counts | | totalSentences | 94 | | mean | 16.8 | | std | 9.52 | | cv | 0.567 | | sampleLengths | | 0 | 26 | | 1 | 29 | | 2 | 11 | | 3 | 24 | | 4 | 21 | | 5 | 27 | | 6 | 17 | | 7 | 33 | | 8 | 35 | | 9 | 12 | | 10 | 17 | | 11 | 13 | | 12 | 20 | | 13 | 3 | | 14 | 6 | | 15 | 23 | | 16 | 25 | | 17 | 18 | | 18 | 16 | | 19 | 10 | | 20 | 3 | | 21 | 12 | | 22 | 18 | | 23 | 14 | | 24 | 19 | | 25 | 8 | | 26 | 5 | | 27 | 47 | | 28 | 17 | | 29 | 28 | | 30 | 22 | | 31 | 12 | | 32 | 12 | | 33 | 17 | | 34 | 13 | | 35 | 4 | | 36 | 7 | | 37 | 20 | | 38 | 22 | | 39 | 38 | | 40 | 16 | | 41 | 8 | | 42 | 1 | | 43 | 17 | | 44 | 13 | | 45 | 14 | | 46 | 13 | | 47 | 40 | | 48 | 8 | | 49 | 4 |
| |
| 62.06% | Sentence opener variety | Target: ≥60% unique sentence openers | | consecutiveRepeats | 10 | | diversityRatio | 0.43617021276595747 | | totalSentences | 94 | | uniqueOpeners | 41 | |
| 81.30% | Adverb-first sentence starts | Target: ≥3% sentences starting with an adverb | | adverbCount | 2 | | totalSentences | 82 | | matches | | 0 | "Instead, he dropped against a" | | 1 | "Then she saw the way" |
| | ratio | 0.024 | |
| 78.54% | Pronoun-first sentence starts | Target: ≤30% sentences starting with a pronoun | | pronounCount | 29 | | totalSentences | 82 | | matches | | 0 | "He cut hard against the" | | 1 | "He wore a dark surplus" | | 2 | "She’d been watching the bar" | | 3 | "Her heavy soles struck the" | | 4 | "She was forty-one, but her" | | 5 | "He glanced back over his" | | 6 | "He saw the badge she" | | 7 | "He veered left, straight into" | | 8 | "she said, closing the distance" | | 9 | "He wasn't reaching for a" | | 10 | "He looked up at her," | | 11 | "he said, chest heaving" | | 12 | "She heard the metallic clatter" | | 13 | "She stood at the lip" | | 14 | "She pulled her radio from" | | 15 | "She pressed the push-to-talk." | | 16 | "She shook the handset, checked" | | 17 | "She checked her watch—the worn" | | 18 | "You did not enter an" | | 19 | "You did not chase ghosts." |
| | ratio | 0.354 | |
| 57.56% | Subject-first sentence starts | Target: ≤72% sentences starting with a subject | | subjectCount | 66 | | totalSentences | 82 | | matches | | 0 | "The rain came down in" | | 1 | "Detective Harlow Quinn kept her" | | 2 | "Tomás Herrera ran like a" | | 3 | "He cut hard against the" | | 4 | "He wore a dark surplus" | | 5 | "Quinn had clocked him leaving" | | 6 | "She’d been watching the bar" | | 7 | "The clique that used the" | | 8 | "Her heavy soles struck the" | | 9 | "She was forty-one, but her" | | 10 | "Quinn yelled, her voice cutting" | | 11 | "He glanced back over his" | | 12 | "Streetlight caught the sharp angle" | | 13 | "He saw the badge she" | | 14 | "He veered left, straight into" | | 15 | "Quinn rounded the brick corner," | | 16 | "Herrera didn't answer." | | 17 | "Quinn reached for her holster," | | 18 | "she said, closing the distance" | | 19 | "Herrera knelt in the muck." |
| | ratio | 0.805 | |
| 0.00% | Subordinate conjunction sentence starts | Target: ≥2% sentences starting with a subordinating conjunction | | subConjCount | 0 | | totalSentences | 82 | | matches | (empty) | | ratio | 0 | |
| 0.00% | Technical jargon density | Target: ≤6% sentences with technical-jargon patterns | | analyzedSentences | 61 | | technicalSentenceCount | 13 | | matches | | 0 | "The rain came down in hard, diagonal sheets that turned the Camden asphalt into a mirror for the glare of red brake lights and greasy shopfronts." | | 1 | "Tomás Herrera ran like a man who knew the city’s bones." | | 2 | "The clique that used the back room of the Nest was at the center of it, and Herrera was their stitcher—the disgraced paramedic who patched up people who shouldn…" | | 3 | "He wasn't reaching for a gun; his fingers fished into the collar of his shirt, dragging out a silver Saint Christopher medallion on a broken chain, and beside i…" | | 4 | "The lock didn't snap; it seemed to dissolve, the heavy iron groaned as if yielding to immense heat, and the double doors swung upward with a pneumatic hiss that…" | | 5 | "She heard the metallic clatter of his boots striking iron rungs, descending fast." | | 6 | "Beneath the noise of the London night, an entirely different sound floated up from the deep: the hum of a hundred murmuring voices, the tinny chime of glass bot…" | | 7 | "The descent was eighty feet through brickwork that shifted from Victorian masonry to raw, damp chalk." | | 8 | "The platform stretched out into a sprawling, vaulted subterranean cavern lit by sputtering lanterns of bottle-green glass and iron braziers that threw twisting,…" | | 9 | "Figures moved between them in an uneasy, predatory hush—some cloaked in heavy woolen shawls, others moving with an unnatural, fluid grace that made the small ha…" | | 10 | "On a table twenty paces away, a woman with milky, clouded eyes was arranging rows of glass ampoules filled with shimmering, iridescent liquids that seemed to gl…" | | 11 | "Beside her, a broad-shouldered man was skinning something that looked disturbingly like a large hare, except for the long, jointed fingers on its forelimbs." | | 12 | "Ahead of her, Herrera was running down the center of the gravel track bed, shoving past figures who hissed and snarled at him with sounds no human throat should…" |
| |
| 0.00% | Useless dialogue additions | Target: ≤5% dialogue tags with trailing filler fragments | | totalTags | 4 | | uselessAdditionCount | 1 | | matches | | 0 | "he said, chest heaving" |
| |
| 78.57% | Dialogue tag variety (said vs. fancy) | Target: ≤10% fancy dialogue tags | | totalTags | 4 | | fancyCount | 1 | | fancyTags | | | dialogueSentences | 14 | | tagDensity | 0.286 | | leniency | 0.571 | | rawRatio | 0.25 | | effectiveRatio | 0.143 | |