| 100.00% | Adverbs in dialogue tags | Target: ≤10% dialogue tags with adverbs | | totalTags | 14 | | adverbTagCount | 1 | | adverbTags | | 0 | "Their voice curled around [around]" |
| | dialogueSentences | 37 | | tagDensity | 0.378 | | leniency | 0.757 | | rawRatio | 0.071 | | effectiveRatio | 0.054 | |
| 95.22% | AI-ism adverb frequency | Target: <2% AI-ism adverbs (58 tracked) | | wordCount | 1046 | | 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) | |
| 52.20% | AI-ism word frequency | Target: <2% AI-ism words (290 tracked) | | wordCount | 1046 | | totalAiIsms | 10 | | found | | | highlights | | 0 | "pulsed" | | 1 | "warmth" | | 2 | "shimmered" | | 3 | "porcelain" | | 4 | "stomach" | | 5 | "searing" | | 6 | "weight" |
| |
| 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 | 78 | | matches | (empty) | |
| 100.00% | Filter word density | Target: ≤3% sentences with filter/hedge words | | filterCount | 0 | | hedgeCount | 0 | | narrationSentences | 78 | | filterMatches | (empty) | | hedgeMatches | (empty) | |
| 100.00% | Gibberish response detection | Target: ≤1% gibberish-like sentences (hard fail if a sentence exceeds 800 words) | | analyzedSentences | 101 | | gibberishSentences | 0 | | adjustedGibberishSentences | 0 | | longSentenceCount | 0 | | runOnParagraphCount | 0 | | giantParagraphCount | 0 | | wordSaladCount | 0 | | repetitionLoopCount | 0 | | controlTokenCount | 0 | | maxSentenceWordsSeen | 34 | | ratio | 0 | | matches | (empty) | |
| 100.00% | Markdown formatting overuse | Target: ≤5% words in markdown formatting | | markdownSpans | 2 | | markdownWords | 2 | | totalWords | 1038 | | ratio | 0.002 | | matches | | |
| 100.00% | Missing dialogue indicators (quotation marks) | Target: ≤10% speech attributions without quotation marks | | totalAttributions | 5 | | unquotedAttributions | 0 | | matches | (empty) | |
| 66.67% | Name drop frequency | Target: ≤1.0 per-name mentions per 100 words | | totalMentions | 35 | | wordCount | 800 | | uniqueNames | 7 | | maxNameDensity | 1.63 | | worstName | "Rory" | | maxWindowNameDensity | 3 | | worstWindowName | "Rory" | | discoveredNames | | Heartstone | 1 | | Pendant | 1 | | Rory | 13 | | Fae | 2 | | Isolde | 8 | | Ahead | 1 | | Nyx | 9 |
| | persons | | 0 | "Pendant" | | 1 | "Rory" | | 2 | "Isolde" | | 3 | "Nyx" |
| | places | (empty) | | globalScore | 0.688 | | windowScore | 0.667 | |
| 65.25% | Narrator intent-glossing | Target: ≤2% narration sentences with intent-glossing patterns | | analyzedSentences | 59 | | glossingSentenceCount | 2 | | matches | | 0 | "looked like roasted pheasant" | | 1 | "as if recognizing an old friend" |
| |
| 7.32% | "Not X but Y" pattern overuse | Target: ≤1 "not X but Y" per 1000 words | | totalMatches | 2 | | per1kWords | 1.927 | | wordCount | 1038 | | matches | | 0 | "not like heat haze, but like a soap bubble, iridescent" | | 1 | "not with hunger, but with the sudden, sickening certainty" |
| |
| 100.00% | Overuse of "that" (subordinate clause padding) | Target: ≤2% sentences with "that" clauses | | thatCount | 0 | | totalSentences | 101 | | matches | (empty) | |
| 100.00% | Paragraph length variance | Target: CV ≥0.5 for paragraph word counts | | totalParagraphs | 28 | | mean | 37.07 | | std | 22.5 | | cv | 0.607 | | sampleLengths | | 0 | 51 | | 1 | 38 | | 2 | 55 | | 3 | 40 | | 4 | 110 | | 5 | 26 | | 6 | 59 | | 7 | 24 | | 8 | 41 | | 9 | 51 | | 10 | 25 | | 11 | 8 | | 12 | 57 | | 13 | 39 | | 14 | 46 | | 15 | 19 | | 16 | 16 | | 17 | 20 | | 18 | 10 | | 19 | 29 | | 20 | 42 | | 21 | 77 | | 22 | 17 | | 23 | 43 | | 24 | 54 | | 25 | 15 | | 26 | 17 | | 27 | 9 |
| |
| 100.00% | Passive voice overuse | Target: ≤2% passive sentences | | passiveCount | 1 | | totalSentences | 78 | | matches | | |
| 100.00% | Past progressive (was/were + -ing) overuse | Target: ≤2% past progressive verbs | | pastProgressiveCount | 0 | | totalVerbs | 139 | | matches | (empty) | |
| 0.00% | Em-dash & semicolon overuse | Target: ≤2% sentences with em-dashes/semicolons | | emDashCount | 8 | | semicolonCount | 0 | | flaggedSentences | 8 | | totalSentences | 101 | | ratio | 0.079 | | matches | | 0 | "The air smelled of crushed mint and something older—damp stone and ozone, like the moment before a storm." | | 1 | "The grooves weren’t natural—carved runes, worn smooth by centuries of wind." | | 2 | "The sky above wasn’t sky at all—just a vast, amber dome, like looking up through a glass of whiskey." | | 3 | "Plates of porcelain so thin they were translucent held food that shouldn’t exist—fruits with skins like stained glass, meats that glistened with their own juices, bread that steamed despite the lack of heat." | | 4 | "The scent of roasted meat coiled around her, rich and smoky, undercut with something sharper—citrus and clove." | | 5 | "Between them, the air shimmered—not like heat haze, but like a soap bubble, iridescent and fragile." | | 6 | "It was *golden*—an endless orchard under an amber sky, rows of trees heavy with fruit that glowed faintly in the dim light." | | 7 | "Rory’s stomach twisted—not with hunger, but with the sudden, sickening certainty that they’d just walked into something they couldn’t walk away from." |
| |
| 100.00% | Purple prose (modifier overload) | Target: <4% adverbs, <2% -ly adverbs, no adj stacking | | wordCount | 808 | | adjectiveStacks | 0 | | stackExamples | (empty) | | adverbCount | 29 | | adverbRatio | 0.03589108910891089 | | lyAdverbCount | 3 | | lyAdverbRatio | 0.0037128712871287127 | |
| 100.00% | Repeated phrase echo | Target: ≤20% sentences with echoes (window: 2) | | totalSentences | 101 | | echoCount | 0 | | echoWords | (empty) | |
| 100.00% | Sentence length variance | Target: CV ≥0.4 for sentence word counts | | totalSentences | 101 | | mean | 10.28 | | std | 6.02 | | cv | 0.585 | | sampleLengths | | 0 | 15 | | 1 | 18 | | 2 | 18 | | 3 | 9 | | 4 | 22 | | 5 | 7 | | 6 | 12 | | 7 | 9 | | 8 | 21 | | 9 | 13 | | 10 | 11 | | 11 | 11 | | 12 | 15 | | 13 | 3 | | 14 | 7 | | 15 | 19 | | 16 | 19 | | 17 | 9 | | 18 | 4 | | 19 | 3 | | 20 | 16 | | 21 | 33 | | 22 | 10 | | 23 | 11 | | 24 | 5 | | 25 | 3 | | 26 | 17 | | 27 | 19 | | 28 | 9 | | 29 | 11 | | 30 | 3 | | 31 | 17 | | 32 | 2 | | 33 | 2 | | 34 | 11 | | 35 | 3 | | 36 | 3 | | 37 | 19 | | 38 | 5 | | 39 | 11 | | 40 | 10 | | 41 | 14 | | 42 | 16 | | 43 | 3 | | 44 | 5 | | 45 | 11 | | 46 | 6 | | 47 | 3 | | 48 | 5 | | 49 | 8 |
| |
| 51.82% | Sentence opener variety | Target: ≥60% unique sentence openers | | consecutiveRepeats | 6 | | diversityRatio | 0.3465346534653465 | | totalSentences | 101 | | uniqueOpeners | 35 | |
| 88.89% | Adverb-first sentence starts | Target: ≥3% sentences starting with an adverb | | adverbCount | 2 | | totalSentences | 75 | | matches | | 0 | "Then they reappeared, stepping back" | | 1 | "Then she turned and walked" |
| | ratio | 0.027 | |
| 100.00% | Pronoun-first sentence starts | Target: ≤30% sentences starting with a pronoun | | pronounCount | 20 | | totalSentences | 75 | | matches | | 0 | "She adjusted the strap of" | | 1 | "Their voice curled around the" | | 2 | "She plucked a wildflower, its" | | 3 | "Their fingers passed through the" | | 4 | "She circled the table at" | | 5 | "She plucked a grape from" | | 6 | "It didn’t land." | | 7 | "It vanished midair." | | 8 | "She smiled, all teeth" | | 9 | "Their shadow stretched long across" | | 10 | "They straightened, their violet eyes" | | 11 | "She hadn’t eaten since yesterday." | | 12 | "She pulled her hand back," | | 13 | "She rubbed the crescent scar," | | 14 | "She licked juice from her" | | 15 | "She stepped forward, pressing her" | | 16 | "It resisted, then gave way," | | 17 | "It was *golden*—an endless orchard" | | 18 | "She stood on the other" | | 19 | "she said, her voice suddenly" |
| | ratio | 0.267 | |
| 26.67% | Subject-first sentence starts | Target: ≤72% sentences starting with a subject | | subjectCount | 65 | | totalSentences | 75 | | matches | | 0 | "The Heartstone Pendant pulsed against" | | 1 | "She adjusted the strap of" | | 2 | "The air smelled of crushed" | | 3 | "Nyx stepped ahead, their silhouette" | | 4 | "Their voice curled around the" | | 5 | "Isolde’s silver hair caught the" | | 6 | "She plucked a wildflower, its" | | 7 | "Rory crouched, brushing her fingers" | | 8 | "The grooves weren’t natural—carved runes," | | 9 | "The pendant’s glow deepened, casting" | | 10 | "The sky above wasn’t sky" | | 11 | "The grass beneath them shifted," | | 12 | "A table, long enough to" | | 13 | "Plates of porcelain so thin" | | 14 | "Nyx’s form solidified just enough" | | 15 | "Their fingers passed through the" | | 16 | "Isolde didn’t approach." | | 17 | "She circled the table at" | | 18 | "She plucked a grape from" | | 19 | "The skin split with a" |
| | ratio | 0.867 | |
| 0.00% | Subordinate conjunction sentence starts | Target: ≥2% sentences starting with a subordinating conjunction | | subConjCount | 0 | | totalSentences | 75 | | matches | (empty) | | ratio | 0 | |
| 63.49% | Technical jargon density | Target: ≤6% sentences with technical-jargon patterns | | analyzedSentences | 36 | | technicalSentenceCount | 4 | | matches | | 0 | "The Heartstone Pendant pulsed against Rory’s collarbone, a steady warmth that prickled like a sunburn." | | 1 | "The grass beneath them shifted, blades bending in patterns that made Rory’s eyes ache if she stared too long." | | 2 | "Plates of porcelain so thin they were translucent held food that shouldn’t exist—fruits with skins like stained glass, meats that glistened with their own juice…" | | 3 | "It was *golden*—an endless orchard under an amber sky, rows of trees heavy with fruit that glowed faintly in the dim light." |
| |
| 0.00% | Useless dialogue additions | Target: ≤5% dialogue tags with trailing filler fragments | | totalTags | 14 | | uselessAdditionCount | 5 | | matches | | 0 | "She plucked, its petals unfolding like a time-lapse" | | 1 | "They straightened, their violet eyes flickering" | | 2 | "She pulled, and the shimmer snapped back into place" | | 3 | "Nyx’s form solidified, their fingers brushing the pendant" | | 4 | "she said, her voice suddenly clear, no longer a riddle" |
| |
| 95.95% | Dialogue tag variety (said vs. fancy) | Target: ≤10% fancy dialogue tags | | totalTags | 3 | | fancyCount | 2 | | fancyTags | | 0 | "Isolde agreed (agree)" | | 1 | "Nyx agreed (agree)" |
| | dialogueSentences | 37 | | tagDensity | 0.081 | | leniency | 0.162 | | rawRatio | 0.667 | | effectiveRatio | 0.108 | |