| 100.00% | Adverbs in dialogue tags | Target: ≤10% dialogue tags with adverbs | | totalTags | 1 | | adverbTagCount | 0 | | adverbTags | (empty) | | dialogueSentences | 4 | | tagDensity | 0.25 | | leniency | 0.5 | | rawRatio | 0 | | effectiveRatio | 0 | |
| 92.06% | AI-ism adverb frequency | Target: <2% AI-ism adverbs (58 tracked) | | wordCount | 1259 | | totalAiIsmAdverbs | 2 | | found | | | highlights | | |
| 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) | |
| 68.23% | AI-ism word frequency | Target: <2% AI-ism words (290 tracked) | | wordCount | 1259 | | totalAiIsms | 8 | | found | | | highlights | | 0 | "pulsed" | | 1 | "echoed" | | 2 | "loomed" | | 3 | "silence" | | 4 | "pulse" | | 5 | "echo" | | 6 | "flickered" | | 7 | "aligned" |
| |
| 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 | 169 | | matches | (empty) | |
| 100.00% | Filter word density | Target: ≤3% sentences with filter/hedge words | | filterCount | 0 | | hedgeCount | 5 | | narrationSentences | 169 | | filterMatches | (empty) | | hedgeMatches | | 0 | "seemed to" | | 1 | "began to" | | 2 | "begin to" |
| |
| 100.00% | Gibberish response detection | Target: ≤1% gibberish-like sentences (hard fail if a sentence exceeds 800 words) | | analyzedSentences | 174 | | gibberishSentences | 0 | | adjustedGibberishSentences | 0 | | longSentenceCount | 0 | | runOnParagraphCount | 0 | | giantParagraphCount | 0 | | wordSaladCount | 0 | | repetitionLoopCount | 0 | | controlTokenCount | 0 | | maxSentenceWordsSeen | 45 | | ratio | 0 | | matches | (empty) | |
| 0.00% | Markdown formatting overuse | Target: ≤5% words in markdown formatting | | markdownSpans | 18 | | markdownWords | 141 | | totalWords | 1253 | | ratio | 0.113 | | matches | | 0 | "The grove shows those who seek it what they need to see. Or what needs to see them." | | 1 | "Don't think about the restaurant fire. Don't think about the thing that crawled out." | | 2 | "They bloom always. Don't trust anything that grows where it shouldn't." | | 3 | "You're being ridiculous. Evan used to do this. Turn everything into monsters. You didn't believe him then." | | 4 | "Keep the stone close, child. He walks between." | | 5 | "Whispered." | | 6 | "This is what you came for. Answers. About your mother." | | 7 | "Stop. You're spiralling." | | 8 | "Silas said the grove shows you what you need to see. Or what needs to see you." | | 9 | "Not imagined." | | 10 | "crawling" | | 11 | "saw" | | 12 | "speaking" | | 13 | "Aurora." | | 14 | "Aurora Carter. Daughter of language. Daughter of moonlight." | | 15 | "She walks between. You carry her stone. You seek her." | | 16 | "Run, daughter of Carter. Run home. But know this:" | | 17 | "You cannot outrun what you have already invited in." |
| |
| 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 | 39 | | wordCount | 1224 | | uniqueNames | 15 | | maxNameDensity | 0.9 | | worstName | "Aurora" | | maxWindowNameDensity | 2 | | worstWindowName | "Aurora" | | discoveredNames | | Richmond | 2 | | Park | 2 | | Heartstone | 1 | | Focus | 1 | | Silas | 3 | | Evan | 3 | | Jennifer | 1 | | Carter | 3 | | Welsh | 1 | | Cardiff | 1 | | Aurora | 11 | | London | 2 | | Eva | 1 | | Roots | 1 | | You | 6 |
| | persons | | 0 | "Heartstone" | | 1 | "Silas" | | 2 | "Evan" | | 3 | "Jennifer" | | 4 | "Carter" | | 5 | "Aurora" | | 6 | "Eva" | | 7 | "Roots" | | 8 | "You" |
| | places | | 0 | "Richmond" | | 1 | "Park" | | 2 | "Cardiff" | | 3 | "London" |
| | globalScore | 1 | | windowScore | 1 | |
| 50.00% | Narrator intent-glossing | Target: ≤2% narration sentences with intent-glossing patterns | | analyzedSentences | 75 | | glossingSentenceCount | 3 | | matches | | 0 | "shadows that seemed to bend toward her rather than away" | | 1 | "seemed worse" | | 2 | "seemed closer now" |
| |
| 40.38% | "Not X but Y" pattern overuse | Target: ≤1 "not X but Y" per 1000 words | | totalMatches | 2 | | per1kWords | 1.596 | | wordCount | 1253 | | matches | | 0 | "not whispering, not breathing, but *speaking*" | | 1 | "not breathing, but *speaking*" |
| |
| 100.00% | Overuse of "that" (subordinate clause padding) | Target: ≤2% sentences with "that" clauses | | thatCount | 0 | | totalSentences | 174 | | matches | (empty) | |
| 100.00% | Paragraph length variance | Target: CV ≥0.5 for paragraph word counts | | totalParagraphs | 73 | | mean | 17.16 | | std | 16.58 | | cv | 0.966 | | sampleLengths | | 0 | 13 | | 1 | 69 | | 2 | 35 | | 3 | 11 | | 4 | 4 | | 5 | 2 | | 6 | 25 | | 7 | 14 | | 8 | 55 | | 9 | 9 | | 10 | 44 | | 11 | 10 | | 12 | 17 | | 13 | 40 | | 14 | 8 | | 15 | 1 | | 16 | 23 | | 17 | 3 | | 18 | 20 | | 19 | 9 | | 20 | 47 | | 21 | 2 | | 22 | 8 | | 23 | 10 | | 24 | 56 | | 25 | 3 | | 26 | 30 | | 27 | 23 | | 28 | 5 | | 29 | 2 | | 30 | 50 | | 31 | 12 | | 32 | 6 | | 33 | 17 | | 34 | 31 | | 35 | 7 | | 36 | 20 | | 37 | 4 | | 38 | 53 | | 39 | 2 | | 40 | 14 | | 41 | 1 | | 42 | 20 | | 43 | 3 | | 44 | 5 | | 45 | 30 | | 46 | 4 | | 47 | 4 | | 48 | 24 | | 49 | 6 |
| |
| 100.00% | Passive voice overuse | Target: ≤2% passive sentences | | passiveCount | 2 | | totalSentences | 169 | | matches | | 0 | "been arranged" | | 1 | "was gone" |
| |
| 100.00% | Past progressive (was/were + -ing) overuse | Target: ≤2% past progressive verbs | | pastProgressiveCount | 1 | | totalVerbs | 230 | | matches | | |
| 0.00% | Em-dash & semicolon overuse | Target: ≤2% sentences with em-dashes/semicolons | | emDashCount | 11 | | semicolonCount | 0 | | flaggedSentences | 10 | | totalSentences | 174 | | ratio | 0.057 | | matches | | 0 | "The crimson gem blazed with inner light, brighter than her phone, brighter than anything she'd seen outside of—" | | 1 | "Just shadows and those impossible flowers and the thick, organic smell of growth—too much growth, too green, like chlorophyll and honey and something rotting beneath." | | 2 | "Aurora could hear her own pulse in her ears, could hear the wet slide of her throat as she swallowed, could hear the distant drone of London beyond the park's boundaries—and beneath it all, so faint she might have imagined it, a second heartbeat." | | 3 | "She fell hard, palms scraping moss, and when she blinked the spots from her vision—" | | 4 | "Just—" | | 5 | "Not growing—*crawling*." | | 6 | "Their hollow centres blinked in the darkness, a constellation of watching eyes, and beneath them—" | | 7 | "Dark liquid seeped from the wounds, pooling at their bases, and Aurora could hear something now—not whispering, not breathing, but *speaking*." | | 8 | "Their hollow eyes aligned, focusing on the gap between two standing stones—on the path that led out of the grove." | | 9 | "Its face—if it could be called a face—held no features except a mouth that stretched too wide and too far and teeth that gleamed like old bone." |
| |
| 91.25% | Purple prose (modifier overload) | Target: <4% adverbs, <2% -ly adverbs, no adj stacking | | wordCount | 20 | | adjectiveStacks | 0 | | stackExamples | (empty) | | adverbCount | 1 | | adverbRatio | 0.05 | | lyAdverbCount | 0 | | lyAdverbRatio | 0 | |
| 100.00% | Repeated phrase echo | Target: ≤20% sentences with echoes (window: 2) | | totalSentences | 174 | | echoCount | 0 | | echoWords | (empty) | |
| 100.00% | Sentence length variance | Target: CV ≥0.4 for sentence word counts | | totalSentences | 174 | | mean | 7.2 | | std | 6.94 | | cv | 0.964 | | sampleLengths | | 0 | 6 | | 1 | 1 | | 2 | 6 | | 3 | 6 | | 4 | 18 | | 5 | 11 | | 6 | 11 | | 7 | 23 | | 8 | 6 | | 9 | 1 | | 10 | 1 | | 11 | 22 | | 12 | 5 | | 13 | 4 | | 14 | 2 | | 15 | 5 | | 16 | 4 | | 17 | 2 | | 18 | 7 | | 19 | 18 | | 20 | 6 | | 21 | 8 | | 22 | 1 | | 23 | 9 | | 24 | 19 | | 25 | 15 | | 26 | 3 | | 27 | 8 | | 28 | 9 | | 29 | 7 | | 30 | 25 | | 31 | 12 | | 32 | 10 | | 33 | 3 | | 34 | 5 | | 35 | 4 | | 36 | 5 | | 37 | 10 | | 38 | 30 | | 39 | 5 | | 40 | 3 | | 41 | 1 | | 42 | 6 | | 43 | 6 | | 44 | 11 | | 45 | 3 | | 46 | 2 | | 47 | 4 | | 48 | 14 | | 49 | 3 |
| |
| 56.90% | Sentence opener variety | Target: ≥60% unique sentence openers | | consecutiveRepeats | 21 | | diversityRatio | 0.41379310344827586 | | totalSentences | 174 | | uniqueOpeners | 72 | |
| 77.52% | Adverb-first sentence starts | Target: ≥3% sentences starting with an adverb | | adverbCount | 3 | | totalSentences | 129 | | matches | | 0 | "Just shadows and those impossible" | | 1 | "Then she'd disappeared, and the" | | 2 | "Instead, the roots shivered." |
| | ratio | 0.023 | |
| 100.00% | Pronoun-first sentence starts | Target: ≤30% sentences starting with a pronoun | | pronounCount | 31 | | totalSentences | 129 | | matches | | 0 | "She hadn't noticed how tall" | | 1 | "She checked the time." | | 2 | "She pulled it from beneath" | | 3 | "She pocketed her phone and" | | 4 | "*They bloom always." | | 5 | "She walked forward because stopping" | | 6 | "*You're being ridiculous." | | 7 | "You didn't believe him then.*" | | 8 | "He walks between.*" | | 9 | "She was certain they'd been" | | 10 | "Her heart hammered against her" | | 11 | "She swung the pendant toward" | | 12 | "She held her breath until" | | 13 | "She forced herself forward." | | 14 | "It wore something pale that" | | 15 | "Her second was to run." | | 16 | "She took a step closer." | | 17 | "She took another step." | | 18 | "Her voice came out smaller" | | 19 | "She threw up her arm," |
| | ratio | 0.24 | |
| 91.78% | Subject-first sentence starts | Target: ≤72% sentences starting with a subject | | subjectCount | 95 | | totalSentences | 129 | | matches | | 0 | "The pendant pulsed against her" | | 1 | "Aurora had stopped counting the" | | 2 | "The oak standing stones loomed" | | 3 | "She hadn't noticed how tall" | | 4 | "Tonight they stood rigid, watchful." | | 5 | "She checked the time." | | 6 | "The meeting wasn't until midnight." | | 7 | "The Heartstone flared hot." | | 8 | "She pulled it from beneath" | | 9 | "The crimson gem blazed with" | | 10 | "She pocketed her phone and" | | 11 | "The pendant's glow cast strange" | | 12 | "The wildflowers should have been" | | 13 | "*They bloom always." | | 14 | "The flowers nodded in a" | | 15 | "She walked forward because stopping" | | 16 | "The standing stones grew larger" | | 17 | "The pendant's heat spread down" | | 18 | "*You're being ridiculous." | | 19 | "Evan used to do this." |
| | ratio | 0.736 | |
| 77.52% | Subordinate conjunction sentence starts | Target: ≥2% sentences starting with a subordinating conjunction | | subConjCount | 2 | | totalSentences | 129 | | matches | | 0 | "Now, standing at the edge" | | 1 | "Now they curved around her" |
| | ratio | 0.016 | |
| 38.33% | Technical jargon density | Target: ≤6% sentences with technical-jargon patterns | | analyzedSentences | 41 | | technicalSentenceCount | 6 | | matches | | 0 | "Now, standing at the edge of Richmond Park with her phone's torch cutting a thin white line through the darkness, she wasn't laughing." | | 1 | "Long dark hair that fell past shoulders that seemed too narrow, too sharp." | | 2 | "Its stem bent at impossible angles, its petals unfolding one by one, revealing a centre that wasn't a centre." | | 3 | "All crawling toward her with the slow, inexorable patience of something that had been waiting for a very long time." | | 4 | "Thick black roots that burst from the earth in tangled ropes, weaving between the stones, circling her, tightening." | | 5 | "Its face—if it could be called a face—held no features except a mouth that stretched too wide and too far and teeth that gleamed like old bone." |
| |
| 100.00% | Useless dialogue additions | Target: ≤5% dialogue tags with trailing filler fragments | | totalTags | 1 | | uselessAdditionCount | 0 | | matches | (empty) | |
| 100.00% | Dialogue tag variety (said vs. fancy) | Target: ≤10% fancy dialogue tags | |