| 100.00% | Adverbs in dialogue tags | Target: ≤10% dialogue tags with adverbs | |
| 81.26% | AI-ism adverb frequency | Target: <2% AI-ism adverbs (58 tracked) | | wordCount | 1067 | | totalAiIsmAdverbs | 4 | | found | | | highlights | | 0 | "sharply" | | 1 | "slowly" | | 2 | "really" | | 3 | "softly" |
| |
| 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) | |
| 25.02% | AI-ism word frequency | Target: <2% AI-ism words (290 tracked) | | wordCount | 1067 | | totalAiIsms | 16 | | found | | | highlights | | 0 | "rhythmic" | | 1 | "wavered" | | 2 | "gloom" | | 3 | "familiar" | | 4 | "loomed" | | 5 | "stark" | | 6 | "echoing" | | 7 | "framework" | | 8 | "echoed" | | 9 | "maw" | | 10 | "silence" | | 11 | "profound" | | 12 | "pulsed" |
| |
| 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 | 1 | | narrationSentences | 74 | | matches | | |
| 65.64% | Filter word density | Target: ≤3% sentences with filter/hedge words | | filterCount | 3 | | hedgeCount | 1 | | narrationSentences | 74 | | filterMatches | | | hedgeMatches | | |
| 100.00% | Gibberish response detection | Target: ≤1% gibberish-like sentences (hard fail if a sentence exceeds 800 words) | | analyzedSentences | 74 | | gibberishSentences | 0 | | adjustedGibberishSentences | 0 | | longSentenceCount | 0 | | runOnParagraphCount | 0 | | giantParagraphCount | 0 | | wordSaladCount | 0 | | repetitionLoopCount | 0 | | controlTokenCount | 0 | | repeatedSegmentCount | 0 | | maxSentenceWordsSeen | 39 | | ratio | 0 | | matches | (empty) | |
| 100.00% | Markdown formatting overuse | Target: ≤5% words in markdown formatting | | markdownSpans | 0 | | markdownWords | 0 | | totalWords | 1061 | | ratio | 0 | | matches | (empty) | |
| 100.00% | Missing dialogue indicators (quotation marks) | Target: ≤10% speech attributions without quotation marks | | totalAttributions | 2 | | unquotedAttributions | 1 | | matches | | 0 | "Detective Quinn, he said, his voice breathless, laced with a heavy Spanish cadence." |
| |
| 83.33% | Name drop frequency | Target: ≤1.0 per-name mentions per 100 words | | totalMentions | 60 | | wordCount | 1061 | | uniqueNames | 24 | | maxNameDensity | 1.04 | | worstName | "Herrera" | | maxWindowNameDensity | 2.5 | | worstWindowName | "You" | | discoveredNames | | Soho | 1 | | London | 3 | | Harlow | 1 | | Quinn | 10 | | Metropolitan | 1 | | Police | 2 | | Herrera | 11 | | Raven | 1 | | Nest | 1 | | Camden | 2 | | Morris | 3 | | West | 1 | | End | 1 | | North | 1 | | Victorian | 1 | | Underground | 1 | | Veil | 1 | | Market | 1 | | Saint | 1 | | Christopher | 1 | | Spanish | 1 | | Tomás | 4 | | Detective | 4 | | You | 6 |
| | persons | | 0 | "Harlow" | | 1 | "Quinn" | | 2 | "Police" | | 3 | "Herrera" | | 4 | "Raven" | | 5 | "Nest" | | 6 | "Morris" | | 7 | "Saint" | | 8 | "Christopher" | | 9 | "Tomás" | | 10 | "Detective" | | 11 | "You" |
| | places | | 0 | "Soho" | | 1 | "London" | | 2 | "Camden" | | 3 | "West" | | 4 | "End" | | 5 | "North" |
| | globalScore | 0.982 | | windowScore | 0.833 | |
| 100.00% | Narrator intent-glossing | Target: ≤2% narration sentences with intent-glossing patterns | | analyzedSentences | 60 | | 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 | 1061 | | matches | (empty) | |
| 100.00% | Overuse of "that" (subordinate clause padding) | Target: ≤2% sentences with "that" clauses | | thatCount | 0 | | totalSentences | 74 | | matches | (empty) | |
| 100.00% | Paragraph length variance | Target: CV ≥0.5 for paragraph word counts | | totalParagraphs | 24 | | mean | 44.21 | | std | 24.17 | | cv | 0.547 | | sampleLengths | | 0 | 90 | | 1 | 65 | | 2 | 54 | | 3 | 58 | | 4 | 76 | | 5 | 76 | | 6 | 18 | | 7 | 30 | | 8 | 25 | | 9 | 57 | | 10 | 3 | | 11 | 65 | | 12 | 27 | | 13 | 46 | | 14 | 20 | | 15 | 31 | | 16 | 27 | | 17 | 15 | | 18 | 39 | | 19 | 60 | | 20 | 45 | | 21 | 41 | | 22 | 86 | | 23 | 7 |
| |
| 91.04% | Passive voice overuse | Target: ≤2% passive sentences | | passiveCount | 3 | | totalSentences | 74 | | matches | | 0 | "was plastered" | | 1 | "was hunted" | | 2 | "been padlocked" |
| |
| 100.00% | Past progressive (was/were + -ing) overuse | Target: ≤2% past progressive verbs | | pastProgressiveCount | 2 | | totalVerbs | 169 | | matches | | 0 | "wasn't stopping" | | 1 | "was running" |
| |
| 0.00% | Em-dash & semicolon overuse | Target: ≤2% sentences with em-dashes/semicolons | | emDashCount | 6 | | semicolonCount | 0 | | flaggedSentences | 4 | | totalSentences | 74 | | ratio | 0.054 | | matches | | 0 | "He clutched something tight against his chest—a small, dark package wrapped in heavy cloth." | | 1 | "He wrenched open a side maintenance door—one that should have been padlocked shut—and slipped into the pitch-black maw of the stairwell." | | 2 | "A thin silver chain caught the stray beam of her flashlight—a Saint Christopher medallion resting against his chest." | | 3 | "Every instinct she possessed—every survival protocol drilled into her during her first week at the academy—screamed at her to turn around, to call for backup that would never arrive in time, to walk away from the abyss." |
| |
| 100.00% | Purple prose (modifier overload) | Target: <4% adverbs, <2% -ly adverbs, no adj stacking | | wordCount | 1072 | | adjectiveStacks | 0 | | stackExamples | (empty) | | adverbCount | 27 | | adverbRatio | 0.025186567164179104 | | lyAdverbCount | 12 | | lyAdverbRatio | 0.011194029850746268 | |
| 100.00% | Repeated phrase echo | Target: ≤20% sentences with echoes (window: 2) | | totalSentences | 74 | | echoCount | 0 | | echoWords | (empty) | |
| 100.00% | Sentence length variance | Target: CV ≥0.4 for sentence word counts | | totalSentences | 74 | | mean | 14.34 | | std | 8.67 | | cv | 0.605 | | sampleLengths | | 0 | 21 | | 1 | 8 | | 2 | 28 | | 3 | 33 | | 4 | 11 | | 5 | 17 | | 6 | 2 | | 7 | 24 | | 8 | 11 | | 9 | 20 | | 10 | 21 | | 11 | 13 | | 12 | 20 | | 13 | 24 | | 14 | 14 | | 15 | 14 | | 16 | 9 | | 17 | 22 | | 18 | 28 | | 19 | 3 | | 20 | 20 | | 21 | 18 | | 22 | 17 | | 23 | 21 | | 24 | 3 | | 25 | 15 | | 26 | 19 | | 27 | 11 | | 28 | 4 | | 29 | 21 | | 30 | 15 | | 31 | 16 | | 32 | 26 | | 33 | 3 | | 34 | 24 | | 35 | 21 | | 36 | 5 | | 37 | 15 | | 38 | 5 | | 39 | 22 | | 40 | 6 | | 41 | 22 | | 42 | 18 | | 43 | 20 | | 44 | 3 | | 45 | 3 | | 46 | 25 | | 47 | 13 | | 48 | 6 | | 49 | 8 |
| |
| 63.96% | Sentence opener variety | Target: ≥60% unique sentence openers | | consecutiveRepeats | 6 | | diversityRatio | 0.43243243243243246 | | totalSentences | 74 | | uniqueOpeners | 32 | |
| 93.90% | Adverb-first sentence starts | Target: ≥3% sentences starting with an adverb | | adverbCount | 2 | | totalSentences | 71 | | matches | | 0 | "Then you’ll have to pay" | | 1 | "Instead, Detective Quinn took one" |
| | ratio | 0.028 | |
| 62.25% | Pronoun-first sentence starts | Target: ≤30% sentences starting with a pronoun | | pronounCount | 28 | | totalSentences | 71 | | matches | | 0 | "Her focus was absolute, honed" | | 1 | "Her closely cropped salt-and-pepper hair" | | 2 | "She checked her stride, her" | | 3 | "He carried himself like a" | | 4 | "He was cutting through the" | | 5 | "She tracked him with military" | | 6 | "He clutched something tight against" | | 7 | "She knew the clique Herrera" | | 8 | "She knew they dealt in" | | 9 | "She wanted answers." | | 10 | "He cut across a patch" | | 11 | "She slid down the muddy" | | 12 | "He wrenched open a side" | | 13 | "She pulled a heavy-duty flashlight" | | 14 | "He didn't turn around, but" | | 15 | "You’re a long way from" | | 16 | "His chest heaved." | | 17 | "He looked smaller down here," | | 18 | "You really shouldn't have followed" | | 19 | "I make my own mortality," |
| | ratio | 0.394 | |
| 44.51% | Subject-first sentence starts | Target: ≤72% sentences starting with a subject | | subjectCount | 59 | | totalSentences | 71 | | matches | | 0 | "The rain in Soho fell" | | 1 | "Detective Harlow Quinn did not" | | 2 | "Her focus was absolute, honed" | | 3 | "Her closely cropped salt-and-pepper hair" | | 4 | "She checked her stride, her" | | 5 | "The former NHS paramedic, stripped" | | 6 | "He carried himself like a" | | 7 | "Quinn rounded the corner, her" | | 8 | "The Raven’s Nest loomed to" | | 9 | "He was cutting through the" | | 10 | "She tracked him with military" | | 11 | "Herrera glanced over his shoulder" | | 12 | "He clutched something tight against" | | 13 | "Quinn broke into a hard" | | 14 | "She knew the clique Herrera" | | 15 | "She knew they dealt in" | | 16 | "She wanted answers." | | 17 | "The chase dragged them away" | | 18 | "The city grew quieter, the" | | 19 | "Herrera was running harder now," |
| | ratio | 0.831 | |
| 100.00% | Subordinate conjunction sentence starts | Target: ≥2% sentences starting with a subordinating conjunction | | subConjCount | 2 | | totalSentences | 71 | | matches | | 0 | "Now, we can do this" | | 1 | "Because I’m not going back," |
| | ratio | 0.028 | |
| 68.45% | Technical jargon density | Target: ≤6% sentences with technical-jargon patterns | | analyzedSentences | 48 | | technicalSentenceCount | 5 | | matches | | 0 | "The former NHS paramedic, stripped of his license for stitching up things that didn't bleed normal blood, was moving with a desperate, jerky cadence." | | 1 | "She knew they dealt in things that defied the coroner's manual, things that made her skin prickle with a deep, visceral unease." | | 2 | "Herrera was running harder now, his breath coming in ragged gasps that echoed off the damp brickwork." | | 3 | "He cut across a patch of overgrown wasteland, scrambling down a concrete embankment that dropped steeply toward the disused railway lines." | | 4 | "Quinn tightened her grip on her flashlight, her thumb resting on the heavy metal casing." |
| |
| 100.00% | Useless dialogue additions | Target: ≤5% dialogue tags with trailing filler fragments | | totalTags | 0 | | uselessAdditionCount | 0 | | matches | (empty) | |
| 100.00% | Dialogue tag variety (said vs. fancy) | Target: ≤10% fancy dialogue tags | |