| 100.00% | Adverbs in dialogue tags | Target: ≤10% dialogue tags with adverbs | | totalTags | 8 | | adverbTagCount | 0 | | adverbTags | (empty) | | dialogueSentences | 14 | | tagDensity | 0.571 | | leniency | 1 | | rawRatio | 0 | | effectiveRatio | 0 | |
| 100.00% | AI-ism adverb frequency | Target: <2% AI-ism adverbs (58 tracked) | | wordCount | 1240 | | 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) | |
| 47.58% | AI-ism word frequency | Target: <2% AI-ism words (290 tracked) | | wordCount | 1240 | | totalAiIsms | 13 | | found | | | highlights | | 0 | "pulse" | | 1 | "resolved" | | 2 | "throb" | | 3 | "flickered" | | 4 | "flicker" | | 5 | "weight" | | 6 | "footfall" | | 7 | "warmth" | | 8 | "throbbed" |
| |
| 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 | 102 | | matches | (empty) | |
| 100.00% | Filter word density | Target: ≤3% sentences with filter/hedge words | | filterCount | 0 | | hedgeCount | 0 | | narrationSentences | 102 | | filterMatches | (empty) | | hedgeMatches | (empty) | |
| 100.00% | Gibberish response detection | Target: ≤1% gibberish-like sentences (hard fail if a sentence exceeds 800 words) | | analyzedSentences | 109 | | gibberishSentences | 0 | | adjustedGibberishSentences | 0 | | longSentenceCount | 0 | | runOnParagraphCount | 0 | | giantParagraphCount | 0 | | wordSaladCount | 0 | | repetitionLoopCount | 0 | | controlTokenCount | 0 | | repeatedSegmentCount | 0 | | maxSentenceWordsSeen | 63 | | ratio | 0 | | matches | (empty) | |
| 100.00% | Markdown formatting overuse | Target: ≤5% words in markdown formatting | | markdownSpans | 0 | | markdownWords | 0 | | totalWords | 1251 | | 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 | 17 | | wordCount | 1175 | | uniqueNames | 7 | | maxNameDensity | 0.68 | | worstName | "Rory" | | maxWindowNameDensity | 1.5 | | worstWindowName | "Rory" | | discoveredNames | | Rory | 8 | | Fae | 1 | | Grove | 1 | | Isolde | 4 | | Putney | 1 | | Park | 1 | | Hel | 1 |
| | persons | | | places | | 0 | "Fae" | | 1 | "Grove" | | 2 | "Putney" | | 3 | "Park" | | 4 | "Hel" |
| | globalScore | 1 | | windowScore | 1 | |
| 100.00% | Narrator intent-glossing | Target: ≤2% narration sentences with intent-glossing patterns | | analyzedSentences | 62 | | glossingSentenceCount | 1 | | matches | | 0 | "sounded like a machine breaking" |
| |
| 100.00% | "Not X but Y" pattern overuse | Target: ≤1 "not X but Y" per 1000 words | | totalMatches | 0 | | per1kWords | 0 | | wordCount | 1251 | | matches | (empty) | |
| 100.00% | Overuse of "that" (subordinate clause padding) | Target: ≤2% sentences with "that" clauses | | thatCount | 1 | | totalSentences | 109 | | matches | | |
| 100.00% | Paragraph length variance | Target: CV ≥0.5 for paragraph word counts | | totalParagraphs | 43 | | mean | 29.09 | | std | 23.21 | | cv | 0.798 | | sampleLengths | | 0 | 9 | | 1 | 51 | | 2 | 9 | | 3 | 89 | | 4 | 35 | | 5 | 7 | | 6 | 63 | | 7 | 12 | | 8 | 21 | | 9 | 3 | | 10 | 38 | | 11 | 25 | | 12 | 61 | | 13 | 12 | | 14 | 9 | | 15 | 46 | | 16 | 4 | | 17 | 8 | | 18 | 42 | | 19 | 3 | | 20 | 62 | | 21 | 2 | | 22 | 54 | | 23 | 42 | | 24 | 34 | | 25 | 3 | | 26 | 10 | | 27 | 32 | | 28 | 1 | | 29 | 10 | | 30 | 44 | | 31 | 3 | | 32 | 69 | | 33 | 26 | | 34 | 35 | | 35 | 65 | | 36 | 27 | | 37 | 8 | | 38 | 19 | | 39 | 68 | | 40 | 7 | | 41 | 45 | | 42 | 38 |
| |
| 100.00% | Passive voice overuse | Target: ≤2% passive sentences | | passiveCount | 1 | | totalSentences | 102 | | matches | | |
| 100.00% | Past progressive (was/were + -ing) overuse | Target: ≤2% past progressive verbs | | pastProgressiveCount | 0 | | totalVerbs | 180 | | matches | (empty) | |
| 0.00% | Em-dash & semicolon overuse | Target: ≤2% sentences with em-dashes/semicolons | | emDashCount | 10 | | semicolonCount | 0 | | flaggedSentences | 9 | | totalSentences | 109 | | ratio | 0.083 | | matches | | 0 | "Wildflowers covered the clearing in a carpet that didn't belong to any season — foxglove and cornflower and something with petals the colour of a bruise, all of them open, all of them facing her." | | 1 | "What she hadn't expected was the battery — full when she'd left the tube station at Putney, now showing nineteen percent and dropping in chunks." | | 2 | "Somewhere past the stones, a bird called — two notes, then a third that dragged flat, like a cassette tape warping." | | 3 | "She held still and counted her breaths and told herself it was a corvid, corvids did strange things with sound, corvids could —" | | 4 | "Not its usual faint sunlit trickle — a slow throb, patient as a second heartbeat." | | 5 | "Then a second weight to her left, keeping pace with the first, and the rhythm between them matched — drag, pause, drag, pause — the way two people walk when they carry something heavy between them." | | 6 | "She thumbed it again and the beam burst back at half strength, and in that stutter the clearing looked wrong — the flat stone where she'd left her bag stood ten paces further from the stones than she remembered, or she stood further from the flat stone, and the wildflowers had closed their petals and turned pale stems toward the ground like fingers curling." | | 7 | "The scent hit like a room that hadn't been opened in years — sweet things gone over, sugar gone to vinegar, the ghost of something green underneath it." | | 8 | "She knew this the way she knew a room had changed around her — no sound of it crossing the boundary, just the acoustic difference, the way a voice sounds smaller in a full room." |
| |
| 100.00% | Purple prose (modifier overload) | Target: <4% adverbs, <2% -ly adverbs, no adj stacking | | wordCount | 113 | | adjectiveStacks | 0 | | stackExamples | (empty) | | adverbCount | 0 | | adverbRatio | 0 | | lyAdverbCount | 0 | | lyAdverbRatio | 0 | |
| 100.00% | Repeated phrase echo | Target: ≤20% sentences with echoes (window: 2) | | totalSentences | 109 | | echoCount | 0 | | echoWords | (empty) | |
| 100.00% | Sentence length variance | Target: CV ≥0.4 for sentence word counts | | totalSentences | 109 | | mean | 11.48 | | std | 11.37 | | cv | 0.991 | | sampleLengths | | 0 | 9 | | 1 | 16 | | 2 | 35 | | 3 | 3 | | 4 | 5 | | 5 | 1 | | 6 | 5 | | 7 | 31 | | 8 | 13 | | 9 | 28 | | 10 | 4 | | 11 | 8 | | 12 | 4 | | 13 | 1 | | 14 | 5 | | 15 | 25 | | 16 | 7 | | 17 | 25 | | 18 | 13 | | 19 | 3 | | 20 | 1 | | 21 | 2 | | 22 | 7 | | 23 | 12 | | 24 | 10 | | 25 | 2 | | 26 | 21 | | 27 | 3 | | 28 | 7 | | 29 | 8 | | 30 | 23 | | 31 | 4 | | 32 | 1 | | 33 | 20 | | 34 | 5 | | 35 | 7 | | 36 | 32 | | 37 | 17 | | 38 | 12 | | 39 | 9 | | 40 | 6 | | 41 | 15 | | 42 | 8 | | 43 | 17 | | 44 | 3 | | 45 | 1 | | 46 | 3 | | 47 | 5 | | 48 | 4 | | 49 | 6 |
| |
| 62.96% | Sentence opener variety | Target: ≥60% unique sentence openers | | consecutiveRepeats | 12 | | diversityRatio | 0.4444444444444444 | | totalSentences | 108 | | uniqueOpeners | 48 | |
| 100.00% | Adverb-first sentence starts | Target: ≥3% sentences starting with an adverb | | adverbCount | 4 | | totalSentences | 87 | | matches | | 0 | "Somewhere past the stones, a" | | 1 | "Then a second weight to" | | 2 | "Then a sound came from" | | 3 | "Then it said her name" |
| | ratio | 0.046 | |
| 86.67% | Pronoun-first sentence starts | Target: ≤30% sentences starting with a pronoun | | pronounCount | 29 | | totalSentences | 87 | | matches | | 0 | "She ducked between two of" | | 1 | "Her voice came out thin." | | 2 | "She'd come for the pendant." | | 3 | "She checked her phone." | | 4 | "She found the flat stone" | | 5 | "They bent and rose behind" | | 6 | "she told the dark between" | | 7 | "She held still and counted" | | 8 | "She picked up the torch." | | 9 | "she whispered, and didn't know" | | 10 | "It only did that near" | | 11 | "She pressed her fingers to" | | 12 | "She'd wanted answers." | | 13 | "She hadn't wanted a portal." | | 14 | "She checked her phone again:" | | 15 | "She could swear it." | | 16 | "she said to the grove" | | 17 | "Her voice steadied on the" | | 18 | "It got the first syllable" | | 19 | "She thumbed the switch." |
| | ratio | 0.333 | |
| 80.69% | Subject-first sentence starts | Target: ≤72% sentences starting with a subject | | subjectCount | 66 | | totalSentences | 87 | | matches | | 0 | "The oak standing stones caught" | | 1 | "She ducked between two of" | | 2 | "Wildflowers covered the clearing in" | | 3 | "Her voice came out thin." | | 4 | "She'd come for the pendant." | | 5 | "Rory needed answers about the" | | 6 | "That was the arrangement." | | 7 | "Midnight, the grove, and Rory" | | 8 | "She checked her phone." | | 9 | "The grove held its breath" | | 10 | "She found the flat stone" | | 11 | "Waiting felt worse than walking," | | 12 | "The flowers under her boots" | | 13 | "They bent and rose behind" | | 14 | "she told the dark between" | | 15 | "Rory stopped pacing." | | 16 | "Richmond Park had its share" | | 17 | "None of them sounded like" | | 18 | "She held still and counted" | | 19 | "The call came again." |
| | ratio | 0.759 | |
| 0.00% | Subordinate conjunction sentence starts | Target: ≥2% sentences starting with a subordinating conjunction | | subConjCount | 0 | | totalSentences | 87 | | matches | (empty) | | ratio | 0 | |
| 65.64% | Technical jargon density | Target: ≤6% sentences with technical-jargon patterns | | analyzedSentences | 37 | | technicalSentenceCount | 4 | | matches | | 0 | "Wildflowers covered the clearing in a carpet that didn't belong to any season — foxglove and cornflower and something with petals the colour of a bruise, all of…" | | 1 | "A slow dim and swell, dim and swell, as if the beam breathed." | | 2 | "The scent hit like a room that hadn't been opened in years — sweet things gone over, sugar gone to vinegar, the ghost of something green underneath it." | | 3 | "Rory held the stone and found it dead weight against her chest, the warmth gone out of it like a coal in water, and behind her the bark of the oak pressed shape…" |
| |
| 100.00% | Useless dialogue additions | Target: ≤5% dialogue tags with trailing filler fragments | | totalTags | 8 | | uselessAdditionCount | 0 | | matches | (empty) | |
| 7.14% | Dialogue tag variety (said vs. fancy) | Target: ≤10% fancy dialogue tags | | totalTags | 6 | | fancyCount | 2 | | fancyTags | | 0 | "she whispered (whisper)" | | 1 | "she breathed (breathe)" |
| | dialogueSentences | 14 | | tagDensity | 0.429 | | leniency | 0.857 | | rawRatio | 0.333 | | effectiveRatio | 0.286 | |