| 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 | 662 | | 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) | |
| 16.92% | AI-ism word frequency | Target: <2% AI-ism words (290 tracked) | | wordCount | 662 | | totalAiIsms | 11 | | found | | | highlights | | 0 | "flickered" | | 1 | "pulse" | | 2 | "rhythmic" | | 3 | "stomach" | | 4 | "whisper" | | 5 | "weight" | | 6 | "silence" | | 7 | "raced" | | 8 | "pounding" |
| |
| 100.00% | Cliché density | Target: ≤1 cliche(s) per 800-word window | | totalCliches | 1 | | maxInWindow | 1 | | found | | 0 | | label | "air was thick with" | | count | 1 |
|
| | highlights | | 0 | "The air was thick with" |
| |
| 100.00% | Emotion telling (show vs. tell) | Target: ≤3% sentences with emotion telling | | emotionTells | 0 | | narrationSentences | 65 | | matches | (empty) | |
| 76.92% | Filter word density | Target: ≤3% sentences with filter/hedge words | | filterCount | 1 | | hedgeCount | 2 | | narrationSentences | 65 | | filterMatches | | | hedgeMatches | | 0 | "started to" | | 1 | "seemed to" |
| |
| 100.00% | Gibberish response detection | Target: ≤1% gibberish-like sentences (hard fail if a sentence exceeds 800 words) | | analyzedSentences | 68 | | gibberishSentences | 0 | | adjustedGibberishSentences | 0 | | longSentenceCount | 0 | | runOnParagraphCount | 0 | | giantParagraphCount | 0 | | wordSaladCount | 0 | | repetitionLoopCount | 0 | | controlTokenCount | 0 | | maxSentenceWordsSeen | 32 | | ratio | 0 | | matches | (empty) | |
| 98.93% | Markdown formatting overuse | Target: ≤5% words in markdown formatting | | markdownSpans | 13 | | markdownWords | 33 | | totalWords | 653 | | ratio | 0.051 | | matches | | 0 | "The Raven’s Nest" | | 1 | "clink" | | 2 | "should" | | 3 | "hiss" | | 4 | "wrong" | | 5 | "alive" | | 6 | "thud" | | 7 | "\"You shouldn’t have come in here.\"" | | 8 | "\"You’re too late,\"" | | 9 | "\"They’re already inside.\"" | | 10 | "\"You don’t understand,\"" | | 11 | "\"This isn’t just a market. It’s a prison.\"" | | 12 | "creaked" |
| |
| 75.00% | Missing dialogue indicators (quotation marks) | Target: ≤10% speech attributions without quotation marks | | totalAttributions | 5 | | unquotedAttributions | 1 | | matches | | 0 | "Instead, he laughed—a sound like dry bones shifting." |
| |
| 70.63% | Name drop frequency | Target: ≤1.0 per-name mentions per 100 words | | totalMentions | 12 | | wordCount | 630 | | uniqueNames | 3 | | maxNameDensity | 1.59 | | worstName | "Quinn" | | maxWindowNameDensity | 2 | | worstWindowName | "Quinn" | | discoveredNames | | | persons | | | places | | | globalScore | 0.706 | | windowScore | 1 | |
| 82.43% | Narrator intent-glossing | Target: ≤2% narration sentences with intent-glossing patterns | | analyzedSentences | 37 | | glossingSentenceCount | 1 | | matches | | |
| 46.86% | "Not X but Y" pattern overuse | Target: ≤1 "not X but Y" per 1000 words | | totalMatches | 1 | | per1kWords | 1.531 | | wordCount | 653 | | matches | | 0 | "not just decay, but something *alive* beneath it" |
| |
| 100.00% | Overuse of "that" (subordinate clause padding) | Target: ≤2% sentences with "that" clauses | | thatCount | 0 | | totalSentences | 68 | | matches | (empty) | |
| 100.00% | Paragraph length variance | Target: CV ≥0.5 for paragraph word counts | | totalParagraphs | 31 | | mean | 21.06 | | std | 19.63 | | cv | 0.932 | | sampleLengths | | 0 | 63 | | 1 | 4 | | 2 | 60 | | 3 | 54 | | 4 | 7 | | 5 | 30 | | 6 | 4 | | 7 | 56 | | 8 | 3 | | 9 | 19 | | 10 | 38 | | 11 | 5 | | 12 | 10 | | 13 | 48 | | 14 | 5 | | 15 | 1 | | 16 | 42 | | 17 | 17 | | 18 | 9 | | 19 | 4 | | 20 | 32 | | 21 | 6 | | 22 | 7 | | 23 | 2 | | 24 | 40 | | 25 | 12 | | 26 | 35 | | 27 | 8 | | 28 | 22 | | 29 | 6 | | 30 | 4 |
| |
| 89.07% | Passive voice overuse | Target: ≤2% passive sentences | | passiveCount | 3 | | totalSentences | 65 | | matches | | 0 | "being struck" | | 1 | "were lined" | | 2 | "was slumped" |
| |
| 100.00% | Past progressive (was/were + -ing) overuse | Target: ≤2% past progressive verbs | | pastProgressiveCount | 0 | | totalVerbs | 106 | | matches | (empty) | |
| 0.00% | Em-dash & semicolon overuse | Target: ≤2% sentences with em-dashes/semicolons | | emDashCount | 9 | | semicolonCount | 0 | | flaggedSentences | 7 | | totalSentences | 68 | | ratio | 0.103 | | matches | | 0 | "The suspect—a man with a scarred forearm—had vanished into the labyrinth of Soho’s back alleys, but Quinn wasn’t about to let him slip away." | | 1 | "The scent of something metallic—blood, maybe, or the faint tang of ozone—cut through the rain." | | 2 | "Then she heard it—a low, rhythmic *clink*." | | 3 | "But the real horror was the hidden door—buried behind a stack of leather-bound tomes, its presence announced by the faintest whisper of movement." | | 4 | "The air was thick with the stench of something *wrong*—not just decay, but something *alive* beneath it." | | 5 | "The way the eyes—" | | 6 | "Instead, he laughed—a sound like dry bones shifting." |
| |
| 100.00% | Purple prose (modifier overload) | Target: <4% adverbs, <2% -ly adverbs, no adj stacking | | wordCount | 639 | | adjectiveStacks | 0 | | stackExamples | (empty) | | adverbCount | 25 | | adverbRatio | 0.03912363067292645 | | lyAdverbCount | 0 | | lyAdverbRatio | 0 | |
| 100.00% | Repeated phrase echo | Target: ≤20% sentences with echoes (window: 2) | | totalSentences | 68 | | echoCount | 0 | | echoWords | (empty) | |
| 100.00% | Sentence length variance | Target: CV ≥0.4 for sentence word counts | | totalSentences | 68 | | mean | 9.6 | | std | 7.12 | | cv | 0.741 | | sampleLengths | | 0 | 19 | | 1 | 23 | | 2 | 21 | | 3 | 4 | | 4 | 10 | | 5 | 24 | | 6 | 15 | | 7 | 11 | | 8 | 8 | | 9 | 15 | | 10 | 11 | | 11 | 20 | | 12 | 7 | | 13 | 3 | | 14 | 15 | | 15 | 3 | | 16 | 5 | | 17 | 4 | | 18 | 4 | | 19 | 16 | | 20 | 17 | | 21 | 23 | | 22 | 3 | | 23 | 13 | | 24 | 4 | | 25 | 2 | | 26 | 15 | | 27 | 4 | | 28 | 4 | | 29 | 5 | | 30 | 10 | | 31 | 5 | | 32 | 4 | | 33 | 6 | | 34 | 11 | | 35 | 5 | | 36 | 32 | | 37 | 5 | | 38 | 1 | | 39 | 6 | | 40 | 19 | | 41 | 17 | | 42 | 3 | | 43 | 4 | | 44 | 6 | | 45 | 4 | | 46 | 9 | | 47 | 4 | | 48 | 6 | | 49 | 26 |
| |
| 38.24% | Sentence opener variety | Target: ≥60% unique sentence openers | | consecutiveRepeats | 9 | | diversityRatio | 0.3088235294117647 | | totalSentences | 68 | | uniqueOpeners | 21 | |
| 100.00% | Adverb-first sentence starts | Target: ≥3% sentences starting with an adverb | | adverbCount | 4 | | totalSentences | 62 | | matches | | 0 | "Then she heard it—a low," | | 1 | "Then the door creaked open." | | 2 | "Just a slow, deliberate *hiss*," | | 3 | "Instead, he laughed—a sound like" |
| | ratio | 0.065 | |
| 100.00% | Pronoun-first sentence starts | Target: ≤30% sentences starting with a pronoun | | pronounCount | 18 | | totalSentences | 62 | | matches | | 0 | "She didn’t look back." | | 1 | "Her pulse hammered against her" | | 2 | "She’d been tracking this lead" | | 3 | "Her pulse spiked." | | 4 | "She turned the corner." | | 5 | "She didn’t need to see" | | 6 | "Her hand hovered over the" | | 7 | "She could turn back." | | 8 | "She *should* turn back." | | 9 | "His body was slumped against" | | 10 | "She’d seen this before." | | 11 | "She didn’t have time to" | | 12 | "She didn’t have to." | | 13 | "he said, his voice low," | | 14 | "She grabbed a heavy tome" | | 15 | "He didn’t fall." | | 16 | "He didn’t even scream." | | 17 | "he said, his voice dripping" |
| | ratio | 0.29 | |
| 97.10% | Subject-first sentence starts | Target: ≤72% sentences starting with a subject | | subjectCount | 45 | | totalSentences | 62 | | matches | | 0 | "The neon sign of *The" | | 1 | "Detective Quinn’s boots crunched wet" | | 2 | "The scent of damp earth" | | 3 | "She didn’t look back." | | 4 | "Her pulse hammered against her" | | 5 | "The suspect—a man with a" | | 6 | "The scent of something metallic—blood," | | 7 | "Quinn’s fingers tightened around the" | | 8 | "She’d been tracking this lead" | | 9 | "Her pulse spiked." | | 10 | "The sound came again, closer" | | 11 | "Quinn’s instincts flared." | | 12 | "This wasn’t just another suspect." | | 13 | "This was a warning." | | 14 | "She turned the corner." | | 15 | "The alley opened into a" | | 16 | "The walls were lined with" | | 17 | "Quinn’s breath hitched." | | 18 | "She didn’t need to see" | | 19 | "Her hand hovered over the" |
| | ratio | 0.726 | |
| 0.00% | Subordinate conjunction sentence starts | Target: ≥2% sentences starting with a subordinating conjunction | | subConjCount | 0 | | totalSentences | 62 | | matches | (empty) | | ratio | 0 | |
| 32.97% | Technical jargon density | Target: ≤6% sentences with technical-jargon patterns | | analyzedSentences | 26 | | technicalSentenceCount | 4 | | matches | | 0 | "The alley opened into a cavernous space, the kind of place that made her stomach twist." | | 1 | "The air inside the hidden room was thick with the scent of something old and rotting, the kind of smell that lingered in the back of your throat long after you …" | | 2 | "Not when the man with the scarred forearm was already moving, his boots pounding against the floorboards, his voice cutting through the silence like a blade." | | 3 | "The book crashed into the man’s chest, sending him stumbling back." |
| |
| 0.00% | Useless dialogue additions | Target: ≤5% dialogue tags with trailing filler fragments | | totalTags | 2 | | uselessAdditionCount | 1 | | matches | | 0 | "he said, his voice low, dangerous" |
| |
| 100.00% | Dialogue tag variety (said vs. fancy) | Target: ≤10% fancy dialogue tags | | totalTags | 2 | | fancyCount | 0 | | fancyTags | (empty) | | dialogueSentences | 5 | | tagDensity | 0.4 | | leniency | 0.8 | | rawRatio | 0 | | effectiveRatio | 0 | |