| 100.00% | Adverbs in dialogue tags | Target: ≤10% dialogue tags with adverbs | | totalTags | 6 | | adverbTagCount | 0 | | adverbTags | (empty) | | dialogueSentences | 11 | | tagDensity | 0.545 | | leniency | 1 | | rawRatio | 0 | | effectiveRatio | 0 | |
| 100.00% | AI-ism adverb frequency | Target: <2% AI-ism adverbs (58 tracked) | | wordCount | 1088 | | 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) | |
| 35.66% | AI-ism word frequency | Target: <2% AI-ism words (290 tracked) | | wordCount | 1088 | | totalAiIsms | 14 | | found | | | highlights | | 0 | "pulse" | | 1 | "scanning" | | 2 | "synchronized" | | 3 | "stark" | | 4 | "searing" | | 5 | "warmth" | | 6 | "silence" | | 7 | "familiar" | | 8 | "echoes" | | 9 | "trembled" | | 10 | "glinting" | | 11 | "grave" |
| |
| 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 | 1 | | narrationSentences | 41 | | matches | | |
| 38.33% | Filter word density | Target: ≤3% sentences with filter/hedge words | | filterCount | 3 | | hedgeCount | 0 | | narrationSentences | 41 | | filterMatches | | | hedgeMatches | (empty) | |
| 100.00% | Gibberish response detection | Target: ≤1% gibberish-like sentences (hard fail if a sentence exceeds 800 words) | | analyzedSentences | 48 | | gibberishSentences | 0 | | adjustedGibberishSentences | 0 | | longSentenceCount | 0 | | runOnParagraphCount | 0 | | giantParagraphCount | 0 | | wordSaladCount | 0 | | repetitionLoopCount | 0 | | controlTokenCount | 0 | | maxSentenceWordsSeen | 47 | | ratio | 0 | | matches | (empty) | |
| 100.00% | Markdown formatting overuse | Target: ≤5% words in markdown formatting | | markdownSpans | 0 | | markdownWords | 0 | | totalWords | 1072 | | ratio | 0 | | matches | (empty) | |
| 100.00% | Missing dialogue indicators (quotation marks) | Target: ≤10% speech attributions without quotation marks | | totalAttributions | 8 | | unquotedAttributions | 0 | | matches | (empty) | |
| 100.00% | Name drop frequency | Target: ≤1.0 per-name mentions per 100 words | | totalMentions | 24 | | wordCount | 944 | | uniqueNames | 13 | | maxNameDensity | 0.32 | | worstName | "Heartstone" | | maxWindowNameDensity | 1.5 | | worstWindowName | "Eva" | | discoveredNames | | Heartstone | 3 | | Pendant | 3 | | Yu-Fei | 1 | | Richmond | 2 | | Park | 2 | | Grove | 2 | | Cardiff | 3 | | Eva | 3 | | Welsh | 1 | | Hel | 1 | | London | 1 | | Irish | 1 | | Fae | 1 |
| | persons | | 0 | "Pendant" | | 1 | "Grove" | | 2 | "Eva" | | 3 | "Fae" |
| | places | | 0 | "Yu-Fei" | | 1 | "Richmond" | | 2 | "Park" | | 3 | "Cardiff" | | 4 | "London" |
| | globalScore | 1 | | windowScore | 1 | |
| 100.00% | Narrator intent-glossing | Target: ≤2% narration sentences with intent-glossing patterns | | analyzedSentences | 39 | | glossingSentenceCount | 0 | | matches | (empty) | |
| 13.43% | "Not X but Y" pattern overuse | Target: ≤1 "not X but Y" per 1000 words | | totalMatches | 2 | | per1kWords | 1.866 | | wordCount | 1072 | | matches | | 0 | "not the sharp tang of recent blood, but something sharper, fae-touched, like heated brass" | | 1 | "No one but" |
| |
| 100.00% | Overuse of "that" (subordinate clause padding) | Target: ≤2% sentences with "that" clauses | | thatCount | 0 | | totalSentences | 48 | | matches | (empty) | |
| 100.00% | Paragraph length variance | Target: CV ≥0.5 for paragraph word counts | | totalParagraphs | 21 | | mean | 51.05 | | std | 36.59 | | cv | 0.717 | | sampleLengths | | 0 | 13 | | 1 | 103 | | 2 | 121 | | 3 | 82 | | 4 | 91 | | 5 | 76 | | 6 | 7 | | 7 | 52 | | 8 | 6 | | 9 | 7 | | 10 | 78 | | 11 | 59 | | 12 | 26 | | 13 | 52 | | 14 | 7 | | 15 | 56 | | 16 | 7 | | 17 | 40 | | 18 | 78 | | 19 | 12 | | 20 | 99 |
| |
| 79.59% | Passive voice overuse | Target: ≤2% passive sentences | | passiveCount | 3 | | totalSentences | 41 | | matches | | 0 | "being pressed" | | 1 | "been replaced" | | 2 | "is gone" |
| |
| 100.00% | Past progressive (was/were + -ing) overuse | Target: ≤2% past progressive verbs | | pastProgressiveCount | 0 | | totalVerbs | 161 | | matches | (empty) | |
| 0.00% | Em-dash & semicolon overuse | Target: ≤2% sentences with em-dashes/semicolons | | emDashCount | 11 | | semicolonCount | 2 | | flaggedSentences | 11 | | totalSentences | 48 | | ratio | 0.229 | | matches | | 0 | "The crimson Heartstone Pendant thrums against my chest, its thin silver chain digging into the hollow of my throat—proof I didn’t hallucinate the burn through my delivery bag’s canvas strap an hour prior." | | 1 | "Sweet wildflower scent bursts over me, thick enough to cloy, but under it lingers a rot—like overripe blackberries left to fester in a locked metal box." | | 2 | "The air changes the second my scuffed delivery boots hit the Grove’s soft mossy earth; my cheap plastic delivery watch ticks too fast, then too slow, a flip-flop rhythm that makes my teeth ache." | | 3 | "Copper stings my nostrils then—not the sharp tang of recent blood, but something sharper, fae-touched, like heated brass." | | 4 | "The voice is Eva’s—familiar, warm, the same tone she used when she’d texted me to flee my abusive ex’s Cardiff flat—but it’s warped, as if it’s coming through a waterlogged radio." | | 5 | "I spin again, but no one stands there; the wildflowers sway faster, their petals brushing my boots like tiny, curious hands." | | 6 | "No one but Eva knew I’d taken it—she’d teased me about it over tea before I left for my shift, saying it would make me look less like a tired delivery person and more like the sharp barrister’s daughter I’d once been." | | 7 | "I’d forgotten that—forgotten how my Welsh teacher mom had taught me the simple tune, how I’d practiced for hours until my hands trembled." | | 8 | "I’d thought I’d escaped him—sneaked out of our Cardiff flat while he slept, took the first train to London, changed my number and my routine—but the voice’s claim makes my blood run cold, my bright blue eyes widening with fear I usually keep locked away." | | 9 | "“Four generations of Carters have danced in this Grove.” The voice’s tone shifts, deeper now, as if it’s been replaced by someone else—my Irish barrister dad, his sharp drawl warped by the Fae’s time distortion." | | 10 | "But the tire iron is gone—vanished into the moss, as if it never existed." |
| |
| 100.00% | Purple prose (modifier overload) | Target: <4% adverbs, <2% -ly adverbs, no adj stacking | | wordCount | 284 | | adjectiveStacks | 0 | | stackExamples | (empty) | | adverbCount | 7 | | adverbRatio | 0.02464788732394366 | | lyAdverbCount | 0 | | lyAdverbRatio | 0 | |
| 100.00% | Repeated phrase echo | Target: ≤20% sentences with echoes (window: 2) | | totalSentences | 48 | | echoCount | 0 | | echoWords | (empty) | |
| 100.00% | Sentence length variance | Target: CV ≥0.4 for sentence word counts | | totalSentences | 48 | | mean | 22.33 | | std | 11.4 | | cv | 0.51 | | sampleLengths | | 0 | 13 | | 1 | 33 | | 2 | 36 | | 3 | 34 | | 4 | 15 | | 5 | 26 | | 6 | 18 | | 7 | 34 | | 8 | 28 | | 9 | 10 | | 10 | 21 | | 11 | 16 | | 12 | 35 | | 13 | 18 | | 14 | 28 | | 15 | 45 | | 16 | 22 | | 17 | 35 | | 18 | 19 | | 19 | 7 | | 20 | 31 | | 21 | 21 | | 22 | 6 | | 23 | 7 | | 24 | 2 | | 25 | 34 | | 26 | 42 | | 27 | 15 | | 28 | 18 | | 29 | 26 | | 30 | 7 | | 31 | 19 | | 32 | 23 | | 33 | 29 | | 34 | 7 | | 35 | 11 | | 36 | 45 | | 37 | 7 | | 38 | 35 | | 39 | 5 | | 40 | 20 | | 41 | 24 | | 42 | 34 | | 43 | 12 | | 44 | 14 | | 45 | 16 | | 46 | 32 | | 47 | 37 |
| |
| 56.25% | Sentence opener variety | Target: ≥60% unique sentence openers | | consecutiveRepeats | 3 | | diversityRatio | 0.375 | | totalSentences | 48 | | uniqueOpeners | 18 | |
| 0.00% | Adverb-first sentence starts | Target: ≥3% sentences starting with an adverb | | adverbCount | 0 | | totalSentences | 40 | | matches | (empty) | | ratio | 0 | |
| 60.00% | Pronoun-first sentence starts | Target: ≤30% sentences starting with a pronoun | | pronounCount | 16 | | totalSentences | 40 | | matches | | 0 | "I jam my delivery bike’s" | | 1 | "I’d lied to Yu-Fei about" | | 2 | "I step through the gap" | | 3 | "I pause to catch my" | | 4 | "I’d received it from a" | | 5 | "My mom used to laugh" | | 6 | "I grip the tire iron" | | 7 | "I spin again, but no" | | 8 | "I’d stolen a tube of" | | 9 | "It’s cold, like liquid nitrogen," | | 10 | "I’d forgotten that—forgotten how my" | | 11 | "I’d thought I’d escaped him—sneaked" | | 12 | "I blink, and when I" | | 13 | "My delivery watch melts on" | | 14 | "I say, reaching for the" | | 15 | "It wraps around my throat," |
| | ratio | 0.4 | |
| 22.50% | Subject-first sentence starts | Target: ≤72% sentences starting with a subject | | subjectCount | 35 | | totalSentences | 40 | | matches | | 0 | "I jam my delivery bike’s" | | 1 | "The crimson Heartstone Pendant thrums" | | 2 | "I’d lied to Yu-Fei about" | | 3 | "The stone shifts with a" | | 4 | "I step through the gap" | | 5 | "The air changes the second" | | 6 | "Time warps here, I remember" | | 7 | "I pause to catch my" | | 8 | "Clumps of vivid violet wildflowers" | | 9 | "A shadow slithers at the" | | 10 | "Copper stings my nostrils then—not" | | 11 | "The Heartstone Pendant burns hotter," | | 12 | "I’d received it from a" | | 13 | "A sound cuts through the" | | 14 | "My mom used to laugh" | | 15 | "I grip the tire iron" | | 16 | "The voice is Eva’s—familiar, warm," | | 17 | "I spin again, but no" | | 18 | "I’d stolen a tube of" | | 19 | "The shadow returns, this time" |
| | ratio | 0.875 | |
| 0.00% | Subordinate conjunction sentence starts | Target: ≥2% sentences starting with a subordinating conjunction | | subConjCount | 0 | | totalSentences | 40 | | matches | (empty) | | ratio | 0 | |
| 0.00% | Technical jargon density | Target: ≤6% sentences with technical-jargon patterns | | analyzedSentences | 34 | | technicalSentenceCount | 9 | | matches | | 0 | "The air changes the second my scuffed delivery boots hit the Grove’s soft mossy earth; my cheap plastic delivery watch ticks too fast, then too slow, a flip-flo…" | | 1 | "I pause to catch my breath, scanning the hidden clearing." | | 2 | "My mom used to laugh with me like that when we baked soda bread in our Cardiff kitchen, but this sound makes my skin prickle, as if tiny needles are being press…" | | 3 | "I grip the tire iron tighter, my crescent scar tingling as if someone’s running a cold finger over it." | | 4 | "The voice is Eva’s—familiar, warm, the same tone she used when she’d texted me to flee my abusive ex’s Cardiff flat—but it’s warped, as if it’s coming through a…" | | 5 | "The stone’s rough bark scrapes my shoulder, and I gasp, the tire iron clattering to the ground with a loud clang that echoes through the clearing." | | 6 | "The memory tugs at me, soft and dangerous, and I force myself to focus on the pendant’s pulse, a steady thrum that tells me a Hel portal is near." | | 7 | "I blink, and when I open my eyes, the oak standing stones are shifting, their gaps closing one by one." | | 8 | "It wraps around my throat, cutting off my breath, and I thrash, my fingers scratching at the cold, rocky skin as the wildflowers bloom faster, their petals cove…" |
| |
| 100.00% | Useless dialogue additions | Target: ≤5% dialogue tags with trailing filler fragments | | totalTags | 6 | | uselessAdditionCount | 0 | | matches | (empty) | |
| 100.00% | Dialogue tag variety (said vs. fancy) | Target: ≤10% fancy dialogue tags | | totalTags | 2 | | fancyCount | 0 | | fancyTags | (empty) | | dialogueSentences | 11 | | tagDensity | 0.182 | | leniency | 0.364 | | rawRatio | 0 | | effectiveRatio | 0 | |