| 100.00% | Adverbs in dialogue tags | Target: ≤10% dialogue tags with adverbs | | totalTags | 3 | | adverbTagCount | 0 | | adverbTags | (empty) | | dialogueSentences | 3 | | tagDensity | 1 | | leniency | 1 | | rawRatio | 0 | | effectiveRatio | 0 | |
| 100.00% | AI-ism adverb frequency | Target: <2% AI-ism adverbs (58 tracked) | | wordCount | 1406 | | 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) | |
| 0.00% | AI-ism word frequency | Target: <2% AI-ism words (290 tracked) | | wordCount | 1406 | | totalAiIsms | 31 | | found | | | highlights | | 0 | "chill" | | 1 | "familiar" | | 2 | "pulsed" | | 3 | "navigated" | | 4 | "silence" | | 5 | "footsteps" | | 6 | "warmth" | | 7 | "pulse" | | 8 | "sentinel" | | 9 | "echo" | | 10 | "weight" | | 11 | "racing" | | 12 | "could feel" | | 13 | "aftermath" | | 14 | "loomed" | | 15 | "throb" | | 16 | "jaw clenched" |
| |
| 66.67% | Cliché density | Target: ≤1 cliche(s) per 800-word window | | totalCliches | 2 | | maxInWindow | 2 | | found | | 0 | | label | "jaw/fists clenched" | | count | 1 |
| | 1 | | label | "hung in the air" | | count | 1 |
|
| | highlights | | 0 | "jaw clenched" | | 1 | "hung in the air" |
| |
| 100.00% | Emotion telling (show vs. tell) | Target: ≤3% sentences with emotion telling | | emotionTells | 0 | | narrationSentences | 143 | | matches | (empty) | |
| 100.00% | Filter word density | Target: ≤3% sentences with filter/hedge words | | filterCount | 0 | | hedgeCount | 1 | | narrationSentences | 143 | | filterMatches | (empty) | | hedgeMatches | | |
| 100.00% | Gibberish response detection | Target: ≤1% gibberish-like sentences (hard fail if a sentence exceeds 800 words) | | analyzedSentences | 145 | | gibberishSentences | 0 | | adjustedGibberishSentences | 0 | | longSentenceCount | 0 | | runOnParagraphCount | 0 | | giantParagraphCount | 0 | | wordSaladCount | 0 | | repetitionLoopCount | 0 | | controlTokenCount | 0 | | maxSentenceWordsSeen | 41 | | ratio | 0 | | matches | (empty) | |
| 100.00% | Markdown formatting overuse | Target: ≤5% words in markdown formatting | | markdownSpans | 0 | | markdownWords | 0 | | totalWords | 1393 | | ratio | 0 | | matches | (empty) | |
| 100.00% | Missing dialogue indicators (quotation marks) | Target: ≤10% speech attributions without quotation marks | | totalAttributions | 6 | | unquotedAttributions | 0 | | matches | (empty) | |
| 100.00% | Name drop frequency | Target: ≤1.0 per-name mentions per 100 words | | totalMentions | 29 | | wordCount | 1371 | | uniqueNames | 12 | | maxNameDensity | 0.88 | | worstName | "Rory" | | maxWindowNameDensity | 1.5 | | worstWindowName | "Rory" | | discoveredNames | | November | 1 | | Isolde | 1 | | Eva | 3 | | Richmond | 2 | | Park | 2 | | Heartstone | 3 | | Hel | 1 | | London | 1 | | Silas | 1 | | God | 1 | | Breathing | 1 | | Rory | 12 |
| | persons | | 0 | "Isolde" | | 1 | "Eva" | | 2 | "Heartstone" | | 3 | "Silas" | | 4 | "Rory" |
| | places | | 0 | "Richmond" | | 1 | "Park" | | 2 | "London" |
| | globalScore | 1 | | windowScore | 1 | |
| 100.00% | Narrator intent-glossing | Target: ≤2% narration sentences with intent-glossing patterns | | analyzedSentences | 84 | | glossingSentenceCount | 0 | | matches | (empty) | |
| 100.00% | "Not X but Y" pattern overuse | Target: ≤1 "not X but Y" per 1000 words | | totalMatches | 0 | | per1kWords | 0 | | wordCount | 1393 | | matches | (empty) | |
| 100.00% | Overuse of "that" (subordinate clause padding) | Target: ≤2% sentences with "that" clauses | | thatCount | 0 | | totalSentences | 145 | | matches | (empty) | |
| 100.00% | Paragraph length variance | Target: CV ≥0.5 for paragraph word counts | | totalParagraphs | 56 | | mean | 24.88 | | std | 20.47 | | cv | 0.823 | | sampleLengths | | 0 | 10 | | 1 | 76 | | 2 | 57 | | 3 | 11 | | 4 | 60 | | 5 | 65 | | 6 | 13 | | 7 | 57 | | 8 | 4 | | 9 | 33 | | 10 | 39 | | 11 | 6 | | 12 | 3 | | 13 | 9 | | 14 | 15 | | 15 | 44 | | 16 | 8 | | 17 | 33 | | 18 | 29 | | 19 | 4 | | 20 | 39 | | 21 | 47 | | 22 | 4 | | 23 | 51 | | 24 | 7 | | 25 | 17 | | 26 | 7 | | 27 | 31 | | 28 | 1 | | 29 | 21 | | 30 | 48 | | 31 | 3 | | 32 | 34 | | 33 | 24 | | 34 | 2 | | 35 | 66 | | 36 | 1 | | 37 | 3 | | 38 | 44 | | 39 | 42 | | 40 | 40 | | 41 | 4 | | 42 | 37 | | 43 | 10 | | 44 | 44 | | 45 | 3 | | 46 | 4 | | 47 | 40 | | 48 | 13 | | 49 | 31 |
| |
| 100.00% | Passive voice overuse | Target: ≤2% passive sentences | | passiveCount | 1 | | totalSentences | 143 | | matches | | |
| 100.00% | Past progressive (was/were + -ing) overuse | Target: ≤2% past progressive verbs | | pastProgressiveCount | 2 | | totalVerbs | 223 | | matches | | 0 | "was opening" | | 1 | "were flattening" |
| |
| 0.00% | Em-dash & semicolon overuse | Target: ≤2% sentences with em-dashes/semicolons | | emDashCount | 15 | | semicolonCount | 0 | | flaggedSentences | 10 | | totalSentences | 145 | | ratio | 0.069 | | matches | | 0 | "The ancient oaks that formed the boundary of Isolde's grove should have been familiar by now—she'd come here three times since Eva first showed her the path through Richmond Park—but something about their silhouettes tonight made her skin crawl." | | 1 | "The wildflowers that carpeted the clearing should have died weeks ago—frost had claimed everything else in London—but here they bloomed in pale clusters, their petals catching no light." | | 2 | "The math didn't trouble her—time moved strangely in the grove, Eva had warned her—but the silence did." | | 3 | "The white noise that had filled her ears—so constant she hadn't noticed it—vanished." | | 4 | "She grabbed the silver chain to lift it away from her chest—" | | 5 | "Her phone light caught shapes in the blooms—pale petals, darker stems—but no doorway, no shimmer of unnatural light." | | 6 | "But the wildflowers—God, the wildflowers were flattening in a path that curved around the clearing's edge, moving from stone to stone, coming closer." | | 7 | "The pressure against her eardrums had shifted, the silence cracking like ice, and beneath it she could hear—" | | 8 | "The sounds of the park rushed back—the distant hum of traffic, the rustle of wind through leaves, the cry of a fox somewhere in the darkness." | | 9 | "It had no features she could distinguish—just darkness given form, a void that drank the moonlight and gave nothing back." |
| |
| 100.00% | Purple prose (modifier overload) | Target: <4% adverbs, <2% -ly adverbs, no adj stacking | | wordCount | 560 | | adjectiveStacks | 0 | | stackExamples | (empty) | | adverbCount | 14 | | adverbRatio | 0.025 | | lyAdverbCount | 2 | | lyAdverbRatio | 0.0035714285714285713 | |
| 100.00% | Repeated phrase echo | Target: ≤20% sentences with echoes (window: 2) | | totalSentences | 145 | | echoCount | 0 | | echoWords | (empty) | |
| 100.00% | Sentence length variance | Target: CV ≥0.4 for sentence word counts | | totalSentences | 145 | | mean | 9.61 | | std | 7.38 | | cv | 0.769 | | sampleLengths | | 0 | 10 | | 1 | 15 | | 2 | 39 | | 3 | 22 | | 4 | 8 | | 5 | 27 | | 6 | 3 | | 7 | 19 | | 8 | 11 | | 9 | 5 | | 10 | 28 | | 11 | 5 | | 12 | 22 | | 13 | 8 | | 14 | 11 | | 15 | 2 | | 16 | 7 | | 17 | 17 | | 18 | 2 | | 19 | 3 | | 20 | 15 | | 21 | 12 | | 22 | 1 | | 23 | 10 | | 24 | 27 | | 25 | 4 | | 26 | 12 | | 27 | 4 | | 28 | 4 | | 29 | 4 | | 30 | 4 | | 31 | 13 | | 32 | 12 | | 33 | 12 | | 34 | 8 | | 35 | 5 | | 36 | 14 | | 37 | 6 | | 38 | 3 | | 39 | 2 | | 40 | 6 | | 41 | 1 | | 42 | 4 | | 43 | 2 | | 44 | 2 | | 45 | 7 | | 46 | 12 | | 47 | 20 | | 48 | 12 | | 49 | 8 |
| |
| 31.38% | Sentence opener variety | Target: ≥60% unique sentence openers | | consecutiveRepeats | 27 | | diversityRatio | 0.2896551724137931 | | totalSentences | 145 | | uniqueOpeners | 42 | |
| 100.00% | Adverb-first sentence starts | Target: ≥3% sentences starting with an adverb | | adverbCount | 7 | | totalSentences | 122 | | matches | | 0 | "Somewhere in this grove, a" | | 1 | "Just her footsteps on the" | | 2 | "Just the weight of quiet" | | 3 | "Then, from somewhere behind her," | | 4 | "Away from whatever shared this" | | 5 | "Then it stepped back into" | | 6 | "Somewhere behind her, in the" |
| | ratio | 0.057 | |
| 100.00% | Pronoun-first sentence starts | Target: ≤30% sentences starting with a pronoun | | pronounCount | 31 | | totalSentences | 122 | | matches | | 0 | "She pressed her palm against" | | 1 | "she muttered, and stepped between" | | 2 | "She'd entered the park at" | | 3 | "She moved deeper into the" | | 4 | "Her throat clicked in the" | | 5 | "She grabbed the silver chain" | | 6 | "She swept her phone's light" | | 7 | "Her heart hammered against her" | | 8 | "She forced her breathing to" | | 9 | "She pushed the thought aside" | | 10 | "Her phone light caught shapes" | | 11 | "Her breath hung in the" | | 12 | "Her phone light arced across" | | 13 | "She backed toward the clearing's" | | 14 | "She could feel it through" | | 15 | "She couldn't hear footsteps." | | 16 | "She could only see their" | | 17 | "She didn't look back." | | 18 | "She didn't need to." | | 19 | "She reached the clearing's far" |
| | ratio | 0.254 | |
| 46.07% | Subject-first sentence starts | Target: ≤72% sentences starting with a subject | | subjectCount | 101 | | totalSentences | 122 | | matches | | 0 | "The standing stones rose from" | | 1 | "Rory paused at the edge" | | 2 | "The ancient oaks that formed" | | 3 | "The bark seemed darker, the" | | 4 | "She pressed her palm against" | | 5 | "The crimson gem pulsed against" | | 6 | "A Hel portal." | | 7 | "she muttered, and stepped between" | | 8 | "The temperature dropped ten degrees." | | 9 | "The wildflowers that carpeted the" | | 10 | "The sky above was clear," | | 11 | "Rory fished her phone from" | | 12 | "The screen cast a weak" | | 13 | "She'd entered the park at" | | 14 | "The math didn't trouble her—time" | | 15 | "She moved deeper into the" | | 16 | "The gem grew hotter against" | | 17 | "The portal was close." | | 18 | "That was the job." | | 19 | "A sound stopped her." |
| | ratio | 0.828 | |
| 0.00% | Subordinate conjunction sentence starts | Target: ≥2% sentences starting with a subordinating conjunction | | subConjCount | 0 | | totalSentences | 122 | | matches | (empty) | | ratio | 0 | |
| 46.00% | Technical jargon density | Target: ≤6% sentences with technical-jargon patterns | | analyzedSentences | 59 | | technicalSentenceCount | 8 | | matches | | 0 | "The ancient oaks that formed the boundary of Isolde's grove should have been familiar by now—she'd come here three times since Eva first showed her the path thr…" | | 1 | "The bark seemed darker, the gaps between the trunks narrower, as though the trees had shifted closer together since her last visit." | | 2 | "The wildflowers that carpeted the clearing should have died weeks ago—frost had claimed everything else in London—but here they bloomed in pale clusters, their …" | | 3 | "The gem grew hotter against her chest, its pulse quickening, and she fixed her attention on that rhythm rather than the shadows pooling between the standing sto…" | | 4 | "The Heartstone's crimson glow had brightened, its pulse racing now, and the heat seeping through her shirt bordered on painful." | | 5 | "Or had she said the grove was safer than other places, which wasn't the same thing at all." | | 6 | "But the wildflowers—God, the wildflowers were flattening in a path that curved around the clearing's edge, moving from stone to stone, coming closer." | | 7 | "She could only see their aftermath, the broken stems and crushed petals marking a trajectory that spiralled inward." |
| |
| 100.00% | Useless dialogue additions | Target: ≤5% dialogue tags with trailing filler fragments | | totalTags | 3 | | uselessAdditionCount | 0 | | matches | (empty) | |
| 0.00% | Dialogue tag variety (said vs. fancy) | Target: ≤10% fancy dialogue tags | | totalTags | 1 | | fancyCount | 1 | | fancyTags | | | dialogueSentences | 3 | | tagDensity | 0.333 | | leniency | 0.667 | | rawRatio | 1 | | effectiveRatio | 0.667 | |