| 100.00% | Adverbs in dialogue tags | Target: ≤10% dialogue tags with adverbs | | totalTags | 9 | | adverbTagCount | 0 | | adverbTags | (empty) | | dialogueSentences | 30 | | tagDensity | 0.3 | | leniency | 0.6 | | rawRatio | 0 | | effectiveRatio | 0 | |
| 94.33% | AI-ism adverb frequency | Target: <2% AI-ism adverbs (58 tracked) | | wordCount | 1763 | | totalAiIsmAdverbs | 2 | | 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) | |
| 74.48% | AI-ism word frequency | Target: <2% AI-ism words (290 tracked) | | wordCount | 1763 | | totalAiIsms | 9 | | found | | | highlights | | 0 | "flickered" | | 1 | "streaming" | | 2 | "scanned" | | 3 | "could feel" | | 4 | "pulse" | | 5 | "weight" |
| |
| 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 | 121 | | matches | (empty) | |
| 83.83% | Filter word density | Target: ≤3% sentences with filter/hedge words | | filterCount | 2 | | hedgeCount | 3 | | narrationSentences | 121 | | filterMatches | | | hedgeMatches | | 0 | "seemed to" | | 1 | "appeared to" |
| |
| 100.00% | Gibberish response detection | Target: ≤1% gibberish-like sentences (hard fail if a sentence exceeds 800 words) | | analyzedSentences | 142 | | gibberishSentences | 0 | | adjustedGibberishSentences | 0 | | longSentenceCount | 0 | | runOnParagraphCount | 0 | | giantParagraphCount | 0 | | wordSaladCount | 0 | | repetitionLoopCount | 0 | | controlTokenCount | 0 | | maxSentenceWordsSeen | 50 | | ratio | 0 | | matches | (empty) | |
| 100.00% | Markdown formatting overuse | Target: ≤5% words in markdown formatting | | markdownSpans | 0 | | markdownWords | 0 | | totalWords | 1757 | | ratio | 0 | | matches | (empty) | |
| 100.00% | Missing dialogue indicators (quotation marks) | Target: ≤10% speech attributions without quotation marks | | totalAttributions | 8 | | unquotedAttributions | 0 | | matches | (empty) | |
| 98.26% | Name drop frequency | Target: ≤1.0 per-name mentions per 100 words | | totalMentions | 51 | | wordCount | 1353 | | uniqueNames | 23 | | maxNameDensity | 1.03 | | worstName | "Quinn" | | maxWindowNameDensity | 2 | | worstWindowName | "Quinn" | | discoveredNames | | Camden | 3 | | High | 1 | | Street | 1 | | Brixton | 1 | | Tottenham | 1 | | Tower | 1 | | Hamlets | 1 | | Motorola | 1 | | Victorian | 1 | | Met | 1 | | Morris | 5 | | God | 1 | | Glock | 4 | | Tube | 1 | | Quinn | 14 | | Mediterranean | 1 | | Spanish | 1 | | Saint | 2 | | Christopher | 2 | | Tomás | 5 | | Soho | 1 | | Metropolitan | 1 | | Police | 1 |
| | persons | | 0 | "Morris" | | 1 | "God" | | 2 | "Glock" | | 3 | "Quinn" | | 4 | "Saint" | | 5 | "Christopher" | | 6 | "Tomás" | | 7 | "Police" |
| | places | | 0 | "Camden" | | 1 | "High" | | 2 | "Street" | | 3 | "Brixton" | | 4 | "Tottenham" | | 5 | "Tower" | | 6 | "Hamlets" | | 7 | "Victorian" | | 8 | "Soho" |
| | globalScore | 0.983 | | windowScore | 1 | |
| 100.00% | Narrator intent-glossing | Target: ≤2% narration sentences with intent-glossing patterns | | analyzedSentences | 86 | | glossingSentenceCount | 1 | | matches | | 0 | "not quite touching the ground" |
| |
| 100.00% | "Not X but Y" pattern overuse | Target: ≤1 "not X but Y" per 1000 words | | totalMatches | 0 | | per1kWords | 0 | | wordCount | 1757 | | matches | (empty) | |
| 100.00% | Overuse of "that" (subordinate clause padding) | Target: ≤2% sentences with "that" clauses | | thatCount | 0 | | totalSentences | 142 | | matches | (empty) | |
| 100.00% | Paragraph length variance | Target: CV ≥0.5 for paragraph word counts | | totalParagraphs | 55 | | mean | 31.95 | | std | 22.71 | | cv | 0.711 | | sampleLengths | | 0 | 72 | | 1 | 16 | | 2 | 5 | | 3 | 29 | | 4 | 47 | | 5 | 50 | | 6 | 32 | | 7 | 9 | | 8 | 40 | | 9 | 57 | | 10 | 29 | | 11 | 25 | | 12 | 44 | | 13 | 14 | | 14 | 107 | | 15 | 23 | | 16 | 45 | | 17 | 7 | | 18 | 38 | | 19 | 40 | | 20 | 5 | | 21 | 46 | | 22 | 38 | | 23 | 24 | | 24 | 38 | | 25 | 3 | | 26 | 25 | | 27 | 39 | | 28 | 7 | | 29 | 39 | | 30 | 4 | | 31 | 73 | | 32 | 71 | | 33 | 63 | | 34 | 44 | | 35 | 24 | | 36 | 6 | | 37 | 23 | | 38 | 4 | | 39 | 35 | | 40 | 40 | | 41 | 47 | | 42 | 18 | | 43 | 57 | | 44 | 4 | | 45 | 3 | | 46 | 13 | | 47 | 5 | | 48 | 52 | | 49 | 68 |
| |
| 99.46% | Passive voice overuse | Target: ≤2% passive sentences | | passiveCount | 2 | | totalSentences | 121 | | matches | | 0 | "been dragged" | | 1 | "been opened" |
| |
| 0.00% | Past progressive (was/were + -ing) overuse | Target: ≤2% past progressive verbs | | pastProgressiveCount | 7 | | totalVerbs | 216 | | matches | | 0 | "wasn't looking" | | 1 | "was selling" | | 2 | "was stacking" | | 3 | "was reading" | | 4 | "was standing" | | 5 | "was getting" | | 6 | "was happening" |
| |
| 2.01% | Em-dash & semicolon overuse | Target: ≤2% sentences with em-dashes/semicolons | | emDashCount | 7 | | semicolonCount | 0 | | flaggedSentences | 7 | | totalSentences | 142 | | ratio | 0.049 | | matches | | 0 | "The smell that rose up was unlike anything she'd catalogued in two decades of crime scenes—burned cinnamon, ozone, something mineral and ancient, like the air inside a cave that hadn't been opened in centuries." | | 1 | "But the platform itself—" | | 2 | "Not from rain—he'd been down here already." | | 3 | "The scar on his forearm was surgical in its straightness—not a fight wound, more like a blade drawn with purpose." | | 4 | "\"It's the only honest one I've got.\" He rubbed the scar on his forearm—an unconscious gesture, habitual." | | 5 | "Morris's face in the crime scene photographs—eyes open, expression frozen in something that wasn't fear but recognition, as if he'd understood what was happening to him in the final moment and found it impossible." | | 6 | "Then he reached into his back pocket and produced a small object—a token, roughly the size of a fifty-pence piece, carved from something pale and slightly translucent." |
| |
| 100.00% | Purple prose (modifier overload) | Target: <4% adverbs, <2% -ly adverbs, no adj stacking | | wordCount | 1365 | | adjectiveStacks | 0 | | stackExamples | (empty) | | adverbCount | 44 | | adverbRatio | 0.03223443223443224 | | lyAdverbCount | 9 | | lyAdverbRatio | 0.006593406593406593 | |
| 100.00% | Repeated phrase echo | Target: ≤20% sentences with echoes (window: 2) | | totalSentences | 142 | | echoCount | 0 | | echoWords | (empty) | |
| 100.00% | Sentence length variance | Target: CV ≥0.4 for sentence word counts | | totalSentences | 142 | | mean | 12.37 | | std | 9.62 | | cv | 0.777 | | sampleLengths | | 0 | 20 | | 1 | 20 | | 2 | 32 | | 3 | 4 | | 4 | 12 | | 5 | 4 | | 6 | 1 | | 7 | 5 | | 8 | 12 | | 9 | 12 | | 10 | 11 | | 11 | 23 | | 12 | 13 | | 13 | 10 | | 14 | 19 | | 15 | 4 | | 16 | 12 | | 17 | 3 | | 18 | 2 | | 19 | 12 | | 20 | 8 | | 21 | 12 | | 22 | 2 | | 23 | 7 | | 24 | 3 | | 25 | 11 | | 26 | 11 | | 27 | 10 | | 28 | 5 | | 29 | 2 | | 30 | 21 | | 31 | 34 | | 32 | 4 | | 33 | 6 | | 34 | 19 | | 35 | 13 | | 36 | 5 | | 37 | 7 | | 38 | 17 | | 39 | 23 | | 40 | 4 | | 41 | 2 | | 42 | 1 | | 43 | 11 | | 44 | 6 | | 45 | 17 | | 46 | 28 | | 47 | 9 | | 48 | 8 | | 49 | 11 |
| |
| 66.43% | Sentence opener variety | Target: ≥60% unique sentence openers | | consecutiveRepeats | 9 | | diversityRatio | 0.43661971830985913 | | totalSentences | 142 | | uniqueOpeners | 62 | |
| 62.31% | Adverb-first sentence starts | Target: ≥3% sentences starting with an adverb | | adverbCount | 2 | | totalSentences | 107 | | matches | | 0 | "Still warm from someone's grip." | | 1 | "Then he reached into his" |
| | ratio | 0.019 | |
| 100.00% | Pronoun-first sentence starts | Target: ≤30% sentences starting with a pronoun | | pronounCount | 27 | | totalSentences | 107 | | matches | | 0 | "She keyed her radio." | | 1 | "She shoved it back into" | | 2 | "She wasn't about to lose" | | 3 | "She pressed her back against" | | 4 | "She crouched and pressed her" | | 5 | "She thumbed the safety and" | | 6 | "She kept the Glock low" | | 7 | "His accent placed him somewhere" | | 8 | "His other hand gestured subtly" | | 9 | "He lowered his voice" | | 10 | "His curly hair was damp" | | 11 | "He stood with the practiced" | | 12 | "He glanced over his shoulder" | | 13 | "Her left hand drifted to" | | 14 | "She'd spent three years building" | | 15 | "He rubbed the scar on" | | 16 | "It absorbed the lantern light" | | 17 | "She could feel air moving" | | 18 | "It stood motionless at the" | | 19 | "She holstered the Glock." |
| | ratio | 0.252 | |
| 67.48% | Subject-first sentence starts | Target: ≤72% sentences starting with a subject | | subjectCount | 84 | | totalSentences | 107 | | matches | | 0 | "Quinn's boots slapped through a" | | 1 | "She keyed her radio." | | 2 | "The radio coughed static." | | 3 | "Quinn shook it once, twice." | | 4 | "The LED display flickered with" | | 5 | "She shoved it back into" | | 6 | "She wasn't about to lose" | | 7 | "The suspect disappeared around the" | | 8 | "Quinn rounded it four seconds" | | 9 | "A single streetlight buzzing overhead," | | 10 | "She pressed her back against" | | 11 | "The old rhythm from her" | | 12 | "Metal on metal, somewhere below" | | 13 | "Quinn looked down." | | 14 | "A drainage grate, heavy iron," | | 15 | "She crouched and pressed her" | | 16 | "The grate shifted with a" | | 17 | "The smell that rose up" | | 18 | "The steps were old." | | 19 | "Quinn drew her Glock 17" |
| | ratio | 0.785 | |
| 46.73% | Subordinate conjunction sentence starts | Target: ≥2% sentences starting with a subordinating conjunction | | subConjCount | 1 | | totalSentences | 107 | | matches | | 0 | "Now she was standing in" |
| | ratio | 0.009 | |
| 37.04% | Technical jargon density | Target: ≤6% sentences with technical-jargon patterns | | analyzedSentences | 54 | | technicalSentenceCount | 8 | | matches | | 0 | "Quinn's boots slapped through a puddle that swallowed her ankle, cold water flooding the leather, but she didn't break stride." | | 1 | "Thirty meters ahead, the figure in the dark hoodie cut left past a shuttered kebab shop and vaulted a row of bollards with the easy grace of someone who'd done …" | | 2 | "The smell that rose up was unlike anything she'd catalogued in two decades of crime scenes—burned cinnamon, ozone, something mineral and ancient, like the air i…" | | 3 | "Lanterns hung from the vaulted ceiling on chains that seemed too thin to hold them, casting pools of warm gold across tables piled with merchandise she couldn't…" | | 4 | "Two stalls down, an old woman was reading fortunes from a bowl of black water, and the images that flickered across its surface were sharp enough that Quinn cou…" | | 5 | "The trail had led her from Soho to Camden, from legitimate business fronts to whispered rumors of an underground economy that served a clientele the Metropolita…" | | 6 | "Morris's face in the crime scene photographs—eyes open, expression frozen in something that wasn't fear but recognition, as if he'd understood what was happenin…" | | 7 | "It was warm, warmer than it should have been, and she could feel a faint pulse against her skin, as if the thing had a heartbeat." |
| |
| 13.89% | Useless dialogue additions | Target: ≤5% dialogue tags with trailing filler fragments | | totalTags | 9 | | uselessAdditionCount | 2 | | matches | | 0 | "He rubbed, habitual" | | 1 | "Tomás said, his voice dropping to barely a murmur" |
| |
| 100.00% | Dialogue tag variety (said vs. fancy) | Target: ≤10% fancy dialogue tags | | totalTags | 1 | | fancyCount | 0 | | fancyTags | (empty) | | dialogueSentences | 30 | | tagDensity | 0.033 | | leniency | 0.067 | | rawRatio | 0 | | effectiveRatio | 0 | |