| 100.00% | Adverbs in dialogue tags | Target: ≤10% dialogue tags with adverbs | |
| 92.06% | AI-ism adverb frequency | Target: <2% AI-ism adverbs (58 tracked) | | wordCount | 1259 | | 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) | |
| 40.43% | AI-ism word frequency | Target: <2% AI-ism words (290 tracked) | | wordCount | 1259 | | totalAiIsms | 15 | | found | | | highlights | | 0 | "rhythmic" | | 1 | "glistening" | | 2 | "scanning" | | 3 | "silence" | | 4 | "velvet" | | 5 | "pulse" | | 6 | "weight" | | 7 | "crystalline" | | 8 | "fractured" | | 9 | "synchronized" | | 10 | "perfect" | | 11 | "flickered" |
| |
| 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 | 84 | | matches | (empty) | |
| 40.82% | Filter word density | Target: ≤3% sentences with filter/hedge words | | filterCount | 1 | | hedgeCount | 5 | | narrationSentences | 84 | | filterMatches | | | hedgeMatches | | |
| 100.00% | Gibberish response detection | Target: ≤1% gibberish-like sentences (hard fail if a sentence exceeds 800 words) | | analyzedSentences | 84 | | gibberishSentences | 0 | | adjustedGibberishSentences | 0 | | longSentenceCount | 0 | | runOnParagraphCount | 0 | | giantParagraphCount | 0 | | wordSaladCount | 0 | | repetitionLoopCount | 0 | | controlTokenCount | 0 | | maxSentenceWordsSeen | 35 | | ratio | 0 | | matches | (empty) | |
| 100.00% | Markdown formatting overuse | Target: ≤5% words in markdown formatting | | markdownSpans | 0 | | markdownWords | 0 | | totalWords | 1256 | | ratio | 0 | | matches | (empty) | |
| 0.00% | Missing dialogue indicators (quotation marks) | Target: ≤10% speech attributions without quotation marks | | totalAttributions | 8 | | unquotedAttributions | 6 | | matches | | 0 | "Keep your head low, Nyx murmured." | | 1 | "Dymas, Nyx whispered, their violet eyes glowing softly in the twilight haze." | | 2 | "You arrived when the sun was high, yet you bring the shadows of the evening with you, Isolde said." | | 3 | "Indulgence is a cage, Nyx whispered, and you, Oracle, have been the gaoler for three hundred years." | | 4 | "Then move the target, Aurora said, her gaze fixed on the Seer." | | 5 | "You must cut the bloom, not the branch, she said." |
| |
| 94.27% | Name drop frequency | Target: ≤1.0 per-name mentions per 100 words | | totalMentions | 57 | | wordCount | 1256 | | uniqueNames | 16 | | maxNameDensity | 1.11 | | worstName | "Aurora" | | maxWindowNameDensity | 2 | | worstWindowName | "Aurora" | | discoveredNames | | Heartstone | 3 | | Aurora | 14 | | Nyx | 7 | | Richmond | 2 | | Park | 2 | | Shade | 2 | | Fae-forged | 2 | | Varga | 1 | | Isolde | 8 | | Seer | 4 | | Veil | 2 | | Oracle | 1 | | Prince | 1 | | Carter | 1 | | Fae | 3 | | You | 4 |
| | persons | | 0 | "Aurora" | | 1 | "Nyx" | | 2 | "Shade" | | 3 | "Varga" | | 4 | "Isolde" | | 5 | "Seer" | | 6 | "Oracle" | | 7 | "Carter" | | 8 | "You" |
| | places | | 0 | "Heartstone" | | 1 | "Richmond" | | 2 | "Park" | | 3 | "Prince" |
| | globalScore | 0.943 | | windowScore | 1 | |
| 0.00% | Narrator intent-glossing | Target: ≤2% narration sentences with intent-glossing patterns | | analyzedSentences | 76 | | glossingSentenceCount | 5 | | matches | | 0 | "felt like a draft of cold air against t" | | 1 | "hedges that seemed to breathe, the leaves shivering despite the lack of wind" | | 2 | "authority that seemed to bruise the air" | | 3 | "felt like a countdown" | | 4 | "sky that seemed to be pressing down, forcing the realm to expand, to leak, to spill over" |
| |
| 100.00% | "Not X but Y" pattern overuse | Target: ≤1 "not X but Y" per 1000 words | | totalMatches | 0 | | per1kWords | 0 | | wordCount | 1256 | | matches | (empty) | |
| 100.00% | Overuse of "that" (subordinate clause padding) | Target: ≤2% sentences with "that" clauses | | thatCount | 0 | | totalSentences | 84 | | matches | (empty) | |
| 71.20% | Paragraph length variance | Target: CV ≥0.5 for paragraph word counts | | totalParagraphs | 29 | | mean | 43.31 | | std | 17.29 | | cv | 0.399 | | sampleLengths | | 0 | 62 | | 1 | 47 | | 2 | 35 | | 3 | 62 | | 4 | 33 | | 5 | 6 | | 6 | 68 | | 7 | 33 | | 8 | 55 | | 9 | 56 | | 10 | 15 | | 11 | 23 | | 12 | 64 | | 13 | 42 | | 14 | 53 | | 15 | 64 | | 16 | 39 | | 17 | 42 | | 18 | 51 | | 19 | 65 | | 20 | 40 | | 21 | 17 | | 22 | 74 | | 23 | 26 | | 24 | 46 | | 25 | 22 | | 26 | 28 | | 27 | 41 | | 28 | 47 |
| |
| 88.55% | Passive voice overuse | Target: ≤2% passive sentences | | passiveCount | 4 | | totalSentences | 84 | | matches | | 0 | "been ripped" | | 1 | "being pulled" | | 2 | "was stolen" | | 3 | "is tethered" |
| |
| 100.00% | Past progressive (was/were + -ing) overuse | Target: ≤2% past progressive verbs | | pastProgressiveCount | 2 | | totalVerbs | 223 | | matches | | 0 | "was pulsing" | | 1 | "was coming" |
| |
| 0.00% | Em-dash & semicolon overuse | Target: ≤2% sentences with em-dashes/semicolons | | emDashCount | 3 | | semicolonCount | 3 | | flaggedSentences | 6 | | totalSentences | 84 | | ratio | 0.071 | | matches | | 0 | "They reached the boundary—a cluster of jagged, ancient oak standing stones that looked as though they had been ripped from the earth and thrust upward by a titan’s hand." | | 1 | "Between the stones, the air didn't merely shimmer; it buckled, vibrating with a hum that rattled Aurora’s teeth." | | 2 | "The voice wasn't just heard; it felt like a draft of cold air against the back of her neck." | | 3 | "She did not leave a footprint in the mulch; she hovered an inch above the world, entirely untethered." | | 4 | "The pendant’s thrum synchronized perfectly with the thump-thump of her heart—a binary rhythm that felt like a countdown." | | 5 | "The feast was coming to an end, and as the ground began to tremble, Aurora realized the music hadn't been coming from the flute at all—it was the sound of the world cracking open." |
| |
| 88.00% | Purple prose (modifier overload) | Target: <4% adverbs, <2% -ly adverbs, no adj stacking | | wordCount | 1275 | | adjectiveStacks | 2 | | stackExamples | | 0 | "small crescent-shaped scar" | | 1 | "humid, over-sweet air" |
| | adverbCount | 27 | | adverbRatio | 0.021176470588235293 | | lyAdverbCount | 11 | | lyAdverbRatio | 0.008627450980392156 | |
| 100.00% | Repeated phrase echo | Target: ≤20% sentences with echoes (window: 2) | | totalSentences | 84 | | echoCount | 0 | | echoWords | (empty) | |
| 100.00% | Sentence length variance | Target: CV ≥0.4 for sentence word counts | | totalSentences | 84 | | mean | 14.95 | | std | 7.05 | | cv | 0.471 | | sampleLengths | | 0 | 24 | | 1 | 20 | | 2 | 18 | | 3 | 29 | | 4 | 18 | | 5 | 6 | | 6 | 19 | | 7 | 10 | | 8 | 26 | | 9 | 22 | | 10 | 14 | | 11 | 2 | | 12 | 19 | | 13 | 12 | | 14 | 6 | | 15 | 15 | | 16 | 16 | | 17 | 9 | | 18 | 28 | | 19 | 12 | | 20 | 6 | | 21 | 15 | | 22 | 13 | | 23 | 21 | | 24 | 21 | | 25 | 13 | | 26 | 24 | | 27 | 19 | | 28 | 4 | | 29 | 11 | | 30 | 10 | | 31 | 4 | | 32 | 9 | | 33 | 23 | | 34 | 17 | | 35 | 24 | | 36 | 22 | | 37 | 20 | | 38 | 19 | | 39 | 13 | | 40 | 21 | | 41 | 18 | | 42 | 14 | | 43 | 5 | | 44 | 4 | | 45 | 23 | | 46 | 21 | | 47 | 18 | | 48 | 18 | | 49 | 14 |
| |
| 69.44% | Sentence opener variety | Target: ≥60% unique sentence openers | | consecutiveRepeats | 5 | | diversityRatio | 0.4523809523809524 | | totalSentences | 84 | | uniqueOpeners | 38 | |
| 40.65% | Adverb-first sentence starts | Target: ≥3% sentences starting with an adverb | | adverbCount | 1 | | totalSentences | 82 | | matches | | 0 | "Then move the target, Aurora" |
| | ratio | 0.012 | |
| 78.54% | Pronoun-first sentence starts | Target: ≤30% sentences starting with a pronoun | | pronounCount | 29 | | totalSentences | 82 | | matches | | 0 | "They reached the boundary—a cluster" | | 1 | "She took a breath, tasted" | | 2 | "She wasn't in Richmond Park" | | 3 | "It smelled of overripe peaches," | | 4 | "It’s the smell of a" | | 5 | "She kept her gaze forward," | | 6 | "She glanced at the Heartstone," | | 7 | "They moved toward the sound," | | 8 | "Its branches were laden with" | | 9 | "You arrived when the sun" | | 10 | "Her voice was melodic, floating" | | 11 | "She didn't trust the Seer’s" | | 12 | "I came for answers, Isolde." | | 13 | "I can feel it in" | | 14 | "She did not leave a" | | 15 | "You ask for paths, but" | | 16 | "She had learned long ago" | | 17 | "She reached into her pocket," | | 18 | "It was pulsing hard now," | | 19 | "I’m not here to eat," |
| | ratio | 0.354 | |
| 75.85% | Subject-first sentence starts | Target: ≤72% sentences starting with a subject | | subjectCount | 63 | | totalSentences | 82 | | matches | | 0 | "The silver chain of the" | | 1 | "They reached the boundary—a cluster" | | 2 | "The voice wasn't just heard;" | | 3 | "This place doesn't like intruders," | | 4 | "Aurora caught the small crescent-shaped" | | 5 | "The metal was unnervingly cold," | | 6 | "She took a breath, tasted" | | 7 | "The transition was less like" | | 8 | "The disorientation lasted a heartbeat," | | 9 | "She wasn't in Richmond Park" | | 10 | "The sky above was an" | | 11 | "It smelled of overripe peaches," | | 12 | "Vines as thick as a" | | 13 | "Dymas, Nyx whispered, their violet" | | 14 | "Gluttony has a scent, doesn't" | | 15 | "It’s the smell of a" | | 16 | "Aurora stepped delicately, her boots" | | 17 | "She kept her gaze forward," | | 18 | "Isolde had warned her that" | | 19 | "She glanced at the Heartstone," |
| | ratio | 0.768 | |
| 100.00% | Subordinate conjunction sentence starts | Target: ≥2% sentences starting with a subordinating conjunction | | subConjCount | 3 | | totalSentences | 82 | | matches | | 0 | "Before them lay a labyrinth" | | 1 | "Even in this realm of" | | 2 | "If it’s tied to me," |
| | ratio | 0.037 | |
| 20.09% | Technical jargon density | Target: ≤6% sentences with technical-jargon patterns | | analyzedSentences | 64 | | technicalSentenceCount | 11 | | matches | | 0 | "The silver chain of the Heartstone pendant grew warm against Aurora’s collarbone, a steady, rhythmic pulsing that kept time with her own nervous heartbeat." | | 1 | "Vines as thick as a man’s torso coiled around obsidian-hued trees, their leaves dripping with a nectar that pooled in glowing, iridescent puddles on the dark, l…" | | 2 | "She kept her gaze forward, scanning the towering hedges that seemed to breathe, the leaves shivering despite the lack of wind." | | 3 | "As Aurora walked, she felt her own hunger sharpen, an unnatural clawing in her gut that had nothing to do with her last meal." | | 4 | "She glanced at the Heartstone, which was now vibrating violently, casting a weak, rhythmic crimson light onto the path." | | 5 | "They moved toward the sound, pushing through a curtain of hanging, velvet-thick moss that tasted of cinnamon when it brushed against Aurora’s lips." | | 6 | "Its branches were laden with globes of fruit that shifted color from bruised purple to burning orange, glowing with their own faint, bioluminescent pulse." | | 7 | "Isolde Varga did not look up, her hands busy peeling a fruit that bled clear, sweet-smelling liquid onto the soil." | | 8 | "It was pulsing hard now, the crimson core of it radiating a heat that seared her fingertips." | | 9 | "The pendant’s thrum synchronized perfectly with the thump-thump of her heart—a binary rhythm that felt like a countdown." | | 10 | "She looked at the obsidian trees, the weeping gargoyles, and the amber sky that seemed to be pressing down, forcing the realm to expand, to leak, to spill over." |
| |
| 100.00% | Useless dialogue additions | Target: ≤5% dialogue tags with trailing filler fragments | | totalTags | 0 | | uselessAdditionCount | 0 | | matches | (empty) | |
| 100.00% | Dialogue tag variety (said vs. fancy) | Target: ≤10% fancy dialogue tags | |