| 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 | |
| 95.51% | AI-ism adverb frequency | Target: <2% AI-ism adverbs (58 tracked) | | wordCount | 1113 | | 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) | |
| 77.54% | AI-ism word frequency | Target: <2% AI-ism words (290 tracked) | | wordCount | 1113 | | totalAiIsms | 5 | | found | | | highlights | | 0 | "pulse" | | 1 | "warmth" | | 2 | "weight" | | 3 | "flicked" |
| |
| 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 | 72 | | matches | (empty) | |
| 100.00% | Filter word density | Target: ≤3% sentences with filter/hedge words | | filterCount | 2 | | hedgeCount | 0 | | narrationSentences | 72 | | filterMatches | | | hedgeMatches | (empty) | |
| 100.00% | Gibberish response detection | Target: ≤1% gibberish-like sentences (hard fail if a sentence exceeds 800 words) | | analyzedSentences | 75 | | gibberishSentences | 0 | | adjustedGibberishSentences | 0 | | longSentenceCount | 0 | | runOnParagraphCount | 0 | | giantParagraphCount | 0 | | wordSaladCount | 0 | | repetitionLoopCount | 0 | | controlTokenCount | 0 | | repeatedSegmentCount | 0 | | maxSentenceWordsSeen | 61 | | ratio | 0 | | matches | (empty) | |
| 100.00% | Markdown formatting overuse | Target: ≤5% words in markdown formatting | | markdownSpans | 0 | | markdownWords | 0 | | totalWords | 1120 | | ratio | 0 | | matches | (empty) | |
| 100.00% | Missing dialogue indicators (quotation marks) | Target: ≤10% speech attributions without quotation marks | | totalAttributions | 6 | | unquotedAttributions | 0 | | matches | (empty) | |
| 100.00% | Name drop frequency | Target: ≤1.0 per-name mentions per 100 words | | totalMentions | 13 | | wordCount | 1108 | | uniqueNames | 7 | | maxNameDensity | 0.36 | | worstName | "Grove" | | maxWindowNameDensity | 1 | | worstWindowName | "Grove" | | discoveredNames | | Grove | 4 | | Eva | 2 | | Earth | 1 | | Fae | 1 | | Richmond | 1 | | Park | 1 | | Rory | 3 |
| | persons | | | places | | | globalScore | 1 | | windowScore | 1 | |
| 0.00% | Narrator intent-glossing | Target: ≤2% narration sentences with intent-glossing patterns | | analyzedSentences | 43 | | glossingSentenceCount | 3 | | matches | | 0 | "looked like this before" | | 1 | "sounded like breathing that wasn't hers ke" | | 2 | "quite fit without turning sideways" |
| |
| 100.00% | "Not X but Y" pattern overuse | Target: ≤1 "not X but Y" per 1000 words | | totalMatches | 0 | | per1kWords | 0 | | wordCount | 1120 | | matches | (empty) | |
| 100.00% | Overuse of "that" (subordinate clause padding) | Target: ≤2% sentences with "that" clauses | | thatCount | 0 | | totalSentences | 75 | | matches | (empty) | |
| 100.00% | Paragraph length variance | Target: CV ≥0.5 for paragraph word counts | | totalParagraphs | 36 | | mean | 31.11 | | std | 27.61 | | cv | 0.888 | | sampleLengths | | 0 | 7 | | 1 | 50 | | 2 | 1 | | 3 | 31 | | 4 | 55 | | 5 | 18 | | 6 | 8 | | 7 | 55 | | 8 | 5 | | 9 | 7 | | 10 | 1 | | 11 | 47 | | 12 | 2 | | 13 | 41 | | 14 | 14 | | 15 | 73 | | 16 | 36 | | 17 | 5 | | 18 | 83 | | 19 | 13 | | 20 | 88 | | 21 | 8 | | 22 | 67 | | 23 | 2 | | 24 | 2 | | 25 | 54 | | 26 | 3 | | 27 | 61 | | 28 | 12 | | 29 | 60 | | 30 | 4 | | 31 | 76 | | 32 | 45 | | 33 | 4 | | 34 | 58 | | 35 | 24 |
| |
| 90.64% | Passive voice overuse | Target: ≤2% passive sentences | | passiveCount | 3 | | totalSentences | 72 | | matches | | 0 | "was gone" | | 1 | "been flattened" | | 2 | "were meant" |
| |
| 100.00% | Past progressive (was/were + -ing) overuse | Target: ≤2% past progressive verbs | | pastProgressiveCount | 2 | | totalVerbs | 195 | | matches | | 0 | "were guarding" | | 1 | "was standing" |
| |
| 0.00% | Em-dash & semicolon overuse | Target: ≤2% sentences with em-dashes/semicolons | | emDashCount | 7 | | semicolonCount | 0 | | flaggedSentences | 5 | | totalSentences | 75 | | ratio | 0.067 | | matches | | 0 | "It went out maybe ten feet and just — stopped, swallowed by air that felt thicker than it had any right to be." | | 1 | "Her own shadow lay soft-edged at her feet, smudged like someone had dragged a thumb through wet charcoal, and when she turned her head fast — just to catch it, just to see — the smudge didn't turn with her." | | 2 | "It had never been silent before, not like this — always some hum of insect-song, some rustle of unseen wings, the low music of a place that lived." | | 3 | "She matched it without meaning to, then made herself break the rhythm, made herself breathe wrong on purpose, short and sharp, and the other breathing — if it existed, if it wasn't just her pulse in her own ears — stumbled too." | | 4 | "A fresh path of crushed stems led from where she stood toward the standing stones, toward the exit, laid out ahead of her like something had already walked the route she meant to take — walked it recently, walked it in the last few seconds, walked it going the same direction she was." |
| |
| 90.78% | Purple prose (modifier overload) | Target: <4% adverbs, <2% -ly adverbs, no adj stacking | | wordCount | 1108 | | adjectiveStacks | 0 | | stackExamples | (empty) | | adverbCount | 56 | | adverbRatio | 0.05054151624548736 | | lyAdverbCount | 9 | | lyAdverbRatio | 0.008122743682310469 | |
| 100.00% | Repeated phrase echo | Target: ≤20% sentences with echoes (window: 2) | | totalSentences | 75 | | echoCount | 0 | | echoWords | (empty) | |
| 100.00% | Sentence length variance | Target: CV ≥0.4 for sentence word counts | | totalSentences | 75 | | mean | 14.93 | | std | 16.19 | | cv | 1.084 | | sampleLengths | | 0 | 7 | | 1 | 21 | | 2 | 21 | | 3 | 4 | | 4 | 4 | | 5 | 1 | | 6 | 8 | | 7 | 23 | | 8 | 42 | | 9 | 5 | | 10 | 8 | | 11 | 4 | | 12 | 9 | | 13 | 5 | | 14 | 8 | | 15 | 22 | | 16 | 20 | | 17 | 6 | | 18 | 7 | | 19 | 5 | | 20 | 1 | | 21 | 6 | | 22 | 1 | | 23 | 3 | | 24 | 44 | | 25 | 2 | | 26 | 2 | | 27 | 14 | | 28 | 25 | | 29 | 12 | | 30 | 2 | | 31 | 21 | | 32 | 2 | | 33 | 40 | | 34 | 10 | | 35 | 36 | | 36 | 4 | | 37 | 1 | | 38 | 45 | | 39 | 2 | | 40 | 2 | | 41 | 23 | | 42 | 11 | | 43 | 13 | | 44 | 6 | | 45 | 1 | | 46 | 34 | | 47 | 47 | | 48 | 8 | | 49 | 2 |
| |
| 65.33% | Sentence opener variety | Target: ≥60% unique sentence openers | | consecutiveRepeats | 6 | | diversityRatio | 0.44 | | totalSentences | 75 | | uniqueOpeners | 33 | |
| 100.00% | Adverb-first sentence starts | Target: ≥3% sentences starting with an adverb | | adverbCount | 3 | | totalSentences | 57 | | matches | | 0 | "Maybe you didn't count trees" | | 1 | "Just enough to notice." | | 2 | "Just enough that a person" |
| | ratio | 0.053 | |
| 93.68% | Pronoun-first sentence starts | Target: ≤30% sentences starting with a pronoun | | pronounCount | 18 | | totalSentences | 57 | | matches | | 0 | "Her voice didn't carry the" | | 1 | "It went out maybe ten" | | 2 | "She'd come because the pendant" | | 3 | "She checked, thumb finding the" | | 4 | "She started counting them now." | | 5 | "She stopped walking." | | 6 | "She knew wind, the way" | | 7 | "she said, mostly to hear" | | 8 | "Her own shadow lay soft-edged" | | 9 | "It held a half-second too" | | 10 | "She laughed, one short humourless" | | 11 | "She was almost certain of" | | 12 | "It had never been silent" | | 13 | "She matched it without meaning" | | 14 | "She started walking back toward" | | 15 | "She was almost sure of" | | 16 | "She didn't turn around." | | 17 | "She walked, fast now, faster," |
| | ratio | 0.316 | |
| 100.00% | Subject-first sentence starts | Target: ≤72% sentences starting with a subject | | subjectCount | 41 | | totalSentences | 57 | | matches | | 0 | "The Grove hadn't looked like" | | 1 | "Rory ducked under the low" | | 2 | "The wildflowers that usually carpeted" | | 3 | "Her voice didn't carry the" | | 4 | "It went out maybe ten" | | 5 | "She'd come because the pendant" | | 6 | "That was the job now." | | 7 | "That was what she did" | | 8 | "The warmth was gone." | | 9 | "She checked, thumb finding the" | | 10 | "That should've been the moment" | | 11 | "The oaks stood the way" | | 12 | "She started counting them now." | | 13 | "There'd always been nine, hadn't" | | 14 | "She stopped walking." | | 15 | "She knew wind, the way" | | 16 | "This was closer to breath," | | 17 | "she said, mostly to hear" | | 18 | "The moon hung directly overhead," | | 19 | "Her own shadow lay soft-edged" |
| | ratio | 0.719 | |
| 87.72% | Subordinate conjunction sentence starts | Target: ≥2% sentences starting with a subordinating conjunction | | subConjCount | 1 | | totalSentences | 57 | | matches | | 0 | "Now there was only her" |
| | ratio | 0.018 | |
| 4.61% | Technical jargon density | Target: ≤6% sentences with technical-jargon patterns | | analyzedSentences | 31 | | technicalSentenceCount | 6 | | matches | | 0 | "The oaks stood the way they always stood, ancient and split-barked, ringing the clearing like sentries who'd forgotten what they were guarding." | | 1 | "This was closer to breath, a long low sound that came from everywhere and nowhere, and it curled around her ankles like it had weight." | | 2 | "She laughed, one short humourless bark of it, because that was insane, shadows didn't lag, and laughing was better than the alternative which was standing in th…" | | 3 | "Rory turned in a slow circle, boots crushing dead flowers that had no business being dead in a place where flowers didn't die, and catalogued everything the way…" | | 4 | "It had never been silent before, not like this — always some hum of insect-song, some rustle of unseen wings, the low music of a place that lived." | | 5 | "She started walking back toward the standing stones at the entrance, not fast, nothing that could be called running, because Eva always said running told a thin…" |
| |
| 100.00% | Useless dialogue additions | Target: ≤5% dialogue tags with trailing filler fragments | | totalTags | 1 | | uselessAdditionCount | 0 | | matches | (empty) | |
| 100.00% | Dialogue tag variety (said vs. fancy) | Target: ≤10% fancy dialogue tags | | totalTags | 1 | | fancyCount | 0 | | fancyTags | (empty) | | dialogueSentences | 4 | | tagDensity | 0.25 | | leniency | 0.5 | | rawRatio | 0 | | effectiveRatio | 0 | |