| 100.00% | Adverbs in dialogue tags | Target: ≤10% dialogue tags with adverbs | | totalTags | 16 | | adverbTagCount | 0 | | adverbTags | (empty) | | dialogueSentences | 29 | | tagDensity | 0.552 | | leniency | 1 | | rawRatio | 0 | | effectiveRatio | 0 | |
| 67.90% | AI-ism adverb frequency | Target: <2% AI-ism adverbs (58 tracked) | | wordCount | 1246 | | totalAiIsmAdverbs | 8 | | found | | 0 | | | 1 | | | 2 | | | 3 | | adverb | "deliberately" | | count | 1 |
| | 4 | | | 5 | | | 6 | |
| | highlights | | 0 | "very" | | 1 | "gently" | | 2 | "lazily" | | 3 | "deliberately" | | 4 | "carefully" | | 5 | "slightly" | | 6 | "really" |
| |
| 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) | |
| 55.86% | AI-ism word frequency | Target: <2% AI-ism words (290 tracked) | | wordCount | 1246 | | totalAiIsms | 11 | | found | | | highlights | | 0 | "echoed" | | 1 | "footsteps" | | 2 | "silence" | | 3 | "silk" | | 4 | "perfect" | | 5 | "scanning" | | 6 | "weight" | | 7 | "chill" | | 8 | "racing" |
| |
| 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 | 100 | | matches | (empty) | |
| 100.00% | Filter word density | Target: ≤3% sentences with filter/hedge words | | filterCount | 2 | | hedgeCount | 1 | | narrationSentences | 100 | | filterMatches | | | hedgeMatches | | |
| 100.00% | Gibberish response detection | Target: ≤1% gibberish-like sentences (hard fail if a sentence exceeds 800 words) | | analyzedSentences | 116 | | gibberishSentences | 0 | | adjustedGibberishSentences | 0 | | longSentenceCount | 0 | | runOnParagraphCount | 0 | | giantParagraphCount | 0 | | wordSaladCount | 0 | | repetitionLoopCount | 0 | | controlTokenCount | 0 | | maxSentenceWordsSeen | 40 | | ratio | 0 | | matches | (empty) | |
| 100.00% | Markdown formatting overuse | Target: ≤5% words in markdown formatting | | markdownSpans | 0 | | markdownWords | 0 | | totalWords | 1232 | | ratio | 0 | | matches | (empty) | |
| 100.00% | Missing dialogue indicators (quotation marks) | Target: ≤10% speech attributions without quotation marks | | totalAttributions | 14 | | unquotedAttributions | 0 | | matches | (empty) | |
| 76.39% | Name drop frequency | Target: ≤1.0 per-name mentions per 100 words | | totalMentions | 46 | | wordCount | 951 | | uniqueNames | 12 | | maxNameDensity | 1.47 | | worstName | "Quinn" | | maxWindowNameDensity | 2.5 | | worstWindowName | "Peters" | | discoveredNames | | Camden | 2 | | Underground | 1 | | Peters | 11 | | Quinn | 14 | | Italian | 1 | | Veil | 3 | | Market | 3 | | Platform | 2 | | Kings | 2 | | Cross | 2 | | Morris | 3 | | London | 2 |
| | persons | | 0 | "Underground" | | 1 | "Peters" | | 2 | "Quinn" | | 3 | "Market" | | 4 | "Platform" | | 5 | "Morris" |
| | places | | | globalScore | 0.764 | | windowScore | 0.833 | |
| 100.00% | Narrator intent-glossing | Target: ≤2% narration sentences with intent-glossing patterns | | analyzedSentences | 67 | | glossingSentenceCount | 0 | | matches | (empty) | |
| 100.00% | "Not X but Y" pattern overuse | Target: ≤1 "not X but Y" per 1000 words | | totalMatches | 1 | | per1kWords | 0.812 | | wordCount | 1232 | | matches | | 0 | "not directions, but symbols she didn't recognize" |
| |
| 100.00% | Overuse of "that" (subordinate clause padding) | Target: ≤2% sentences with "that" clauses | | thatCount | 1 | | totalSentences | 116 | | matches | | |
| 100.00% | Paragraph length variance | Target: CV ≥0.5 for paragraph word counts | | totalParagraphs | 47 | | mean | 26.21 | | std | 14.86 | | cv | 0.567 | | sampleLengths | | 0 | 49 | | 1 | 47 | | 2 | 14 | | 3 | 47 | | 4 | 21 | | 5 | 38 | | 6 | 16 | | 7 | 22 | | 8 | 16 | | 9 | 38 | | 10 | 9 | | 11 | 7 | | 12 | 44 | | 13 | 47 | | 14 | 16 | | 15 | 14 | | 16 | 27 | | 17 | 48 | | 18 | 7 | | 19 | 3 | | 20 | 25 | | 21 | 17 | | 22 | 27 | | 23 | 51 | | 24 | 9 | | 25 | 7 | | 26 | 38 | | 27 | 35 | | 28 | 30 | | 29 | 14 | | 30 | 10 | | 31 | 45 | | 32 | 10 | | 33 | 41 | | 34 | 13 | | 35 | 58 | | 36 | 36 | | 37 | 39 | | 38 | 16 | | 39 | 24 | | 40 | 24 | | 41 | 37 | | 42 | 25 | | 43 | 32 | | 44 | 19 | | 45 | 18 | | 46 | 2 |
| |
| 98.25% | Passive voice overuse | Target: ≤2% passive sentences | | passiveCount | 2 | | totalSentences | 100 | | matches | | 0 | "been disturbed" | | 1 | "been tucked" |
| |
| 8.43% | Past progressive (was/were + -ing) overuse | Target: ≤2% past progressive verbs | | pastProgressiveCount | 5 | | totalVerbs | 174 | | matches | | 0 | "wasn't listening" | | 1 | "was being" | | 2 | "was checking" | | 3 | "was breaking" | | 4 | "were setting" |
| |
| 0.00% | Em-dash & semicolon overuse | Target: ≤2% sentences with em-dashes/semicolons | | emDashCount | 10 | | semicolonCount | 0 | | flaggedSentences | 9 | | totalSentences | 116 | | ratio | 0.078 | | matches | | 0 | "The smell hit her first—not the usual cocktail of piss and decay she expected from derelict Underground sites, but something else." | | 1 | "She checked her watch—3:47 AM." | | 2 | "The man wore expensive clothes—silk shirt, tailored trousers, Italian leather shoes that probably cost more than her monthly salary." | | 3 | "Strange markings covered its face—not directions, but symbols she didn't recognize." | | 4 | "Those weren't random scuff marks on the tiles—they formed a pattern." | | 5 | "She pocketed the compass—a breach of protocol she'd worry about later—and continued her examination." | | 6 | "She'd checked the weather reports before leaving the station—habit from years of outdoor crime scenes." | | 7 | "Quinn had interviewed enough suspects to recognize the tells—the slight pause, the formal address when he'd been calling her Quinn all night, the way his hand drifted to his pocket like he was checking for something." | | 8 | "Three years ago, she'd lost Morris in a case that made no sense—witnesses who changed their stories, evidence that disappeared, and at the center of it all, whispers of something called the Veil Market." |
| |
| 100.00% | Purple prose (modifier overload) | Target: <4% adverbs, <2% -ly adverbs, no adj stacking | | wordCount | 983 | | adjectiveStacks | 0 | | stackExamples | (empty) | | adverbCount | 34 | | adverbRatio | 0.03458799593082401 | | lyAdverbCount | 17 | | lyAdverbRatio | 0.017293997965412006 | |
| 100.00% | Repeated phrase echo | Target: ≤20% sentences with echoes (window: 2) | | totalSentences | 116 | | echoCount | 0 | | echoWords | (empty) | |
| 100.00% | Sentence length variance | Target: CV ≥0.4 for sentence word counts | | totalSentences | 116 | | mean | 10.62 | | std | 7.08 | | cv | 0.667 | | sampleLengths | | 0 | 17 | | 1 | 21 | | 2 | 1 | | 3 | 1 | | 4 | 9 | | 5 | 20 | | 6 | 9 | | 7 | 2 | | 8 | 5 | | 9 | 8 | | 10 | 3 | | 11 | 12 | | 12 | 2 | | 13 | 12 | | 14 | 24 | | 15 | 11 | | 16 | 6 | | 17 | 15 | | 18 | 11 | | 19 | 19 | | 20 | 8 | | 21 | 4 | | 22 | 12 | | 23 | 9 | | 24 | 13 | | 25 | 2 | | 26 | 14 | | 27 | 7 | | 28 | 12 | | 29 | 11 | | 30 | 8 | | 31 | 9 | | 32 | 7 | | 33 | 4 | | 34 | 4 | | 35 | 5 | | 36 | 20 | | 37 | 11 | | 38 | 8 | | 39 | 11 | | 40 | 14 | | 41 | 14 | | 42 | 9 | | 43 | 7 | | 44 | 14 | | 45 | 3 | | 46 | 12 | | 47 | 12 | | 48 | 14 | | 49 | 5 |
| |
| 72.70% | Sentence opener variety | Target: ≥60% unique sentence openers | | consecutiveRepeats | 4 | | diversityRatio | 0.45689655172413796 | | totalSentences | 116 | | uniqueOpeners | 53 | |
| 100.00% | Adverb-first sentence starts | Target: ≥3% sentences starting with an adverb | | adverbCount | 3 | | totalSentences | 87 | | matches | | 0 | "Instead, it formed an almost" | | 1 | "More wrong details jumped out." | | 2 | "Probably on his phone already," |
| | ratio | 0.034 | |
| 100.00% | Pronoun-first sentence starts | Target: ≤30% sentences starting with a pronoun | | pronounCount | 20 | | totalSentences | 87 | | matches | | 0 | "She checked her watch—3:47 AM." | | 1 | "She followed the voice, her" | | 2 | "His right hand clutched something" | | 3 | "She'd noticed something else." | | 4 | "She stood, scanning the platform" | | 5 | "She gestured to the candles" | | 6 | "She pocketed the compass—a breach" | | 7 | "She pointed to the pattern" | | 8 | "She'd checked the weather reports" | | 9 | "She photographed it in place" | | 10 | "she asked Peters" | | 11 | "His face went carefully blank." | | 12 | "She made a show of" | | 13 | "He relaxed slightly when she" | | 14 | "Its brass surface was warm," | | 15 | "She needed to examine it" | | 16 | "She'd let it go then." | | 17 | "She glanced back at the" | | 18 | "She had two choices." | | 19 | "She had a few hours" |
| | ratio | 0.23 | |
| 74.94% | Subject-first sentence starts | Target: ≤72% sentences starting with a subject | | subjectCount | 67 | | totalSentences | 87 | | matches | | 0 | "Quinn ducked under the yellow" | | 1 | "The smell hit her first—not" | | 2 | "The platform stretched before her" | | 3 | "She checked her watch—3:47 AM." | | 4 | "The call had come in" | | 5 | "A voice echoed from the" | | 6 | "She followed the voice, her" | | 7 | "Sergeant Peters stood beside the" | | 8 | "The victim lay sprawled across" | | 9 | "Peters said without preamble" | | 10 | "Quinn crouched beside the body," | | 11 | "The man wore expensive clothes—silk" | | 12 | "His right hand clutched something" | | 13 | "Quinn pulled on latex gloves" | | 14 | "Quinn gently pried open the" | | 15 | "A compass fell into her" | | 16 | "The needle spun lazily, pointing" | | 17 | "She'd noticed something else." | | 18 | "The blood pool was wrong." | | 19 | "She stood, scanning the platform" |
| | ratio | 0.77 | |
| 0.00% | Subordinate conjunction sentence starts | Target: ≥2% sentences starting with a subordinating conjunction | | subConjCount | 0 | | totalSentences | 87 | | matches | (empty) | | ratio | 0 | |
| 100.00% | Technical jargon density | Target: ≤6% sentences with technical-jargon patterns | | analyzedSentences | 38 | | technicalSentenceCount | 2 | | matches | | 0 | "Below that, an address that made no sense: Platform 9¾, Kings Cross." | | 1 | "Three years ago, she'd lost Morris in a case that made no sense—witnesses who changed their stories, evidence that disappeared, and at the center of it all, whi…" |
| |
| 93.75% | Useless dialogue additions | Target: ≤5% dialogue tags with trailing filler fragments | | totalTags | 16 | | uselessAdditionCount | 1 | | matches | | 0 | "Peters said, but his heart wasn't in it" |
| |
| 81.03% | Dialogue tag variety (said vs. fancy) | Target: ≤10% fancy dialogue tags | | totalTags | 7 | | fancyCount | 2 | | fancyTags | | 0 | "Peters continued (continue)" | | 1 | "she murmured (murmur)" |
| | dialogueSentences | 29 | | tagDensity | 0.241 | | leniency | 0.483 | | rawRatio | 0.286 | | effectiveRatio | 0.138 | |