| 100.00% | Adverbs in dialogue tags | Target: ≤10% dialogue tags with adverbs | | totalTags | 1 | | adverbTagCount | 0 | | adverbTags | (empty) | | dialogueSentences | 4 | | tagDensity | 0.25 | | leniency | 0.5 | | rawRatio | 0 | | effectiveRatio | 0 | |
| 70.59% | AI-ism adverb frequency | Target: <2% AI-ism adverbs (58 tracked) | | wordCount | 1190 | | totalAiIsmAdverbs | 7 | | found | | | highlights | | 0 | "slowly" | | 1 | "really" | | 2 | "slightly" | | 3 | "sharply" |
| |
| 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) | |
| 11.76% | AI-ism word frequency | Target: <2% AI-ism words (290 tracked) | | wordCount | 1190 | | totalAiIsms | 21 | | found | | | highlights | | 0 | "pulsed" | | 1 | "warmth" | | 2 | "loomed" | | 3 | "flickered" | | 4 | "pulse" | | 5 | "stomach" | | 6 | "scanning" | | 7 | "racing" | | 8 | "searing" | | 9 | "whisper" | | 10 | "flicker" |
| |
| 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 | 154 | | matches | (empty) | |
| 100.00% | Filter word density | Target: ≤3% sentences with filter/hedge words | | filterCount | 0 | | hedgeCount | 4 | | narrationSentences | 154 | | filterMatches | (empty) | | hedgeMatches | | |
| 100.00% | Gibberish response detection | Target: ≤1% gibberish-like sentences (hard fail if a sentence exceeds 800 words) | | analyzedSentences | 157 | | gibberishSentences | 0 | | adjustedGibberishSentences | 0 | | longSentenceCount | 0 | | runOnParagraphCount | 0 | | giantParagraphCount | 0 | | wordSaladCount | 0 | | repetitionLoopCount | 0 | | controlTokenCount | 0 | | maxSentenceWordsSeen | 35 | | ratio | 0 | | matches | (empty) | |
| 73.20% | Markdown formatting overuse | Target: ≤5% words in markdown formatting | | markdownSpans | 37 | | markdownWords | 75 | | totalWords | 1183 | | ratio | 0.063 | | matches | | 0 | "This is where it should glow." | | 1 | "breathed" | | 2 | "If you want to see him, come when the stones are quiet." | | 3 | "shifted" | | 4 | "It’s just the Grove," | | 5 | "It’s just—" | | 6 | "else" | | 7 | "Paranoia. Exhaustion." | | 8 | "watch" | | 9 | "other" | | 10 | "No. Not leaves." | | 11 | "wrong" | | 12 | "moved" | | 13 | "breathe" | | 14 | "It’s reacting." | | 15 | "impression" | | 16 | "There." | | 17 | "wrong" | | 18 | "Hallucination. Stress. You’re losing it." | | 19 | "react" | | 20 | "watch" | | 21 | "click" | | 22 | "open" | | 23 | "Open" | | 24 | "moved" | | 25 | "Run." | | 26 | "breathe" | | 27 | "thud" | | 28 | "rotten" | | 29 | "other" | | 30 | "\"You shouldn’t have come.\"" | | 31 | "everywhere" | | 32 | "air" | | 33 | "breathe" | | 34 | "\"You were never supposed to see.\"" | | 35 | "\"No,\"" | | 36 | "\"No, no, no—\"" |
| |
| 100.00% | Missing dialogue indicators (quotation marks) | Target: ≤10% speech attributions without quotation marks | | totalAttributions | 5 | | unquotedAttributions | 0 | | matches | (empty) | |
| 81.57% | Name drop frequency | Target: ≤1.0 per-name mentions per 100 words | | totalMentions | 34 | | wordCount | 1169 | | uniqueNames | 7 | | maxNameDensity | 1.37 | | worstName | "Aurora" | | maxWindowNameDensity | 2 | | worstWindowName | "Aurora" | | discoveredNames | | Grove | 7 | | Carter | 1 | | Heartstone | 7 | | Richmond | 1 | | Park | 1 | | London | 1 | | Aurora | 16 |
| | persons | | 0 | "Carter" | | 1 | "Heartstone" | | 2 | "Aurora" |
| | places | | 0 | "Richmond" | | 1 | "Park" | | 2 | "London" |
| | globalScore | 0.816 | | windowScore | 1 | |
| 20.13% | Narrator intent-glossing | Target: ≤2% narration sentences with intent-glossing patterns | | analyzedSentences | 77 | | glossingSentenceCount | 4 | | matches | | 0 | "something like rotting honey" | | 1 | "felt like a wound in the world" | | 2 | "glow that seemed to come from nowhere" | | 3 | "shadows that seemed to move on their own" |
| |
| 100.00% | "Not X but Y" pattern overuse | Target: ≤1 "not X but Y" per 1000 words | | totalMatches | 0 | | per1kWords | 0 | | wordCount | 1183 | | matches | (empty) | |
| 100.00% | Overuse of "that" (subordinate clause padding) | Target: ≤2% sentences with "that" clauses | | thatCount | 0 | | totalSentences | 157 | | matches | (empty) | |
| 100.00% | Paragraph length variance | Target: CV ≥0.5 for paragraph word counts | | totalParagraphs | 66 | | mean | 17.92 | | std | 20.36 | | cv | 1.136 | | sampleLengths | | 0 | 63 | | 1 | 102 | | 2 | 48 | | 3 | 5 | | 4 | 74 | | 5 | 53 | | 6 | 9 | | 7 | 2 | | 8 | 33 | | 9 | 1 | | 10 | 41 | | 11 | 3 | | 12 | 47 | | 13 | 3 | | 14 | 25 | | 15 | 33 | | 16 | 66 | | 17 | 2 | | 18 | 10 | | 19 | 6 | | 20 | 30 | | 21 | 1 | | 22 | 41 | | 23 | 21 | | 24 | 14 | | 25 | 5 | | 26 | 2 | | 27 | 13 | | 28 | 3 | | 29 | 14 | | 30 | 5 | | 31 | 14 | | 32 | 10 | | 33 | 41 | | 34 | 1 | | 35 | 23 | | 36 | 6 | | 37 | 36 | | 38 | 15 | | 39 | 4 | | 40 | 7 | | 41 | 35 | | 42 | 12 | | 43 | 1 | | 44 | 11 | | 45 | 4 | | 46 | 2 | | 47 | 14 | | 48 | 8 | | 49 | 12 |
| |
| 98.43% | Passive voice overuse | Target: ≤2% passive sentences | | passiveCount | 3 | | totalSentences | 154 | | matches | | 0 | "was bathed" | | 1 | "was gone" | | 2 | "were supposed" |
| |
| 74.21% | Past progressive (was/were + -ing) overuse | Target: ≤2% past progressive verbs | | pastProgressiveCount | 4 | | totalVerbs | 212 | | matches | | 0 | "were walking" | | 1 | "was pushing" | | 2 | "was going" | | 3 | "was running" |
| |
| 0.00% | Em-dash & semicolon overuse | Target: ≤2% sentences with em-dashes/semicolons | | emDashCount | 13 | | semicolonCount | 0 | | flaggedSentences | 12 | | totalSentences | 157 | | ratio | 0.076 | | matches | | 0 | "The air in the Grove was too thick, too sweet with the scent of damp earth and something older—something like rotting honey." | | 1 | "She’d followed the directions to the letter—Richmond Park at dusk, past the standing stones where the air hummed just a little differently." | | 2 | "She’d seen photos of the Grove before—wildflowers blooming in impossible patterns, the way the light seemed to bend at the edges—but none of them had prepared her for the way the place *breathed*." | | 3 | "The streetlamps beyond the Grove flickered, then steadied, but the clearing itself was bathed in an eerie, silvered light—no stars, no moon, just a glow that seemed to come from nowhere." | | 4 | "The trees here were different—taller, their branches twisting into shapes that made her stomach clench." | | 5 | "*It’s just—*" | | 6 | "She glanced down—" | | 7 | "—and saw the way the dirt *moved*." | | 8 | "A shape between the trees—tall, slender, *wrong*." | | 9 | "Almost—" | | 10 | "Its face—" | | 11 | "And then—" |
| |
| 92.54% | Purple prose (modifier overload) | Target: <4% adverbs, <2% -ly adverbs, no adj stacking | | wordCount | 1176 | | adjectiveStacks | 1 | | stackExamples | | 0 | "heavier, pressing against her" |
| | adverbCount | 49 | | adverbRatio | 0.041666666666666664 | | lyAdverbCount | 13 | | lyAdverbRatio | 0.011054421768707483 | |
| 100.00% | Repeated phrase echo | Target: ≤20% sentences with echoes (window: 2) | | totalSentences | 157 | | echoCount | 0 | | echoWords | (empty) | |
| 100.00% | Sentence length variance | Target: CV ≥0.4 for sentence word counts | | totalSentences | 157 | | mean | 7.54 | | std | 6.49 | | cv | 0.861 | | sampleLengths | | 0 | 22 | | 1 | 21 | | 2 | 14 | | 3 | 6 | | 4 | 22 | | 5 | 31 | | 6 | 16 | | 7 | 33 | | 8 | 9 | | 9 | 6 | | 10 | 2 | | 11 | 31 | | 12 | 5 | | 13 | 10 | | 14 | 14 | | 15 | 31 | | 16 | 19 | | 17 | 3 | | 18 | 17 | | 19 | 15 | | 20 | 18 | | 21 | 7 | | 22 | 2 | | 23 | 2 | | 24 | 5 | | 25 | 3 | | 26 | 2 | | 27 | 9 | | 28 | 5 | | 29 | 9 | | 30 | 1 | | 31 | 6 | | 32 | 1 | | 33 | 19 | | 34 | 9 | | 35 | 6 | | 36 | 3 | | 37 | 7 | | 38 | 7 | | 39 | 12 | | 40 | 16 | | 41 | 1 | | 42 | 1 | | 43 | 1 | | 44 | 2 | | 45 | 3 | | 46 | 7 | | 47 | 15 | | 48 | 3 | | 49 | 7 |
| |
| 34.08% | Sentence opener variety | Target: ≥60% unique sentence openers | | consecutiveRepeats | 25 | | diversityRatio | 0.2229299363057325 | | totalSentences | 157 | | uniqueOpeners | 35 | |
| 100.00% | Adverb-first sentence starts | Target: ≥3% sentences starting with an adverb | | adverbCount | 4 | | totalSentences | 121 | | matches | | 0 | "Just the *impression* of a" | | 1 | "Just for a second." | | 2 | "Then it was gone, swallowed" | | 3 | "Almost to the *other* side." |
| | ratio | 0.033 | |
| 97.69% | Pronoun-first sentence starts | Target: ≤30% sentences starting with a pronoun | | pronounCount | 37 | | totalSentences | 121 | | matches | | 0 | "She’d followed the directions to" | | 1 | "She’d seen photos of the" | | 2 | "She wasn’t supposed to be" | | 3 | "She stepped between the stones." | | 4 | "She forced herself to move" | | 5 | "*It’s just the Grove,* she" | | 6 | "She turned slowly, scanning the" | | 7 | "She exhaled sharply, shaking her" | | 8 | "It wasn’t supposed to *watch*" | | 9 | "She took a step back," | | 10 | "Her breath hitched." | | 11 | "She glanced down—" | | 12 | "She barely caught herself, her" | | 13 | "She fumbled at her shirt," | | 14 | "She didn’t know what that" | | 15 | "She spun around, her gaze" | | 16 | "It moved like a dancer," | | 17 | "She pressed a hand to" | | 18 | "You’re losing it.*" | | 19 | "It wasn’t supposed to *watch*." |
| | ratio | 0.306 | |
| 59.17% | Subject-first sentence starts | Target: ≤72% sentences starting with a subject | | subjectCount | 97 | | totalSentences | 121 | | matches | | 0 | "The air in the Grove" | | 1 | "Aurora Carter adjusted the strap" | | 2 | "The pendant pulsed faintly, a" | | 3 | "*This is where it should" | | 4 | "She’d followed the directions to" | | 5 | "The path had been clear" | | 6 | "The standing stones loomed ahead," | | 7 | "She’d seen photos of the" | | 8 | "Aurora exhaled slowly, her breath" | | 9 | "She wasn’t supposed to be" | | 10 | "She stepped between the stones." | | 11 | "The moment her foot crossed" | | 12 | "The air turned heavier, pressing" | | 13 | "The streetlamps beyond the Grove" | | 14 | "The wildflowers along the path" | | 15 | "Aurora’s pulse jumped." | | 16 | "She forced herself to move" | | 17 | "The trees here were different—taller," | | 18 | "The Heartstone warmed against her" | | 19 | "*It’s just the Grove,* she" |
| | ratio | 0.802 | |
| 41.32% | Subordinate conjunction sentence starts | Target: ≥2% sentences starting with a subordinating conjunction | | subConjCount | 1 | | totalSentences | 121 | | matches | | | ratio | 0.008 | |
| 23.81% | Technical jargon density | Target: ≤6% sentences with technical-jargon patterns | | analyzedSentences | 42 | | technicalSentenceCount | 7 | | matches | | 0 | "The streetlamps beyond the Grove flickered, then steadied, but the clearing itself was bathed in an eerie, silvered light—no stars, no moon, just a glow that se…" | | 1 | "The Heartstone warmed against her skin, a slow, steady pulse that matched the rhythm of her own heartbeat." | | 2 | "Exhaustion.* She’d been up all night, driving from London, her mind racing with questions she didn’t have answers for." | | 3 | "The earth was too soft, too yielding, as if she were walking on something alive." | | 4 | "The Heartstone burned against her skin now, a searing warmth that made her wince." | | 5 | "It moved like a dancer, fluid and unnatural, its limbs bending at angles that made her stomach clench." | | 6 | "The Heartstone burned against her skin, its glow casting long, shifting shadows that seemed to move on their own." |
| |
| 100.00% | Useless dialogue additions | Target: ≤5% dialogue tags with trailing filler fragments | | totalTags | 1 | | uselessAdditionCount | 0 | | matches | (empty) | |
| 0.00% | Dialogue tag variety (said vs. fancy) | Target: ≤10% fancy dialogue tags | | totalTags | 1 | | fancyCount | 1 | | fancyTags | | 0 | "she whispered (whisper)" |
| | dialogueSentences | 4 | | tagDensity | 0.25 | | leniency | 0.5 | | rawRatio | 1 | | effectiveRatio | 0.5 | |