| 100.00% | Adverbs in dialogue tags | Target: ≤10% dialogue tags with adverbs | | totalTags | 16 | | adverbTagCount | 0 | | adverbTags | (empty) | | dialogueSentences | 27 | | tagDensity | 0.593 | | leniency | 1 | | rawRatio | 0 | | effectiveRatio | 0 | |
| 83.29% | AI-ism adverb frequency | Target: <2% AI-ism adverbs (58 tracked) | | wordCount | 1197 | | totalAiIsmAdverbs | 4 | | found | | | highlights | | 0 | "very" | | 1 | "perfectly" | | 2 | "slowly" |
| |
| 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) | |
| 3.93% | AI-ism word frequency | Target: <2% AI-ism words (290 tracked) | | wordCount | 1197 | | totalAiIsms | 23 | | found | | 0 | | | 1 | | | 2 | | | 3 | | | 4 | | | 5 | | | 6 | | | 7 | | | 8 | | | 9 | | | 10 | | | 11 | | | 12 | | | 13 | | | 14 | | | 15 | | | 16 | | | 17 | | word | "the last thing" | | count | 1 |
|
| | highlights | | 0 | "pulse" | | 1 | "velvet" | | 2 | "crystalline" | | 3 | "intricate" | | 4 | "stomach" | | 5 | "silence" | | 6 | "throbbed" | | 7 | "warmth" | | 8 | "marble" | | 9 | "weight" | | 10 | "silk" | | 11 | "rhythmic" | | 12 | "depths" | | 13 | "shattered" | | 14 | "oppressive" | | 15 | "lilt" | | 16 | "maw" | | 17 | "the last thing" |
| |
| 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 | 64 | | matches | (empty) | |
| 98.21% | Filter word density | Target: ≤3% sentences with filter/hedge words | | filterCount | 0 | | hedgeCount | 2 | | narrationSentences | 64 | | filterMatches | (empty) | | hedgeMatches | | |
| 100.00% | Gibberish response detection | Target: ≤1% gibberish-like sentences (hard fail if a sentence exceeds 800 words) | | analyzedSentences | 75 | | gibberishSentences | 0 | | adjustedGibberishSentences | 0 | | longSentenceCount | 0 | | runOnParagraphCount | 0 | | giantParagraphCount | 0 | | wordSaladCount | 0 | | repetitionLoopCount | 0 | | controlTokenCount | 0 | | repeatedSegmentCount | 0 | | maxSentenceWordsSeen | 54 | | ratio | 0 | | matches | (empty) | |
| 100.00% | Markdown formatting overuse | Target: ≤5% words in markdown formatting | | markdownSpans | 0 | | markdownWords | 0 | | totalWords | 1190 | | ratio | 0 | | matches | (empty) | |
| 100.00% | Missing dialogue indicators (quotation marks) | Target: ≤10% speech attributions without quotation marks | | totalAttributions | 14 | | unquotedAttributions | 0 | | matches | (empty) | |
| 100.00% | Name drop frequency | Target: ≤1.0 per-name mentions per 100 words | | totalMentions | 20 | | wordCount | 1033 | | uniqueNames | 11 | | maxNameDensity | 0.48 | | worstName | "Nyx" | | maxWindowNameDensity | 1 | | worstWindowName | "Nyx" | | discoveredNames | | Archway | 1 | | Fae | 2 | | Heartstone | 2 | | Dymas | 1 | | London | 1 | | Earth | 2 | | Gluttony | 1 | | Silas | 1 | | Nyx | 5 | | Fae-forged | 1 | | Isolde | 3 |
| | persons | | 0 | "Gluttony" | | 1 | "Silas" | | 2 | "Nyx" | | 3 | "Isolde" |
| | places | | 0 | "Fae" | | 1 | "Heartstone" | | 2 | "London" |
| | globalScore | 1 | | windowScore | 1 | |
| 0.00% | Narrator intent-glossing | Target: ≤2% narration sentences with intent-glossing patterns | | analyzedSentences | 57 | | glossingSentenceCount | 6 | | matches | | 0 | "felt like my own pulse shivering agains" | | 1 | "looked like a dying eye, flickering with" | | 2 | "looked like bruised human hearts, drippin" | | 3 | "looked like faces frozen in mid-scream" | | 4 | "tasted like burnt sugar and copper" | | 5 | "sounded like a stomach rumbling in the sil" |
| |
| 100.00% | "Not X but Y" pattern overuse | Target: ≤1 "not X but Y" per 1000 words | | totalMatches | 0 | | per1kWords | 0 | | wordCount | 1190 | | matches | (empty) | |
| 100.00% | Overuse of "that" (subordinate clause padding) | Target: ≤2% sentences with "that" clauses | | thatCount | 0 | | totalSentences | 75 | | matches | (empty) | |
| 91.94% | Paragraph length variance | Target: CV ≥0.5 for paragraph word counts | | totalParagraphs | 29 | | mean | 41.03 | | std | 19.36 | | cv | 0.472 | | sampleLengths | | 0 | 75 | | 1 | 51 | | 2 | 33 | | 3 | 64 | | 4 | 71 | | 5 | 31 | | 6 | 21 | | 7 | 75 | | 8 | 26 | | 9 | 41 | | 10 | 45 | | 11 | 49 | | 12 | 29 | | 13 | 24 | | 14 | 68 | | 15 | 48 | | 16 | 34 | | 17 | 28 | | 18 | 27 | | 19 | 51 | | 20 | 42 | | 21 | 29 | | 22 | 23 | | 23 | 24 | | 24 | 73 | | 25 | 12 | | 26 | 12 | | 27 | 20 | | 28 | 64 |
| |
| 99.78% | Passive voice overuse | Target: ≤2% passive sentences | | passiveCount | 1 | | totalSentences | 64 | | matches | | 0 | "were occupied" | | 1 | "been melted" |
| |
| 20.79% | Past progressive (was/were + -ing) overuse | Target: ≤2% past progressive verbs | | pastProgressiveCount | 5 | | totalVerbs | 186 | | matches | | 0 | "were shrinking" | | 1 | "was already walking" | | 2 | "were losing" | | 3 | "were standing" | | 4 | "was slowly dissolving" |
| |
| 0.00% | Em-dash & semicolon overuse | Target: ≤2% sentences with em-dashes/semicolons | | emDashCount | 7 | | semicolonCount | 3 | | flaggedSentences | 8 | | totalSentences | 75 | | ratio | 0.107 | | matches | | 0 | "Behind us, the rift—a jagged tear in the fabric of the London night—looked like a dying eye, flickering with the grey, smoggy light of Earth." | | 1 | "It wasn't a sky; it was a canopy, heavy with the scent of fermented nectar and overripe, rotting fruit." | | 2 | "There were no people, but the chairs were occupied by heaps of discarded, discarded finery—tattered silk, rusted crowns, and piles of gold coins that looked as though they had been melted down and poured over human skulls." | | 3 | "The liquid wasn't wine; it was viscous, dark purple, and moved with a rhythmic, pulsing motion." | | 4 | "Then came the face—bloated, weeping golden ichor, with a mouth that stretched far too wide, held open by rusted iron hooks." | | 5 | "It opened its maw—the sound was a wet, grinding tear—and a swarm of translucent, winged horrors erupted from its throat, filling the amber air with a discordant, buzzing hum." | | 6 | "We didn't plummet into a valley; we dropped into a throat." | | 7 | "The amber sky vanished, replaced by the crushing, suffocating darkness of a gullet that stretched into infinity, and the last thing I heard before the void swallowed the light was the creature’s laughter—a sound like a thousand wine glasses shattering at once against a stone floor." |
| |
| 88.00% | Purple prose (modifier overload) | Target: <4% adverbs, <2% -ly adverbs, no adj stacking | | wordCount | 1047 | | adjectiveStacks | 2 | | stackExamples | | 0 | "ancient, moss-slicked walls." | | 1 | "sharp, high-pitched note" |
| | adverbCount | 27 | | adverbRatio | 0.025787965616045846 | | lyAdverbCount | 5 | | lyAdverbRatio | 0.004775549188156638 | |
| 100.00% | Repeated phrase echo | Target: ≤20% sentences with echoes (window: 2) | | totalSentences | 75 | | echoCount | 0 | | echoWords | (empty) | |
| 100.00% | Sentence length variance | Target: CV ≥0.4 for sentence word counts | | totalSentences | 75 | | mean | 15.87 | | std | 9.14 | | cv | 0.576 | | sampleLengths | | 0 | 22 | | 1 | 53 | | 2 | 18 | | 3 | 33 | | 4 | 25 | | 5 | 8 | | 6 | 7 | | 7 | 25 | | 8 | 13 | | 9 | 19 | | 10 | 14 | | 11 | 14 | | 12 | 18 | | 13 | 25 | | 14 | 22 | | 15 | 9 | | 16 | 15 | | 17 | 6 | | 18 | 2 | | 19 | 19 | | 20 | 15 | | 21 | 25 | | 22 | 14 | | 23 | 18 | | 24 | 8 | | 25 | 5 | | 26 | 3 | | 27 | 15 | | 28 | 18 | | 29 | 9 | | 30 | 19 | | 31 | 17 | | 32 | 12 | | 33 | 37 | | 34 | 24 | | 35 | 5 | | 36 | 11 | | 37 | 13 | | 38 | 7 | | 39 | 16 | | 40 | 14 | | 41 | 7 | | 42 | 4 | | 43 | 20 | | 44 | 20 | | 45 | 12 | | 46 | 16 | | 47 | 13 | | 48 | 12 | | 49 | 9 |
| |
| 53.33% | Sentence opener variety | Target: ≥60% unique sentence openers | | consecutiveRepeats | 10 | | diversityRatio | 0.4 | | totalSentences | 75 | | uniqueOpeners | 30 | |
| 100.00% | Adverb-first sentence starts | Target: ≥3% sentences starting with an adverb | | adverbCount | 2 | | totalSentences | 63 | | matches | | 0 | "Instead, a ripple expanded, catching" | | 1 | "Then came the face—bloated, weeping" |
| | ratio | 0.032 | |
| 10.48% | Pronoun-first sentence starts | Target: ≤30% sentences starting with a pronoun | | pronounCount | 33 | | totalSentences | 63 | | matches | | 0 | "I didn’t know if the" | | 1 | "They didn’t walk so much" | | 2 | "I muttered, my boots finding" | | 3 | "We stood in the throat" | | 4 | "It wasn't a sky; it" | | 5 | "She didn't leave tracks, her" | | 6 | "She stopped at the edge" | | 7 | "Their branches were laden with" | | 8 | "I said, my grip tightening" | | 9 | "I reached out to steady" | | 10 | "It sounded like a stomach" | | 11 | "I said, pulling back" | | 12 | "My wrist throbbed." | | 13 | "She stood perfectly still, pointing" | | 14 | "I said, recognizing the style" | | 15 | "We reached the edge of" | | 16 | "I leaned closer to inspect" | | 17 | "I drew the Fae-forged blade," | | 18 | "They shifted, expanding, their form" | | 19 | "I shouted, but the seer" |
| | ratio | 0.524 | |
| 23.49% | Subject-first sentence starts | Target: ≤72% sentences starting with a subject | | subjectCount | 55 | | totalSentences | 63 | | matches | | 0 | "The moonsilver blade in my" | | 1 | "I didn’t know if the" | | 2 | "Nyx whispered, their voice a" | | 3 | "They didn’t walk so much" | | 4 | "I muttered, my boots finding" | | 5 | "We stood in the throat" | | 6 | "It wasn't a sky; it" | | 7 | "Isolde moved past me, her" | | 8 | "She didn't leave tracks, her" | | 9 | "She stopped at the edge" | | 10 | "Their branches were laden with" | | 11 | "Isolde said, her lavender eyes" | | 12 | "I said, my grip tightening" | | 13 | "The trees were unnaturally large," | | 14 | "Every step down released a" | | 15 | "I reached out to steady" | | 16 | "It sounded like a stomach" | | 17 | "Nyx cautioned, their violet eyes" | | 18 | "I said, pulling back" | | 19 | "My wrist throbbed." |
| | ratio | 0.873 | |
| 0.00% | Subordinate conjunction sentence starts | Target: ≥2% sentences starting with a subordinating conjunction | | subConjCount | 0 | | totalSentences | 63 | | matches | (empty) | | ratio | 0 | |
| 0.00% | Technical jargon density | Target: ≤6% sentences with technical-jargon patterns | | analyzedSentences | 38 | | technicalSentenceCount | 12 | | matches | | 0 | "They didn’t walk so much as bleed into the space ahead of us, their silhouette shifting, flickering between the solid shape of a man and a wisp of smoke caught …" | | 1 | "She didn't leave tracks, her feet hovering mere millimetres above the pulsing, purple mulch." | | 2 | "Their branches were laden with fruit that looked like bruised human hearts, dripping a thick, golden syrup that hissed when it hit the soil below." | | 3 | "The trees were unnaturally large, their bark carved into intricate, shifting patterns that looked like faces frozen in mid-scream." | | 4 | "The crescent scar from my childhood felt tight, as if the cold skin were shrinking." | | 5 | "Instead, a ripple expanded, catching the light in a way that revealed thousands of tiny, staring eyes beneath the surface." | | 6 | "I drew the Fae-forged blade, the moonsilver humming a sharp, high-pitched note that shattered the oppressive silence of the grove." | | 7 | "They shifted, expanding, their form blocking the path back to the trees." | | 8 | "Then came the face—bloated, weeping golden ichor, with a mouth that stretched far too wide, held open by rusted iron hooks." | | 9 | "It opened its maw—the sound was a wet, grinding tear—and a swarm of translucent, winged horrors erupted from its throat, filling the amber air with a discordant…" | | 10 | "The dais shuddered, the ground under our feet beginning to liquefy as if the very Earth were losing its hold on reality." | | 11 | "The amber sky vanished, replaced by the crushing, suffocating darkness of a gullet that stretched into infinity, and the last thing I heard before the void swal…" |
| |
| 0.00% | Useless dialogue additions | Target: ≤5% dialogue tags with trailing filler fragments | | totalTags | 16 | | uselessAdditionCount | 4 | | matches | | 0 | "Nyx whispered, their voice a dry rustle of dead leaves against stone" | | 1 | "I said, my grip tightening on the hilt of the blade" | | 2 | "Nyx warned, their voice sinking into a low, rattling growl" | | 3 | "I shouted, but the seer was already walking toward the center, her arms outstretched, her eyes vacant as she stared into a future I couldn't see" |
| |
| 0.00% | Dialogue tag variety (said vs. fancy) | Target: ≤10% fancy dialogue tags | | totalTags | 13 | | fancyCount | 8 | | fancyTags | | 0 | "Nyx whispered (whisper)" | | 1 | "I muttered (mutter)" | | 2 | "Nyx warned (warn)" | | 3 | "I shouted (shout)" | | 4 | "she sang (sing)" | | 5 | "I hissed (hiss)" | | 6 | "I screamed (scream)" | | 7 | "she whispered (whisper)" |
| | dialogueSentences | 27 | | tagDensity | 0.481 | | leniency | 0.963 | | rawRatio | 0.615 | | effectiveRatio | 0.593 | |