| 100.00% | Adverbs in dialogue tags | Target: ≤10% dialogue tags with adverbs | | totalTags | 5 | | adverbTagCount | 0 | | adverbTags | (empty) | | dialogueSentences | 6 | | tagDensity | 0.833 | | leniency | 1 | | rawRatio | 0 | | effectiveRatio | 0 | |
| 93.07% | AI-ism adverb frequency | Target: <2% AI-ism adverbs (58 tracked) | | wordCount | 1443 | | totalAiIsmAdverbs | 2 | | 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) | |
| 61.88% | AI-ism word frequency | Target: <2% AI-ism words (290 tracked) | | wordCount | 1443 | | totalAiIsms | 11 | | found | | | highlights | | 0 | "pulsed" | | 1 | "throb" | | 2 | "pulse" | | 3 | "stomach" | | 4 | "flickered" | | 5 | "echo" | | 6 | "silence" | | 7 | "warmth" | | 8 | "could feel" |
| |
| 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 | 130 | | matches | (empty) | |
| 100.00% | Filter word density | Target: ≤3% sentences with filter/hedge words | | filterCount | 0 | | hedgeCount | 0 | | narrationSentences | 130 | | filterMatches | (empty) | | hedgeMatches | (empty) | |
| 100.00% | Gibberish response detection | Target: ≤1% gibberish-like sentences (hard fail if a sentence exceeds 800 words) | | analyzedSentences | 132 | | gibberishSentences | 0 | | adjustedGibberishSentences | 0 | | longSentenceCount | 0 | | runOnParagraphCount | 0 | | giantParagraphCount | 0 | | wordSaladCount | 0 | | repetitionLoopCount | 0 | | controlTokenCount | 0 | | repeatedSegmentCount | 0 | | maxSentenceWordsSeen | 42 | | ratio | 0 | | matches | (empty) | |
| 100.00% | Markdown formatting overuse | Target: ≤5% words in markdown formatting | | markdownSpans | 0 | | markdownWords | 0 | | totalWords | 1428 | | ratio | 0 | | matches | (empty) | |
| 100.00% | Missing dialogue indicators (quotation marks) | Target: ≤10% speech attributions without quotation marks | | totalAttributions | 5 | | unquotedAttributions | 0 | | matches | (empty) | |
| 100.00% | Name drop frequency | Target: ≤1.0 per-name mentions per 100 words | | totalMentions | 19 | | wordCount | 1393 | | uniqueNames | 8 | | maxNameDensity | 0.65 | | worstName | "Rory" | | maxWindowNameDensity | 1 | | worstWindowName | "Rory" | | discoveredNames | | Richmond | 1 | | Park | 1 | | Heartstone | 3 | | Earth | 2 | | Fae | 1 | | Hel | 1 | | Evan | 1 | | Rory | 9 |
| | persons | | 0 | "Heartstone" | | 1 | "Evan" | | 2 | "Rory" |
| | places | | 0 | "Richmond" | | 1 | "Park" | | 2 | "Earth" | | 3 | "Hel" |
| | globalScore | 1 | | windowScore | 1 | |
| 100.00% | Narrator intent-glossing | Target: ≤2% narration sentences with intent-glossing patterns | | analyzedSentences | 84 | | glossingSentenceCount | 0 | | matches | (empty) | |
| 0.00% | "Not X but Y" pattern overuse | Target: ≤1 "not X but Y" per 1000 words | | totalMatches | 3 | | per1kWords | 2.101 | | wordCount | 1428 | | matches | | 0 | "not as a light but as a shape in her hand, something solid to hold" | | 1 | "not a footstep this time, but a long, slow scrape, like antler bone dragging across bark" | | 2 | "no longer between the stones but" |
| |
| 100.00% | Overuse of "that" (subordinate clause padding) | Target: ≤2% sentences with "that" clauses | | thatCount | 0 | | totalSentences | 132 | | matches | (empty) | |
| 100.00% | Paragraph length variance | Target: CV ≥0.5 for paragraph word counts | | totalParagraphs | 35 | | mean | 40.8 | | std | 27.21 | | cv | 0.667 | | sampleLengths | | 0 | 84 | | 1 | 99 | | 2 | 48 | | 3 | 51 | | 4 | 8 | | 5 | 2 | | 6 | 49 | | 7 | 17 | | 8 | 104 | | 9 | 25 | | 10 | 76 | | 11 | 60 | | 12 | 60 | | 13 | 11 | | 14 | 38 | | 15 | 4 | | 16 | 40 | | 17 | 63 | | 18 | 7 | | 19 | 57 | | 20 | 50 | | 21 | 6 | | 22 | 20 | | 23 | 32 | | 24 | 34 | | 25 | 63 | | 26 | 44 | | 27 | 52 | | 28 | 29 | | 29 | 79 | | 30 | 47 | | 31 | 14 | | 32 | 37 | | 33 | 14 | | 34 | 4 |
| |
| 91.77% | Passive voice overuse | Target: ≤2% passive sentences | | passiveCount | 5 | | totalSentences | 130 | | matches | | 0 | "been drawn" | | 1 | "was gone" | | 2 | "was gone" | | 3 | "been gone" | | 4 | "being dragged" |
| |
| 83.04% | Past progressive (was/were + -ing) overuse | Target: ≤2% past progressive verbs | | pastProgressiveCount | 4 | | totalVerbs | 228 | | matches | | 0 | "was going" | | 1 | "was not answering" | | 2 | "was waiting" | | 3 | "was not pulsing" |
| |
| 0.00% | Em-dash & semicolon overuse | Target: ≤2% sentences with em-dashes/semicolons | | emDashCount | 15 | | semicolonCount | 0 | | flaggedSentences | 11 | | totalSentences | 132 | | ratio | 0.083 | | matches | | 0 | "Not wide—just a hand’s width, enough for a slim body to slip through—but the bolt had been drawn back, and the chain hung loose against the iron like a tongue from a bell." | | 1 | "The beam caught the edge of a notice—PARK CLOSES AT DUSK—and nothing else." | | 2 | "The silver chain lay cold at her throat, and the gem—deep crimson, no bigger than her thumbnail—had gone dark." | | 3 | "Then, from somewhere to her left, the grass made a sound like a woman turning in her sleep—dry, slow, deliberate—and fell still." | | 4 | "The beech was wrong—its trunk split at a lower point than she remembered, and a dead branch stretched toward the path like an arm." | | 5 | "They weren’t stones, exactly, or not only stones—ancient oaks with bark so old it had turned gray and mineral, twisted around slabs of granite that jutted from the earth like teeth." | | 6 | "Wildflowers bloomed between the roots, small white stars that should have been dead in late autumn, and their scent hit her in a wave—honeysuckle and rot, sweet enough to turn her stomach." | | 7 | "She made herself breathe in through the nose, out through the mouth—an old habit from her father’s cross-examination drills." | | 8 | "Then the sound came—not a footstep this time, but a long, slow scrape, like antler bone dragging across bark." | | 9 | "Her phone had been gone from her hand—she didn’t know when she’d dropped it." | | 10 | "She heard it breathe for the first time—a slow, inhaling sound, like bark splitting." |
| |
| 100.00% | Purple prose (modifier overload) | Target: <4% adverbs, <2% -ly adverbs, no adj stacking | | wordCount | 164 | | adjectiveStacks | 0 | | stackExamples | (empty) | | adverbCount | 3 | | adverbRatio | 0.018292682926829267 | | lyAdverbCount | 0 | | lyAdverbRatio | 0 | |
| 100.00% | Repeated phrase echo | Target: ≤20% sentences with echoes (window: 2) | | totalSentences | 132 | | echoCount | 0 | | echoWords | (empty) | |
| 100.00% | Sentence length variance | Target: CV ≥0.4 for sentence word counts | | totalSentences | 132 | | mean | 10.82 | | std | 8.43 | | cv | 0.779 | | sampleLengths | | 0 | 17 | | 1 | 33 | | 2 | 10 | | 3 | 13 | | 4 | 2 | | 5 | 3 | | 6 | 6 | | 7 | 11 | | 8 | 36 | | 9 | 4 | | 10 | 25 | | 11 | 23 | | 12 | 23 | | 13 | 6 | | 14 | 19 | | 15 | 15 | | 16 | 10 | | 17 | 5 | | 18 | 19 | | 19 | 2 | | 20 | 8 | | 21 | 2 | | 22 | 4 | | 23 | 16 | | 24 | 6 | | 25 | 1 | | 26 | 22 | | 27 | 5 | | 28 | 5 | | 29 | 7 | | 30 | 4 | | 31 | 4 | | 32 | 28 | | 33 | 30 | | 34 | 5 | | 35 | 24 | | 36 | 9 | | 37 | 8 | | 38 | 6 | | 39 | 11 | | 40 | 8 | | 41 | 31 | | 42 | 5 | | 43 | 32 | | 44 | 11 | | 45 | 18 | | 46 | 6 | | 47 | 25 | | 48 | 9 | | 49 | 21 |
| |
| 38.64% | Sentence opener variety | Target: ≥60% unique sentence openers | | consecutiveRepeats | 15 | | diversityRatio | 0.2727272727272727 | | totalSentences | 132 | | uniqueOpeners | 36 | |
| 100.00% | Adverb-first sentence starts | Target: ≥3% sentences starting with an adverb | | adverbCount | 5 | | totalSentences | 118 | | matches | | 0 | "Then, from somewhere to her" | | 1 | "Then the sound came—not a" | | 2 | "Then from behind her." | | 3 | "Then from directly ahead." | | 4 | "Then the moon went in" |
| | ratio | 0.042 | |
| 70.85% | Pronoun-first sentence starts | Target: ≤30% sentences starting with a pronoun | | pronounCount | 44 | | totalSentences | 118 | | matches | | 0 | "She had come because the" | | 1 | "She wasn’t a fool." | | 2 | "She’d left a note on" | | 3 | "It was half past eleven" | | 4 | "She moved along the gravel" | | 5 | "Her trainers made no sound," | | 6 | "She held her breath and" | | 7 | "she said, too quietly" | | 8 | "Her voice did not carry." | | 9 | "It dropped into the mist" | | 10 | "She knew the way." | | 11 | "She told herself memory was" | | 12 | "It felt less like an" | | 13 | "They weren’t stones, exactly, or" | | 14 | "She crossed the boundary, because" | | 15 | "She needed to know who" | | 16 | "She needed to understand the" | | 17 | "She looked away." | | 18 | "She thumbed the lock button." | | 19 | "Her voice came out thin." |
| | ratio | 0.373 | |
| 57.46% | Subject-first sentence starts | Target: ≤72% sentences starting with a subject | | subjectCount | 95 | | totalSentences | 118 | | matches | | 0 | "The gate at the north" | | 1 | "Rory stopped with her phone" | | 2 | "The beam caught the edge" | | 3 | "London had gone mute behind" | | 4 | "She had come because the" | | 5 | "She wasn’t a fool." | | 6 | "She’d left a note on" | | 7 | "It was half past eleven" | | 8 | "The pendant warmed as she" | | 9 | "Rory pressed a hand over" | | 10 | "The silver chain lay cold" | | 11 | "She moved along the gravel" | | 12 | "The oaks rose out of" | | 13 | "Mist pooled around their roots." | | 14 | "Her trainers made no sound," | | 15 | "The path lay empty." | | 16 | "The gate was a faint" | | 17 | "She held her breath and" | | 18 | "she said, too quietly" | | 19 | "Her voice did not carry." |
| | ratio | 0.805 | |
| 0.00% | Subordinate conjunction sentence starts | Target: ≥2% sentences starting with a subordinating conjunction | | subConjCount | 0 | | totalSentences | 118 | | matches | (empty) | | ratio | 0 | |
| 76.72% | Technical jargon density | Target: ≤6% sentences with technical-jargon patterns | | analyzedSentences | 54 | | technicalSentenceCount | 5 | | matches | | 0 | "For three nights the Heartstone had pulsed against her sternum, a deep crimson throb she felt through her jumper, and each pulse had pulled her toward the park …" | | 1 | "The grove was off the main path, past a lightning-blasted beech, through a fold in the land that hid the standing stones until you were almost on them." | | 2 | "Wildflowers bloomed between the roots, small white stars that should have been dead in late autumn, and their scent hit her in a wave—honeysuckle and rot, sweet…" | | 3 | "The alternative was going home to a flat above a bar and lying awake with a heartbeat in her chest that was not her own." | | 4 | "The scrape came again, slower, closer, from all around, as if a circle of antlers were being dragged along the inside of the stones." |
| |
| 100.00% | Useless dialogue additions | Target: ≤5% dialogue tags with trailing filler fragments | | totalTags | 5 | | uselessAdditionCount | 0 | | matches | (empty) | |
| 100.00% | Dialogue tag variety (said vs. fancy) | Target: ≤10% fancy dialogue tags | | totalTags | 4 | | fancyCount | 0 | | fancyTags | (empty) | | dialogueSentences | 6 | | tagDensity | 0.667 | | leniency | 1 | | rawRatio | 0 | | effectiveRatio | 0 | |