| 100.00% | Adverbs in dialogue tags | Target: ≤10% dialogue tags with adverbs | | totalTags | 4 | | adverbTagCount | 0 | | adverbTags | (empty) | | dialogueSentences | 15 | | tagDensity | 0.267 | | leniency | 0.533 | | rawRatio | 0 | | effectiveRatio | 0 | |
| 90.25% | AI-ism adverb frequency | Target: <2% AI-ism adverbs (58 tracked) | | wordCount | 513 | | 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) | |
| 41.52% | AI-ism word frequency | Target: <2% AI-ism words (290 tracked) | | wordCount | 513 | | totalAiIsms | 6 | | found | | | highlights | | 0 | "shattered" | | 1 | "pulsed" | | 2 | "pulse" | | 3 | "almost alive" | | 4 | "etched" | | 5 | "whisper" |
| |
| 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 | 46 | | matches | (empty) | |
| 100.00% | Filter word density | Target: ≤3% sentences with filter/hedge words | | filterCount | 0 | | hedgeCount | 1 | | narrationSentences | 46 | | filterMatches | (empty) | | hedgeMatches | | |
| 100.00% | Gibberish response detection | Target: ≤1% gibberish-like sentences (hard fail if a sentence exceeds 800 words) | | analyzedSentences | 56 | | gibberishSentences | 0 | | adjustedGibberishSentences | 0 | | longSentenceCount | 0 | | runOnParagraphCount | 0 | | giantParagraphCount | 0 | | wordSaladCount | 0 | | repetitionLoopCount | 0 | | controlTokenCount | 0 | | maxSentenceWordsSeen | 42 | | ratio | 0 | | matches | (empty) | |
| 100.00% | Markdown formatting overuse | Target: ≤5% words in markdown formatting | | markdownSpans | 1 | | markdownWords | 2 | | totalWords | 505 | | ratio | 0.004 | | matches | | |
| 100.00% | Missing dialogue indicators (quotation marks) | Target: ≤10% speech attributions without quotation marks | | totalAttributions | 5 | | unquotedAttributions | 0 | | matches | (empty) | |
| 46.91% | Name drop frequency | Target: ≤1.0 per-name mentions per 100 words | | totalMentions | 18 | | wordCount | 388 | | uniqueNames | 7 | | maxNameDensity | 2.06 | | worstName | "Quinn" | | maxWindowNameDensity | 3 | | worstWindowName | "Quinn" | | discoveredNames | | Tube | 1 | | Harlow | 1 | | Quinn | 8 | | Whitaker | 5 | | Morris | 1 | | Eva | 1 | | Camden | 1 |
| | persons | | 0 | "Harlow" | | 1 | "Quinn" | | 2 | "Whitaker" | | 3 | "Morris" | | 4 | "Eva" | | 5 | "Camden" |
| | places | (empty) | | globalScore | 0.469 | | windowScore | 0.667 | |
| 100.00% | Narrator intent-glossing | Target: ≤2% narration sentences with intent-glossing patterns | | analyzedSentences | 25 | | 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 | 505 | | matches | (empty) | |
| 100.00% | Overuse of "that" (subordinate clause padding) | Target: ≤2% sentences with "that" clauses | | thatCount | 0 | | totalSentences | 56 | | matches | (empty) | |
| 100.00% | Paragraph length variance | Target: CV ≥0.5 for paragraph word counts | | totalParagraphs | 19 | | mean | 26.58 | | std | 15.95 | | cv | 0.6 | | sampleLengths | | 0 | 59 | | 1 | 35 | | 2 | 46 | | 3 | 21 | | 4 | 35 | | 5 | 19 | | 6 | 54 | | 7 | 11 | | 8 | 11 | | 9 | 38 | | 10 | 6 | | 11 | 14 | | 12 | 46 | | 13 | 23 | | 14 | 10 | | 15 | 35 | | 16 | 11 | | 17 | 16 | | 18 | 15 |
| |
| 82.38% | Passive voice overuse | Target: ≤2% passive sentences | | passiveCount | 3 | | totalSentences | 46 | | matches | | 0 | "was sprawled" | | 1 | "been scratched" | | 2 | "was buried" |
| |
| 100.00% | Past progressive (was/were + -ing) overuse | Target: ≤2% past progressive verbs | | pastProgressiveCount | 0 | | totalVerbs | 82 | | matches | (empty) | |
| 0.00% | Em-dash & semicolon overuse | Target: ≤2% sentences with em-dashes/semicolons | | emDashCount | 5 | | semicolonCount | 0 | | flaggedSentences | 5 | | totalSentences | 56 | | ratio | 0.089 | | matches | | 0 | "This wasn’t just another crime scene—it was a puzzle with pieces missing." | | 1 | "“No. He was alive when they left him here.” She pointed to the far wall, where the graffiti had been scratched out in jagged lines—symbols she didn’t recognise, but the way they pulsed under the flickering light made her skin prickle." | | 2 | "She’d seen that before—in the files she’d buried after Morris died." | | 3 | "The sigils etched into the brass weren’t just decorative—they burned faintly, like embers under skin." | | 4 | "She could almost taste the lie in the scene—the way the shadows stretched too long, the way the symbols on the wall seemed to whisper." |
| |
| 97.25% | Purple prose (modifier overload) | Target: <4% adverbs, <2% -ly adverbs, no adj stacking | | wordCount | 394 | | adjectiveStacks | 0 | | stackExamples | (empty) | | adverbCount | 17 | | adverbRatio | 0.04314720812182741 | | lyAdverbCount | 3 | | lyAdverbRatio | 0.007614213197969543 | |
| 100.00% | Repeated phrase echo | Target: ≤20% sentences with echoes (window: 2) | | totalSentences | 56 | | echoCount | 0 | | echoWords | (empty) | |
| 100.00% | Sentence length variance | Target: CV ≥0.4 for sentence word counts | | totalSentences | 56 | | mean | 9.02 | | std | 6.9 | | cv | 0.765 | | sampleLengths | | 0 | 21 | | 1 | 14 | | 2 | 12 | | 3 | 12 | | 4 | 16 | | 5 | 8 | | 6 | 11 | | 7 | 5 | | 8 | 4 | | 9 | 18 | | 10 | 9 | | 11 | 4 | | 12 | 6 | | 13 | 5 | | 14 | 3 | | 15 | 9 | | 16 | 1 | | 17 | 1 | | 18 | 2 | | 19 | 16 | | 20 | 11 | | 21 | 8 | | 22 | 5 | | 23 | 14 | | 24 | 6 | | 25 | 41 | | 26 | 7 | | 27 | 4 | | 28 | 7 | | 29 | 6 | | 30 | 5 | | 31 | 9 | | 32 | 15 | | 33 | 3 | | 34 | 11 | | 35 | 6 | | 36 | 3 | | 37 | 11 | | 38 | 3 | | 39 | 6 | | 40 | 15 | | 41 | 7 | | 42 | 2 | | 43 | 13 | | 44 | 3 | | 45 | 20 | | 46 | 6 | | 47 | 4 | | 48 | 10 | | 49 | 25 |
| |
| 66.07% | Sentence opener variety | Target: ≥60% unique sentence openers | | consecutiveRepeats | 3 | | diversityRatio | 0.42857142857142855 | | totalSentences | 56 | | uniqueOpeners | 24 | |
| 0.00% | Adverb-first sentence starts | Target: ≥3% sentences starting with an adverb | | adverbCount | 0 | | totalSentences | 40 | | matches | (empty) | | ratio | 0 | |
| 100.00% | Pronoun-first sentence starts | Target: ≤30% sentences starting with a pronoun | | pronounCount | 10 | | totalSentences | 40 | | matches | | 0 | "he said, voice tight" | | 1 | "She didn’t need to." | | 2 | "It was from restraints." | | 3 | "She crouched, examining the concrete." | | 4 | "She pointed to the far" | | 5 | "She’d seen that before—in the" | | 6 | "She’d read about these in" | | 7 | "She could almost taste the" | | 8 | "She didn’t answer." | | 9 | "She was already moving toward" |
| | ratio | 0.25 | |
| 22.50% | Subject-first sentence starts | Target: ≤72% sentences starting with a subject | | subjectCount | 35 | | totalSentences | 40 | | matches | | 0 | "The abandoned Tube station reeked" | | 1 | "Detective Harlow Quinn stepped over" | | 2 | "The flickering overhead lights cast" | | 3 | "This wasn’t just another crime" | | 4 | "DS Whitaker stood near the" | | 5 | "he said, voice tight" | | 6 | "Quinn didn’t touch the body." | | 7 | "She didn’t need to." | | 8 | "The victim was sprawled near" | | 9 | "It was from restraints." | | 10 | "She crouched, examining the concrete." | | 11 | "Quinn tapped the ground where" | | 12 | "The marks were too precise," | | 13 | "Whitaker exhaled through his nose." | | 14 | "Quinn stood, her sharp jaw" | | 15 | "She pointed to the far" | | 16 | "Whitaker followed her gaze." | | 17 | "Quinn’s voice was low, certain" | | 18 | "A uniformed officer approached, holding" | | 19 | "The needle spun wildly before" |
| | ratio | 0.875 | |
| 0.00% | Subordinate conjunction sentence starts | Target: ≥2% sentences starting with a subordinating conjunction | | subConjCount | 0 | | totalSentences | 40 | | matches | (empty) | | ratio | 0 | |
| 95.24% | Technical jargon density | Target: ≤6% sentences with technical-jargon patterns | | analyzedSentences | 15 | | technicalSentenceCount | 1 | | matches | | 0 | "The abandoned Tube station reeked of damp concrete and something older, something that clung to the air like a second skin." |
| |
| 0.00% | Useless dialogue additions | Target: ≤5% dialogue tags with trailing filler fragments | | totalTags | 4 | | uselessAdditionCount | 1 | | matches | | |
| 100.00% | Dialogue tag variety (said vs. fancy) | Target: ≤10% fancy dialogue tags | | totalTags | 2 | | fancyCount | 0 | | fancyTags | (empty) | | dialogueSentences | 15 | | tagDensity | 0.133 | | leniency | 0.267 | | rawRatio | 0 | | effectiveRatio | 0 | |