| 100.00% | Adverbs in dialogue tags | Target: ≤10% dialogue tags with adverbs | | totalTags | 27 | | adverbTagCount | 1 | | adverbTags | | 0 | "She knelt again [again]" |
| | dialogueSentences | 35 | | tagDensity | 0.771 | | leniency | 1 | | rawRatio | 0.037 | | effectiveRatio | 0.037 | |
| 100.00% | AI-ism adverb frequency | Target: <2% AI-ism adverbs (58 tracked) | | wordCount | 1391 | | totalAiIsmAdverbs | 0 | | found | (empty) | | highlights | (empty) | |
| 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) | |
| 28.11% | AI-ism word frequency | Target: <2% AI-ism words (290 tracked) | | wordCount | 1391 | | totalAiIsms | 20 | | found | | | highlights | | 0 | "throbbed" | | 1 | "pulsed" | | 2 | "warmth" | | 3 | "whisper" | | 4 | "unspoken" | | 5 | "weight" | | 6 | "pulse" | | 7 | "silk" | | 8 | "wavering" | | 9 | "echo" | | 10 | "scanning" | | 11 | "loomed" | | 12 | "flicker" |
| |
| 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 | 0 | | narrationSentences | 49 | | matches | (empty) | |
| 84.55% | Filter word density | Target: ≤3% sentences with filter/hedge words | | filterCount | 2 | | hedgeCount | 0 | | narrationSentences | 49 | | filterMatches | | | hedgeMatches | (empty) | |
| 100.00% | Gibberish response detection | Target: ≤1% gibberish-like sentences (hard fail if a sentence exceeds 800 words) | | analyzedSentences | 50 | | gibberishSentences | 0 | | adjustedGibberishSentences | 0 | | longSentenceCount | 0 | | runOnParagraphCount | 0 | | giantParagraphCount | 0 | | wordSaladCount | 0 | | repetitionLoopCount | 0 | | controlTokenCount | 0 | | maxSentenceWordsSeen | 90 | | ratio | 0 | | matches | (empty) | |
| 100.00% | Markdown formatting overuse | Target: ≤5% words in markdown formatting | | markdownSpans | 0 | | markdownWords | 0 | | totalWords | 1345 | | ratio | 0 | | matches | (empty) | |
| 100.00% | Missing dialogue indicators (quotation marks) | Target: ≤10% speech attributions without quotation marks | | totalAttributions | 7 | | unquotedAttributions | 0 | | matches | (empty) | |
| 79.91% | Name drop frequency | Target: ≤1.0 per-name mentions per 100 words | | totalMentions | 107 | | wordCount | 1070 | | uniqueNames | 31 | | maxNameDensity | 1.4 | | worstName | "Rory" | | maxWindowNameDensity | 2.5 | | worstWindowName | "Isolde" | | discoveredNames | | Richmond | 3 | | Park | 3 | | Heartstone | 8 | | Pendant | 3 | | Dymasian | 4 | | Golden | 1 | | Empress | 1 | | Fae-Forged | 5 | | Blade | 5 | | Isolde | 12 | | Rory | 15 | | Half-Fae | 1 | | Veil | 4 | | Evan | 1 | | Cardiff | 1 | | Pre-Law | 2 | | Eva | 1 | | London | 1 | | Prince | 1 | | Belphegor | 1 | | Fae | 11 | | Earth | 2 | | Hel | 2 | | Nyx | 7 | | Unease | 1 | | Fae-Earth | 1 | | Dymas | 3 | | Aldric | 1 | | Time | 1 | | Grove | 4 | | Yu-Fei | 1 |
| | persons | | 0 | "Heartstone" | | 1 | "Pendant" | | 2 | "Blade" | | 3 | "Isolde" | | 4 | "Rory" | | 5 | "Half-Fae" | | 6 | "Veil" | | 7 | "Evan" | | 8 | "Eva" | | 9 | "Prince" | | 10 | "Belphegor" | | 11 | "Fae" | | 12 | "Hel" | | 13 | "Nyx" | | 14 | "Dymas" | | 15 | "Time" | | 16 | "Grove" | | 17 | "Yu-Fei" |
| | places | | 0 | "Richmond" | | 1 | "Park" | | 2 | "Golden" | | 3 | "Cardiff" | | 4 | "London" |
| | globalScore | 0.799 | | windowScore | 0.833 | |
| 21.79% | Narrator intent-glossing | Target: ≤2% narration sentences with intent-glossing patterns | | analyzedSentences | 39 | | glossingSentenceCount | 2 | | matches | | 0 | "smelled like honey and pine, thick enough" | | 1 | "felt like ten minutes, but her delivery" |
| |
| 100.00% | "Not X but Y" pattern overuse | Target: ≤1 "not X but Y" per 1000 words | | totalMatches | 0 | | per1kWords | 0 | | wordCount | 1345 | | matches | (empty) | |
| 100.00% | Overuse of "that" (subordinate clause padding) | Target: ≤2% sentences with "that" clauses | | thatCount | 0 | | totalSentences | 50 | | matches | (empty) | |
| 99.65% | Paragraph length variance | Target: CV ≥0.5 for paragraph word counts | | totalParagraphs | 24 | | mean | 56.04 | | std | 27.95 | | cv | 0.499 | | sampleLengths | | 0 | 150 | | 1 | 114 | | 2 | 58 | | 3 | 44 | | 4 | 44 | | 5 | 45 | | 6 | 83 | | 7 | 39 | | 8 | 40 | | 9 | 21 | | 10 | 50 | | 11 | 41 | | 12 | 45 | | 13 | 41 | | 14 | 50 | | 15 | 55 | | 16 | 43 | | 17 | 69 | | 18 | 37 | | 19 | 34 | | 20 | 63 | | 21 | 28 | | 22 | 65 | | 23 | 86 |
| |
| 90.94% | Passive voice overuse | Target: ≤2% passive sentences | | passiveCount | 2 | | totalSentences | 49 | | matches | | 0 | "was lilted" | | 1 | "was supposed" |
| |
| 100.00% | Past progressive (was/were + -ing) overuse | Target: ≤2% past progressive verbs | | pastProgressiveCount | 0 | | totalVerbs | 188 | | matches | (empty) | |
| 0.00% | Em-dash & semicolon overuse | Target: ≤2% sentences with em-dashes/semicolons | | emDashCount | 26 | | semicolonCount | 1 | | flaggedSentences | 22 | | totalSentences | 50 | | ratio | 0.44 | | matches | | 0 | "Rory’s scuffed delivery boots crunched frost into Richmond Park’s bare earth, her left wrist tensing where the crescent scar throbbed—a childhood fall’s ghost stirred by the unknown." | | 1 | "Under her pilled wool coat, the Heartstone Pendant’s silver chain bit into her collarbone; the deep crimson gem, thumbnail-sized, pulsed faintly, a warmth she’d learned to trust since the Dymasian stranger pressed it into her palm outside Golden Empress." | | 2 | "Her other hand curled around the Fae-Forged Blade in her jeans pocket—moonsilver, leaf-shaped, always cold enough to make her fingers ache through the fabric, a gift Isolde had pressed on her three days prior with a riddle she still hadn’t unpacked." | | 3 | "Straight shoulder-length black hair fell in her bright blue eyes as she squinted at the circle of ancient oak standing stones ahead—thick, gnarled trunks hewn into pillars, their bark blackened with age—landmarks she’d never spotted in a dozen delivery detours through the park." | | 4 | "Nyx slithered along the shadow of an oak, their humanoid silhouette shifting between solid and incorporeal—6’2” when they coalesced, violet-glowing eyes cutting through the dim. Their voice curled in Rory’s ear like wind through a crack in her flat’s above-bar window. “The Veil shimmers here." | | 5 | "I see the thread that frays—same as the one that trapped me in 1643.” The whisper carried their old sorcerer Aldric’s unspoken weight, a nod to the failed summoning that had bound them as a Shade." | | 6 | "Rory’s thumb brushed her wrist scar again, thinking of Evan’s fist, of fleeing Cardiff’s Pre-Law lectures, of Eva’s frantic text that had sent her to London. She’d come here seeking answers about the Dymasian chefs—Prince Belphegor’s helbound contractors—who’d been snatching mortal souls for their gluttonous feasts. The Heartstone’s pulse spiked, hot enough to make her gasp. “It’s burning.”" | | 7 | "Isolde stopped at the first oak pillar, pale lavender eyes locking on Rory. Her speech was lilted, riddling, as always—her Fae compulsion forbidding lies but permitting misdirection. “The stone that beats for Hel’s feast sees the space between what is and what might be.”" | | 8 | "Veil thin here—winter solstice weakens it, per your mortal lore." | | 9 | "Your pendant senses the rift between Earth and Fae—and maybe the Hel portal you seek.”" | | 10 | "Frost vanished from her boots. Beneath her feet was soft moss, dotted with wildflowers—poppies, daisies, bluebells—blooming bright in a season that should have left Richmond Park bare. The air smelled like honey and pine, thick enough to drink, and the oak pillars behind her filtered the sun into golden streaks that twisted like Fae smoke. Rory fumbled for her phone, her mortal anchor, and stared. The screen glitched: 3:17 PM flipped to 1:02 AM, then to 9:45 AM, then went dark. “Time’s broken.”" | | 11 | "I cannot hold solid form for long here—trapped between two spaces is enough for one ageless existence.”" | | 12 | "Rory knelt to touch a poppy—its petal was silk-soft, warm, even in the filtered light. “These shouldn’t be here." | | 13 | "Your pendant’s pulse is proof—Dymas’s stone senses its own realm’s echo." | | 14 | "Rory clutched the Heartstone Pendant, its warmth a counter to the blade’s cold. She stood, scanning the clearing. The oak standing stones loomed behind her, their bark now glowing faint green—she hadn’t noticed that either. “What do you want from me, Isolde?" | | 15 | "But the cold blade that cuts wards will decide who eats—and who is eaten.” She paused, then added, “The shadow that walks between realms will be your key." | | 16 | "Nor chain—I was Aldric once, a sorcerer trapped by my own hubris." | | 17 | "Time glitched again. Rory checked her phone—now it showed 5:00 PM, but the sun in the Grove hadn’t moved. She realized she’d been in the clearing for what felt like ten minutes, but her delivery shift was supposed to start in an hour—would she make it back in time for Yu-Fei’s dinner rush? Or would the Grove’s time stretch into a day, making her late and risking her job?" | | 18 | "She knelt again, touching the moss, and noticed a small rift in the Veil—faint, shimmering, near the base of a standing stone. The Heartstone’s pulse spiked, hot enough to make her yelp. “There’s a portal here." | | 19 | "Rory’s cool-headed, quick thinking kicked in—her greatest asset from her Pre-Law days. She crushed a daisy under her boot by accident, the soft snap making Isolde’s eyes flicker (a rare crack in her ethereal composure). She tucked the Fae-Forged Blade back into her pocket, clutched the Heartstone Pendant, and looked at Isolde. “Give me one clear answer." | | 20 | "Rory parsed the truth beneath the riddle—she’d escape the feast, but not without cost. She nodded, knowing she had to return to the mortal world but would come back for the rift. She stepped toward the oak standing stones, the Heartstone’s pulse slowing as she nears the exit. Nyx slips into her shadow, and Isolde glides to the edge, leaving no footprints in the moss." | | 21 | "When Rory steps back into Richmond Park, the frost is still on the ground, her phone shows 3:18 PM—only a minute has passed outside, but the honey-pine scent of the Grove lingers in her nose. She mounts her delivery bike, her left wrist scar still tingling, and glances back at the oak standing stones—now invisible to her mortal eyes. The Heartstone’s faint pulse and the Fae-Forged Blade’s cold remind her she’s not done with the Grove, with Dymas, or with the shadow that walks between realms." |
| |
| 100.00% | Purple prose (modifier overload) | Target: <4% adverbs, <2% -ly adverbs, no adj stacking | | wordCount | 780 | | adjectiveStacks | 0 | | stackExamples | (empty) | | adverbCount | 18 | | adverbRatio | 0.023076923076923078 | | lyAdverbCount | 3 | | lyAdverbRatio | 0.0038461538461538464 | |
| 100.00% | Repeated phrase echo | Target: ≤20% sentences with echoes (window: 2) | | totalSentences | 50 | | echoCount | 0 | | echoWords | (empty) | |
| 100.00% | Sentence length variance | Target: CV ≥0.4 for sentence word counts | | totalSentences | 50 | | mean | 26.9 | | std | 20.8 | | cv | 0.773 | | sampleLengths | | 0 | 27 | | 1 | 39 | | 2 | 41 | | 3 | 43 | | 4 | 27 | | 5 | 45 | | 6 | 6 | | 7 | 36 | | 8 | 58 | | 9 | 44 | | 10 | 19 | | 11 | 10 | | 12 | 15 | | 13 | 45 | | 14 | 83 | | 15 | 10 | | 16 | 29 | | 17 | 23 | | 18 | 17 | | 19 | 19 | | 20 | 2 | | 21 | 14 | | 22 | 36 | | 23 | 41 | | 24 | 14 | | 25 | 31 | | 26 | 14 | | 27 | 3 | | 28 | 5 | | 29 | 11 | | 30 | 8 | | 31 | 42 | | 32 | 8 | | 33 | 24 | | 34 | 28 | | 35 | 3 | | 36 | 26 | | 37 | 12 | | 38 | 5 | | 39 | 69 | | 40 | 36 | | 41 | 1 | | 42 | 11 | | 43 | 23 | | 44 | 57 | | 45 | 6 | | 46 | 22 | | 47 | 6 | | 48 | 65 | | 49 | 86 |
| |
| 90.00% | Sentence opener variety | Target: ≥60% unique sentence openers | | consecutiveRepeats | 0 | | diversityRatio | 0.54 | | totalSentences | 50 | | uniqueOpeners | 27 | |
| 0.00% | Adverb-first sentence starts | Target: ≥3% sentences starting with an adverb | | adverbCount | 0 | | totalSentences | 45 | | matches | (empty) | | ratio | 0 | |
| 100.00% | Pronoun-first sentence starts | Target: ≤30% sentences starting with a pronoun | | pronounCount | 8 | | totalSentences | 45 | | matches | | 0 | "Her other hand curled around" | | 1 | "I see the thread that" | | 2 | "Your pendant senses the rift" | | 3 | "I cannot hold solid form" | | 4 | "Your pendant’s pulse is proof—Dymas’s" | | 5 | "I came for answers about" | | 6 | "I choose my own" | | 7 | "She knelt again, touching the" |
| | ratio | 0.178 | |
| 60.00% | Subject-first sentence starts | Target: ≤72% sentences starting with a subject | | subjectCount | 36 | | totalSentences | 45 | | matches | | 0 | "Rory’s scuffed delivery boots crunched" | | 1 | "Her other hand curled around" | | 2 | "Isolde glided ahead, silver waist-length" | | 3 | "Nyx slithered along the shadow" | | 4 | "I see the thread that" | | 5 | "Rory’s thumb brushed her wrist" | | 6 | "Isolde stopped at the first" | | 7 | "Nyx coalesced at Rory’s side," | | 8 | "Veil thin here—winter solstice weakens" | | 9 | "Your pendant senses the rift" | | 10 | "Rory stepped toward the oak" | | 11 | "Frost vanished from her boots." | | 12 | "Isolde corrected, gliding into the" | | 13 | "An hour here is a" | | 14 | "Nyx shifted to incorporeal, slipping" | | 15 | "I cannot hold solid form" | | 16 | "Rory knelt to touch a" | | 17 | "Isolde’s laugh was like wind" | | 18 | "Wildflowers bloom for the unbound," | | 19 | "Unease coiled in Rory’s gut." |
| | ratio | 0.8 | |
| 0.00% | Subordinate conjunction sentence starts | Target: ≥2% sentences starting with a subordinating conjunction | | subConjCount | 0 | | totalSentences | 45 | | matches | (empty) | | ratio | 0 | |
| 23.81% | Technical jargon density | Target: ≤6% sentences with technical-jargon patterns | | analyzedSentences | 12 | | technicalSentenceCount | 2 | | matches | | 0 | "Rory parsed the truth beneath the riddle—she’d escape the feast, but not without cost. She nodded, knowing she had to return to the mortal world but would come …" | | 1 | "When Rory steps back into Richmond Park, the frost is still on the ground, her phone shows 3:18 PM—only a minute has passed outside, but the honey-pine scent of…" |
| |
| 53.57% | Useless dialogue additions | Target: ≤5% dialogue tags with trailing filler fragments | | totalTags | 14 | | uselessAdditionCount | 2 | | matches | | 0 | "Nyx slithered, their humanoid silhouette shifting between solid and incorporeal—6’2" | | 1 | "Isolde said, her voice softening" |
| |
| 100.00% | Dialogue tag variety (said vs. fancy) | Target: ≤10% fancy dialogue tags | | totalTags | 2 | | fancyCount | 1 | | fancyTags | | 0 | "Isolde corrected (correct)" |
| | dialogueSentences | 35 | | tagDensity | 0.057 | | leniency | 0.114 | | rawRatio | 0.5 | | effectiveRatio | 0.057 | |