| 100.00% | Adverbs in dialogue tags | Target: ≤10% dialogue tags with adverbs | | totalTags | 2 | | adverbTagCount | 0 | | adverbTags | (empty) | | dialogueSentences | 0 | | tagDensity | 1 | | leniency | 1 | | rawRatio | 0 | | effectiveRatio | 0 | |
| 91.31% | AI-ism adverb frequency | Target: <2% AI-ism adverbs (58 tracked) | | wordCount | 1151 | | 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) | |
| 69.59% | AI-ism word frequency | Target: <2% AI-ism words (290 tracked) | | wordCount | 1151 | | totalAiIsms | 7 | | found | | | highlights | | 0 | "warmth" | | 1 | "silence" | | 2 | "pulsed" |
| |
| 100.00% | Cliché density | Target: ≤1 cliche(s) per 800-word window | | totalCliches | 1 | | maxInWindow | 1 | | found | | 0 | | label | "eyes widened/narrowed" | | count | 1 |
|
| | highlights | | |
| 100.00% | Emotion telling (show vs. tell) | Target: ≤3% sentences with emotion telling | | emotionTells | 1 | | narrationSentences | 94 | | matches | | |
| 97.26% | Filter word density | Target: ≤3% sentences with filter/hedge words | | filterCount | 1 | | hedgeCount | 2 | | narrationSentences | 94 | | filterMatches | | | hedgeMatches | | |
| 100.00% | Gibberish response detection | Target: ≤1% gibberish-like sentences (hard fail if a sentence exceeds 800 words) | | analyzedSentences | 94 | | gibberishSentences | 0 | | adjustedGibberishSentences | 0 | | longSentenceCount | 0 | | runOnParagraphCount | 0 | | giantParagraphCount | 0 | | wordSaladCount | 0 | | repetitionLoopCount | 0 | | controlTokenCount | 0 | | repeatedSegmentCount | 0 | | maxSentenceWordsSeen | 51 | | ratio | 0 | | matches | (empty) | |
| 100.00% | Markdown formatting overuse | Target: ≤5% words in markdown formatting | | markdownSpans | 0 | | markdownWords | 0 | | totalWords | 1137 | | ratio | 0 | | matches | (empty) | |
| 100.00% | Missing dialogue indicators (quotation marks) | Target: ≤10% speech attributions without quotation marks | | totalAttributions | 2 | | unquotedAttributions | 0 | | matches | (empty) | |
| 96.09% | Name drop frequency | Target: ≤1.0 per-name mentions per 100 words | | totalMentions | 51 | | wordCount | 1113 | | uniqueNames | 22 | | maxNameDensity | 1.08 | | worstName | "Rory" | | maxWindowNameDensity | 2 | | worstWindowName | "Rory" | | discoveredNames | | Carter | 2 | | Heartstone | 4 | | Richmond | 2 | | Park | 2 | | Isolde | 1 | | London | 4 | | Yu-Fei | 1 | | Cheung | 1 | | Earth | 1 | | Fae | 3 | | Hel | 2 | | Eva | 4 | | Rory | 12 | | Evan | 2 | | Cardiff | 2 | | Irish | 1 | | Welsh | 1 | | Grove | 1 | | University | 1 | | Aurora | 2 | | Laila | 1 | | Malphora | 1 |
| | persons | | 0 | "Carter" | | 1 | "Heartstone" | | 2 | "Yu-Fei" | | 3 | "Cheung" | | 4 | "Eva" | | 5 | "Rory" | | 6 | "Evan" | | 7 | "University" | | 8 | "Aurora" | | 9 | "Laila" |
| | places | | 0 | "Richmond" | | 1 | "Park" | | 2 | "Isolde" | | 3 | "London" | | 4 | "Fae" | | 5 | "Hel" | | 6 | "Cardiff" | | 7 | "Grove" |
| | globalScore | 0.961 | | windowScore | 1 | |
| 60.71% | Narrator intent-glossing | Target: ≤2% narration sentences with intent-glossing patterns | | analyzedSentences | 56 | | glossingSentenceCount | 2 | | matches | | 0 | "felt like a boundary, not an invitation" | | 1 | "as if recoiling from something that had stepped behind her" |
| |
| 0.00% | "Not X but Y" pattern overuse | Target: ≤1 "not X but Y" per 1000 words | | totalMatches | 3 | | per1kWords | 2.639 | | wordCount | 1137 | | matches | | 0 | "not fragrance but a cold, metallic scent, like old coins left in a dead mouth" | | 1 | "not to find the portal, but to be found by it" | | 2 | "not just to find answers, but to close something" |
| |
| 95.74% | Overuse of "that" (subordinate clause padding) | Target: ≤2% sentences with "that" clauses | | thatCount | 2 | | totalSentences | 94 | | matches | | 0 | "knew that surviving" | | 1 | "understand that she" |
| |
| 100.00% | Paragraph length variance | Target: CV ≥0.5 for paragraph word counts | | totalParagraphs | 28 | | mean | 40.61 | | std | 29.46 | | cv | 0.726 | | sampleLengths | | 0 | 95 | | 1 | 61 | | 2 | 61 | | 3 | 62 | | 4 | 61 | | 5 | 4 | | 6 | 40 | | 7 | 46 | | 8 | 15 | | 9 | 59 | | 10 | 4 | | 11 | 57 | | 12 | 65 | | 13 | 16 | | 14 | 10 | | 15 | 78 | | 16 | 81 | | 17 | 4 | | 18 | 21 | | 19 | 3 | | 20 | 92 | | 21 | 64 | | 22 | 58 | | 23 | 11 | | 24 | 41 | | 25 | 15 | | 26 | 9 | | 27 | 4 |
| |
| 94.06% | Passive voice overuse | Target: ≤2% passive sentences | | passiveCount | 3 | | totalSentences | 94 | | matches | | 0 | "being pulled" | | 1 | "was gone" | | 2 | "being watched" | | 3 | "was draped" |
| |
| 100.00% | Past progressive (was/were + -ing) overuse | Target: ≤2% past progressive verbs | | pastProgressiveCount | 1 | | totalVerbs | 189 | | matches | | |
| 0.00% | Em-dash & semicolon overuse | Target: ≤2% sentences with em-dashes/semicolons | | emDashCount | 14 | | semicolonCount | 0 | | flaggedSentences | 10 | | totalSentences | 94 | | ratio | 0.106 | | matches | | 0 | "It was in the air first—too sweet, like wildflowers rotting in syrup." | | 1 | "Their colors—pale violet, bone-white, blood-red—seemed to drink the moonlight rather than reflect it." | | 2 | "Not wind—there was none." | | 3 | "Not toward her—there was no wind—but away, as if recoiling from something that had stepped behind her." | | 4 | "The Heartstone pendant burned now, deep crimson brightening to a dull, furious glow, and Rory knew—without knowing—this was the Hel portal." | | 5 | "Not peripheral—not exactly." | | 6 | "Outside, in Richmond Park, her life—her mother’s lessons, her father’s law books, Evan’s shadow—might be dissolving into memory." | | 7 | "It was draped, not perched—draped like laundry, or skin, elongated and pale as the wildflowers, with no face she could see, only the suggestion of an opening where a face should have been." | | 8 | "She remembered then what she had come for—not just to find answers, but to close something." | | 9 | "Instead, Aurora Carter—Rory, Laila, Malphora, whatever she needed to be—walked into the cold space where the flowers refused to grow, where the Heartstone glowed crimson against the dark, and where something older than the Fae awaited with the patience of stones." |
| |
| 94.30% | Purple prose (modifier overload) | Target: <4% adverbs, <2% -ly adverbs, no adj stacking | | wordCount | 86 | | adjectiveStacks | 0 | | stackExamples | (empty) | | adverbCount | 4 | | adverbRatio | 0.046511627906976744 | | lyAdverbCount | 0 | | lyAdverbRatio | 0 | |
| 100.00% | Repeated phrase echo | Target: ≤20% sentences with echoes (window: 2) | | totalSentences | 94 | | echoCount | 0 | | echoWords | (empty) | |
| 100.00% | Sentence length variance | Target: CV ≥0.4 for sentence word counts | | totalSentences | 94 | | mean | 12.1 | | std | 10.68 | | cv | 0.883 | | sampleLengths | | 0 | 15 | | 1 | 31 | | 2 | 49 | | 3 | 6 | | 4 | 12 | | 5 | 33 | | 6 | 10 | | 7 | 5 | | 8 | 11 | | 9 | 13 | | 10 | 12 | | 11 | 20 | | 12 | 15 | | 13 | 9 | | 14 | 38 | | 15 | 4 | | 16 | 4 | | 17 | 3 | | 18 | 23 | | 19 | 2 | | 20 | 13 | | 21 | 12 | | 22 | 4 | | 23 | 3 | | 24 | 17 | | 25 | 2 | | 26 | 1 | | 27 | 17 | | 28 | 6 | | 29 | 11 | | 30 | 29 | | 31 | 11 | | 32 | 4 | | 33 | 4 | | 34 | 1 | | 35 | 21 | | 36 | 4 | | 37 | 29 | | 38 | 4 | | 39 | 3 | | 40 | 2 | | 41 | 3 | | 42 | 13 | | 43 | 9 | | 44 | 21 | | 45 | 6 | | 46 | 4 | | 47 | 12 | | 48 | 49 | | 49 | 3 |
| |
| 30.85% | Sentence opener variety | Target: ≥60% unique sentence openers | | consecutiveRepeats | 18 | | diversityRatio | 0.2978723404255319 | | totalSentences | 94 | | uniqueOpeners | 28 | |
| 100.00% | Adverb-first sentence starts | Target: ≥3% sentences starting with an adverb | | adverbCount | 4 | | totalSentences | 86 | | matches | | 0 | "Only the oak standing stones," | | 1 | "Then she saw it." | | 2 | "Then the movement at the" | | 3 | "Instead, Aurora Carter—Rory, Laila, Malphora," |
| | ratio | 0.047 | |
| 85.12% | Pronoun-first sentence starts | Target: ≤30% sentences starting with a pronoun | | pronounCount | 29 | | totalSentences | 86 | | matches | | 0 | "She had come to Richmond" | | 1 | "It was in the air" | | 2 | "She walked into the clearing." | | 3 | "Their colors—pale violet, bone-white, blood-red-seemed" | | 4 | "She wore her delivery jacket," | | 5 | "She knew it was responding" | | 6 | "She had come here precisely" | | 7 | "It was the sound of" | | 8 | "Her left wrist, bearing the" | | 9 | "She clutched the pendant, its" | | 10 | "She took another step." | | 11 | "She told herself she was" | | 12 | "She told herself this was" | | 13 | "She had fled Cardiff and" | | 14 | "She backed toward the center" | | 15 | "She should have run." | | 16 | "Her mind, trained on pre-law" | | 17 | "It was in the corners" | | 18 | "She pressed her back against" | | 19 | "She realized, with a cold" |
| | ratio | 0.337 | |
| 76.28% | Subject-first sentence starts | Target: ≤72% sentences starting with a subject | | subjectCount | 66 | | totalSentences | 86 | | matches | | 0 | "The standing stones of ancient" | | 1 | "Aurora Carter stepped past them" | | 2 | "She had come to Richmond" | | 3 | "It was in the air" | | 4 | "The grove, according to every" | | 5 | "Rory had no idea if" | | 6 | "She walked into the clearing." | | 7 | "Wildflowers bloomed everywhere, defiant of" | | 8 | "Their colors—pale violet, bone-white, blood-red-seemed" | | 9 | "Rory’s shoulder-length black hair clung" | | 10 | "She wore her delivery jacket," | | 11 | "The pendant pulled downward, a" | | 12 | "She knew it was responding" | | 13 | "She had come here precisely" | | 14 | "A sound reached her." | | 15 | "It was the sound of" | | 16 | "Her left wrist, bearing the" | | 17 | "She clutched the pendant, its" | | 18 | "She took another step." | | 19 | "The flowers turned." |
| | ratio | 0.767 | |
| 0.00% | Subordinate conjunction sentence starts | Target: ≥2% sentences starting with a subordinating conjunction | | subConjCount | 0 | | totalSentences | 86 | | matches | (empty) | | ratio | 0 | |
| 31.75% | Technical jargon density | Target: ≤6% sentences with technical-jargon patterns | | analyzedSentences | 45 | | technicalSentenceCount | 7 | | matches | | 0 | "Not toward her—there was no wind—but away, as if recoiling from something that had stepped behind her." | | 1 | "A slow, deliberate dragging, like something heavy being pulled through mud that made no sound except the suction of its release." | | 2 | "The wildflowers bent away from an empty space, bowing as if under pressure." | | 3 | "The silence that followed was absolute, pressing against her eardrums like deep water." | | 4 | "Every time she turned her head, she caught the suggestion of a shape that was not shaped like anything human." | | 5 | "And always, just as she focused, it was gone, leaving behind only the impression of being watched by something that had always been there, patient as the stones…" | | 6 | "It simply was no longer there, and she knew, with the same out-of-the-box certainty that had always saved her, that it was now behind her." |
| |
| 100.00% | Useless dialogue additions | Target: ≤5% dialogue tags with trailing filler fragments | | totalTags | 2 | | uselessAdditionCount | 0 | | matches | (empty) | |
| 0.00% | Dialogue tag variety (said vs. fancy) | Target: ≤10% fancy dialogue tags | | totalTags | 1 | | fancyCount | 1 | | fancyTags | | | dialogueSentences | 0 | | tagDensity | 1 | | leniency | 1 | | rawRatio | 1 | | effectiveRatio | 1 | |