| 100.00% | Adverbs in dialogue tags | Target: ≤10% dialogue tags with adverbs | | totalTags | 2 | | adverbTagCount | 0 | | adverbTags | (empty) | | dialogueSentences | 5 | | tagDensity | 0.4 | | leniency | 0.8 | | rawRatio | 0 | | effectiveRatio | 0 | |
| 100.00% | AI-ism adverb frequency | Target: <2% AI-ism adverbs (58 tracked) | | wordCount | 1098 | | 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) | |
| 49.91% | AI-ism word frequency | Target: <2% AI-ism words (290 tracked) | | wordCount | 1098 | | totalAiIsms | 11 | | found | | | highlights | | 0 | "chill" | | 1 | "silence" | | 2 | "gloom" | | 3 | "familiar" | | 4 | "pulsed" | | 5 | "chaotic" | | 6 | "stomach" | | 7 | "churn" |
| |
| 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 | 68 | | matches | (empty) | |
| 100.00% | Filter word density | Target: ≤3% sentences with filter/hedge words | | filterCount | 1 | | hedgeCount | 0 | | narrationSentences | 68 | | filterMatches | | | hedgeMatches | (empty) | |
| 100.00% | Gibberish response detection | Target: ≤1% gibberish-like sentences (hard fail if a sentence exceeds 800 words) | | analyzedSentences | 71 | | gibberishSentences | 0 | | adjustedGibberishSentences | 0 | | longSentenceCount | 0 | | runOnParagraphCount | 0 | | giantParagraphCount | 0 | | wordSaladCount | 0 | | repetitionLoopCount | 0 | | controlTokenCount | 0 | | repeatedSegmentCount | 0 | | maxSentenceWordsSeen | 40 | | ratio | 0 | | matches | (empty) | |
| 100.00% | Markdown formatting overuse | Target: ≤5% words in markdown formatting | | markdownSpans | 0 | | markdownWords | 0 | | totalWords | 1089 | | ratio | 0 | | matches | (empty) | |
| 100.00% | Missing dialogue indicators (quotation marks) | Target: ≤10% speech attributions without quotation marks | | totalAttributions | 1 | | unquotedAttributions | 0 | | matches | (empty) | |
| 89.53% | Name drop frequency | Target: ≤1.0 per-name mentions per 100 words | | totalMentions | 41 | | wordCount | 1075 | | uniqueNames | 22 | | maxNameDensity | 1.21 | | worstName | "Harlow" | | maxWindowNameDensity | 2 | | worstWindowName | "Harlow" | | discoveredNames | | Soho | 2 | | Raven | 1 | | Nest | 1 | | Quinn | 2 | | Metropolitan | 1 | | Police | 1 | | Morris | 3 | | Lambeth | 1 | | Harlow | 13 | | Tube | 1 | | Camden | 1 | | Maglite | 1 | | Veil | 1 | | Market | 1 | | Edison | 1 | | Saint | 1 | | Christopher | 1 | | Herrera | 4 | | Spaniard | 1 | | Glock | 1 | | London | 1 | | Detective | 1 |
| | persons | | 0 | "Raven" | | 1 | "Quinn" | | 2 | "Police" | | 3 | "Morris" | | 4 | "Harlow" | | 5 | "Maglite" | | 6 | "Edison" | | 7 | "Saint" | | 8 | "Christopher" | | 9 | "Herrera" | | 10 | "Detective" |
| | places | | 0 | "Soho" | | 1 | "Metropolitan" | | 2 | "Lambeth" | | 3 | "Market" | | 4 | "London" |
| | globalScore | 0.895 | | windowScore | 1 | |
| 100.00% | Narrator intent-glossing | Target: ≤2% narration sentences with intent-glossing patterns | | analyzedSentences | 57 | | glossingSentenceCount | 1 | | matches | | 0 | "tasted like copper and old iron" |
| |
| 100.00% | "Not X but Y" pattern overuse | Target: ≤1 "not X but Y" per 1000 words | | totalMatches | 0 | | per1kWords | 0 | | wordCount | 1089 | | matches | (empty) | |
| 100.00% | Overuse of "that" (subordinate clause padding) | Target: ≤2% sentences with "that" clauses | | thatCount | 0 | | totalSentences | 71 | | matches | (empty) | |
| 100.00% | Paragraph length variance | Target: CV ≥0.5 for paragraph word counts | | totalParagraphs | 28 | | mean | 38.89 | | std | 25.76 | | cv | 0.662 | | sampleLengths | | 0 | 89 | | 1 | 85 | | 2 | 19 | | 3 | 44 | | 4 | 40 | | 5 | 63 | | 6 | 44 | | 7 | 3 | | 8 | 56 | | 9 | 15 | | 10 | 61 | | 11 | 19 | | 12 | 31 | | 13 | 36 | | 14 | 4 | | 15 | 99 | | 16 | 48 | | 17 | 7 | | 18 | 27 | | 19 | 18 | | 20 | 31 | | 21 | 21 | | 22 | 18 | | 23 | 48 | | 24 | 72 | | 25 | 15 | | 26 | 57 | | 27 | 19 |
| |
| 100.00% | Passive voice overuse | Target: ≤2% passive sentences | | passiveCount | 1 | | totalSentences | 68 | | matches | | |
| 39.36% | Past progressive (was/were + -ing) overuse | Target: ≤2% past progressive verbs | | pastProgressiveCount | 4 | | totalVerbs | 166 | | matches | | 0 | "were sliding" | | 1 | "was sourcing" | | 2 | "wasn't just patching" | | 3 | "were hawking" |
| |
| 0.00% | Em-dash & semicolon overuse | Target: ≤2% sentences with em-dashes/semicolons | | emDashCount | 10 | | semicolonCount | 1 | | flaggedSentences | 9 | | totalSentences | 71 | | ratio | 0.127 | | matches | | 0 | "She stayed fifty paces back, her hand brushing the worn leather watch on her left wrist—a nervous tic she’d had since Morris died three years ago in that damp basement in Lambeth." | | 1 | "Harlow had heard the rumors in the precinct—basement talk among the midnight shift about an underground black market that shifted its bones every full moon, trading in enchanted contraband and alchemical poisons." | | 2 | "To pass, they were sliding small, pale objects into a rusted tin can—bone tokens, carved from knuckles and teeth." | | 3 | "A white, scarred hand reached out—wait." | | 4 | "The short curly dark brown hair, the distinct slope of the shoulders, the heavy silver medallion hanging outside the collar—Saint Christopher, catching the dim yellow light." | | 5 | "He wasn't just patching up the wounded; he was sourcing the venom." | | 6 | "Merchants behind tarps and folding tables were hawking impossible things—jars of luminescent moss that hissed in the dark, wrought-iron daggers carved from unidentifiable bone, glass vials swirling with a violet fog that smelled of burnt sugar and copper." | | 7 | "Dozens of faces—some human, some shifted just enough around the eyes and jaw to make the stomach churn—turned toward the disturbance." | | 8 | "Every instinct forged in her eighteen years of service—every survival rule she had ever taught herself—screamed at her to turn back, to call for backup, to wait for dawn." |
| |
| 100.00% | Purple prose (modifier overload) | Target: <4% adverbs, <2% -ly adverbs, no adj stacking | | wordCount | 1092 | | adjectiveStacks | 0 | | stackExamples | (empty) | | adverbCount | 24 | | adverbRatio | 0.02197802197802198 | | lyAdverbCount | 5 | | lyAdverbRatio | 0.004578754578754579 | |
| 100.00% | Repeated phrase echo | Target: ≤20% sentences with echoes (window: 2) | | totalSentences | 71 | | echoCount | 0 | | echoWords | (empty) | |
| 100.00% | Sentence length variance | Target: CV ≥0.4 for sentence word counts | | totalSentences | 71 | | mean | 15.34 | | std | 9.45 | | cv | 0.616 | | sampleLengths | | 0 | 25 | | 1 | 7 | | 2 | 21 | | 3 | 36 | | 4 | 32 | | 5 | 9 | | 6 | 17 | | 7 | 3 | | 8 | 24 | | 9 | 19 | | 10 | 5 | | 11 | 22 | | 12 | 17 | | 13 | 24 | | 14 | 16 | | 15 | 7 | | 16 | 27 | | 17 | 13 | | 18 | 16 | | 19 | 25 | | 20 | 19 | | 21 | 3 | | 22 | 32 | | 23 | 7 | | 24 | 17 | | 25 | 15 | | 26 | 25 | | 27 | 9 | | 28 | 27 | | 29 | 19 | | 30 | 14 | | 31 | 11 | | 32 | 6 | | 33 | 5 | | 34 | 5 | | 35 | 26 | | 36 | 2 | | 37 | 2 | | 38 | 19 | | 39 | 22 | | 40 | 13 | | 41 | 33 | | 42 | 12 | | 43 | 10 | | 44 | 38 | | 45 | 7 | | 46 | 20 | | 47 | 7 | | 48 | 15 | | 49 | 3 |
| |
| 66.67% | Sentence opener variety | Target: ≥60% unique sentence openers | | consecutiveRepeats | 6 | | diversityRatio | 0.4507042253521127 | | totalSentences | 71 | | uniqueOpeners | 32 | |
| 50.51% | Adverb-first sentence starts | Target: ≥3% sentences starting with an adverb | | adverbCount | 1 | | totalSentences | 66 | | matches | | 0 | "Instead, Detective Quinn took a" |
| | ratio | 0.015 | |
| 100.00% | Pronoun-first sentence starts | Target: ≤30% sentences starting with a pronoun | | pronounCount | 13 | | totalSentences | 66 | | matches | | 0 | "She stayed fifty paces back," | | 1 | "They moved with a fluid," | | 2 | "She hit the mouth of" | | 3 | "She drew her service weapon," | | 4 | "She crept forward, hugging the" | | 5 | "Their skin had a strange," | | 6 | "He wasn't just patching up" | | 7 | "She raised her Glock with" | | 8 | "she said, her voice dropping" | | 9 | "He smiled, revealing teeth that" | | 10 | "She tightened her grip on" | | 11 | "Her sharp jaw set into" | | 12 | "It was unfamiliar territory, a" |
| | ratio | 0.197 | |
| 43.33% | Subject-first sentence starts | Target: ≤72% sentences starting with a subject | | subjectCount | 55 | | totalSentences | 66 | | matches | | 0 | "The downpour had turned the" | | 1 | "Harlow Quinn did not feel" | | 2 | "Adrenaline was a furnace behind" | | 3 | "She stayed fifty paces back," | | 4 | "Morris’s death still tasted like" | | 5 | "The brass of the case" | | 6 | "Harlow knew better." | | 7 | "The wound had been wrong," | | 8 | "The suspect wasn't a junkie." | | 9 | "They moved with a fluid," | | 10 | "Every time she got close," | | 11 | "She hit the mouth of" | | 12 | "The air down here was" | | 13 | "Harlow unclipped her Maglite, thumbing" | | 14 | "A sharp, white beam cut" | | 15 | "She drew her service weapon," | | 16 | "A hundred yards down the" | | 17 | "A low murmur of voices" | | 18 | "The Veil Market." | | 19 | "Harlow had heard the rumors" |
| | ratio | 0.833 | |
| 100.00% | Subordinate conjunction sentence starts | Target: ≥2% sentences starting with a subordinating conjunction | | subConjCount | 3 | | totalSentences | 66 | | matches | | 0 | "Now, her quarry was a" | | 1 | "To pass, they were sliding" | | 2 | "If she let him vanish" |
| | ratio | 0.045 | |
| 0.00% | Technical jargon density | Target: ≤6% sentences with technical-jargon patterns | | analyzedSentences | 43 | | technicalSentenceCount | 9 | | matches | | 0 | "They moved with a fluid, unnatural grace that screamed of the underground cabal Harlow had spent the last six months mapping out." | | 1 | "She hit the mouth of the abandoned Tube station beneath Camden, her boots clacking against wet, rusted iron stairs that plunged into absolute blackness." | | 2 | "Harlow had heard the rumors in the precinct—basement talk among the midnight shift about an underground black market that shifted its bones every full moon, tra…" | | 3 | "She crept forward, hugging the soot-stained wall, her breath pluming white in the subterranean chill." | | 4 | "Their skin had a strange, greyish pallor, and one of them had fingers that seemed a joint too long, flexing against the butt of an iron cudgel." | | 5 | "The same clean-cut, polite Spaniard who patched up Soho's underworld every time Harlow got too close to breaking them." | | 6 | "The NHS had stripped his license a year ago for administering unauthorized treatments to patients who didn't show up in hospital registries." | | 7 | "Merchants behind tarps and folding tables were hawking impossible things—jars of luminescent moss that hissed in the dark, wrought-iron daggers carved from unid…" | | 8 | "She raised her Glock with two-handed authority, the beam of her flashlight catching the guard dead in the eyes, pinning him in the white glare like a moth." |
| |
| 0.00% | Useless dialogue additions | Target: ≤5% dialogue tags with trailing filler fragments | | totalTags | 2 | | uselessAdditionCount | 1 | | matches | | 0 | "the guard rasped, his voice sounding like dry gravel rolling down a chute" |
| |
| 100.00% | Dialogue tag variety (said vs. fancy) | Target: ≤10% fancy dialogue tags | | totalTags | 1 | | fancyCount | 0 | | fancyTags | (empty) | | dialogueSentences | 5 | | tagDensity | 0.2 | | leniency | 0.4 | | rawRatio | 0 | | effectiveRatio | 0 | |