| 100.00% | Adverbs in dialogue tags | Target: ≤10% dialogue tags with adverbs | | totalTags | 7 | | adverbTagCount | 0 | | adverbTags | (empty) | | dialogueSentences | 13 | | tagDensity | 0.538 | | leniency | 1 | | rawRatio | 0 | | effectiveRatio | 0 | |
| 100.00% | AI-ism adverb frequency | Target: <2% AI-ism adverbs (58 tracked) | | wordCount | 1030 | | 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) | |
| 66.02% | AI-ism word frequency | Target: <2% AI-ism words (290 tracked) | | wordCount | 1030 | | totalAiIsms | 7 | | found | | | highlights | | 0 | "pulse" | | 1 | "echo" | | 2 | "pulsed" | | 3 | "silence" | | 4 | "weight" | | 5 | "searing" |
| |
| 100.00% | Cliché density | Target: ≤1 cliche(s) per 800-word window | | totalCliches | 1 | | maxInWindow | 1 | | found | | 0 | | label | "hung in the air" | | count | 1 |
|
| | highlights | | |
| 100.00% | Emotion telling (show vs. tell) | Target: ≤3% sentences with emotion telling | | emotionTells | 0 | | narrationSentences | 94 | | matches | (empty) | |
| 100.00% | Filter word density | Target: ≤3% sentences with filter/hedge words | | filterCount | 0 | | hedgeCount | 1 | | narrationSentences | 94 | | filterMatches | (empty) | | hedgeMatches | | |
| 100.00% | Gibberish response detection | Target: ≤1% gibberish-like sentences (hard fail if a sentence exceeds 800 words) | | analyzedSentences | 100 | | 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 | 1035 | | ratio | 0 | | matches | (empty) | |
| 100.00% | Missing dialogue indicators (quotation marks) | Target: ≤10% speech attributions without quotation marks | | totalAttributions | 7 | | unquotedAttributions | 0 | | matches | (empty) | |
| 100.00% | Name drop frequency | Target: ≤1.0 per-name mentions per 100 words | | totalMentions | 10 | | wordCount | 997 | | uniqueNames | 5 | | maxNameDensity | 0.4 | | worstName | "Aurora" | | maxWindowNameDensity | 0.5 | | worstWindowName | "Aurora" | | discoveredNames | | Aurora | 4 | | Richmond | 1 | | Park | 1 | | October | 1 | | Eva | 3 |
| | persons | | | places | | | globalScore | 1 | | windowScore | 1 | |
| 100.00% | Narrator intent-glossing | Target: ≤2% narration sentences with intent-glossing patterns | | analyzedSentences | 54 | | 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 | 1035 | | matches | (empty) | |
| 100.00% | Overuse of "that" (subordinate clause padding) | Target: ≤2% sentences with "that" clauses | | thatCount | 0 | | totalSentences | 100 | | matches | (empty) | |
| 100.00% | Paragraph length variance | Target: CV ≥0.5 for paragraph word counts | | totalParagraphs | 41 | | mean | 25.24 | | std | 20.85 | | cv | 0.826 | | sampleLengths | | 0 | 55 | | 1 | 12 | | 2 | 28 | | 3 | 48 | | 4 | 37 | | 5 | 5 | | 6 | 31 | | 7 | 7 | | 8 | 41 | | 9 | 57 | | 10 | 19 | | 11 | 21 | | 12 | 9 | | 13 | 27 | | 14 | 6 | | 15 | 1 | | 16 | 13 | | 17 | 71 | | 18 | 18 | | 19 | 4 | | 20 | 20 | | 21 | 9 | | 22 | 73 | | 23 | 9 | | 24 | 6 | | 25 | 3 | | 26 | 45 | | 27 | 38 | | 28 | 6 | | 29 | 29 | | 30 | 6 | | 31 | 2 | | 32 | 68 | | 33 | 47 | | 34 | 18 | | 35 | 6 | | 36 | 42 | | 37 | 8 | | 38 | 50 | | 39 | 4 | | 40 | 36 |
| |
| 100.00% | Passive voice overuse | Target: ≤2% passive sentences | | passiveCount | 0 | | totalSentences | 94 | | matches | (empty) | |
| 78.05% | Past progressive (was/were + -ing) overuse | Target: ≤2% past progressive verbs | | pastProgressiveCount | 3 | | totalVerbs | 164 | | matches | | 0 | "were circling" | | 1 | "were coming" | | 2 | "were getting" |
| |
| 28.57% | Em-dash & semicolon overuse | Target: ≤2% sentences with em-dashes/semicolons | | emDashCount | 5 | | semicolonCount | 0 | | flaggedSentences | 4 | | totalSentences | 100 | | ratio | 0.04 | | matches | | 0 | "Not gradually — all at once, like walking into a cellar." | | 1 | "She fixed the beam on it and there was nothing — only the grass, only the flowers, only the dark crouched behind them like water behind glass." | | 2 | "Not warm anymore — hot, searing through her shirt, and she clutched it and felt it throbbing against her palm in time with that other heartbeat, the great one beneath the clearing, the two of them syncing, calling to each other across the dark." | | 3 | "She couldn't understand them — they slid off her mind like rain off glass — but they were words, threaded through the high glass notes, and they were getting closer, and the breathing had stopped, which was somehow far worse than its continuing." |
| |
| 94.00% | Purple prose (modifier overload) | Target: <4% adverbs, <2% -ly adverbs, no adj stacking | | wordCount | 720 | | adjectiveStacks | 1 | | stackExamples | | | adverbCount | 28 | | adverbRatio | 0.03888888888888889 | | lyAdverbCount | 10 | | lyAdverbRatio | 0.013888888888888888 | |
| 100.00% | Repeated phrase echo | Target: ≤20% sentences with echoes (window: 2) | | totalSentences | 100 | | echoCount | 0 | | echoWords | (empty) | |
| 100.00% | Sentence length variance | Target: CV ≥0.4 for sentence word counts | | totalSentences | 100 | | mean | 10.35 | | std | 10.92 | | cv | 1.055 | | sampleLengths | | 0 | 20 | | 1 | 5 | | 2 | 30 | | 3 | 6 | | 4 | 6 | | 5 | 28 | | 6 | 7 | | 7 | 2 | | 8 | 16 | | 9 | 23 | | 10 | 7 | | 11 | 15 | | 12 | 15 | | 13 | 5 | | 14 | 3 | | 15 | 11 | | 16 | 17 | | 17 | 3 | | 18 | 4 | | 19 | 9 | | 20 | 18 | | 21 | 2 | | 22 | 2 | | 23 | 10 | | 24 | 8 | | 25 | 3 | | 26 | 15 | | 27 | 31 | | 28 | 7 | | 29 | 6 | | 30 | 6 | | 31 | 4 | | 32 | 1 | | 33 | 16 | | 34 | 5 | | 35 | 4 | | 36 | 6 | | 37 | 14 | | 38 | 7 | | 39 | 2 | | 40 | 1 | | 41 | 3 | | 42 | 1 | | 43 | 7 | | 44 | 2 | | 45 | 4 | | 46 | 10 | | 47 | 27 | | 48 | 34 | | 49 | 5 |
| |
| 58.25% | Sentence opener variety | Target: ≥60% unique sentence openers | | consecutiveRepeats | 9 | | diversityRatio | 0.40404040404040403 | | totalSentences | 99 | | uniqueOpeners | 40 | |
| 100.00% | Adverb-first sentence starts | Target: ≥3% sentences starting with an adverb | | adverbCount | 3 | | totalSentences | 73 | | matches | | 0 | "Just warm, the way a" | | 1 | "Then a third to her" | | 2 | "Of course the way out" |
| | ratio | 0.041 | |
| 83.01% | Pronoun-first sentence starts | Target: ≤30% sentences starting with a pronoun | | pronounCount | 25 | | totalSentences | 73 | | matches | | 0 | "She'd counted on the moon." | | 1 | "She shouldn't have come after" | | 2 | "she muttered, and her own" | | 3 | "She pressed her palm to" | | 4 | "She stepped between the stones." | | 5 | "Her breath ghosted out in" | | 6 | "She stamped her foot, hard," | | 7 | "She had the sudden, certain" | | 8 | "She checked her phone." | | 9 | "She lowered the phone" | | 10 | "It hung in the air" | | 11 | "She kept the torch moving." | | 12 | "she told it, as if" | | 13 | "She fixed the beam on" | | 14 | "Her mouth had gone dry." | | 15 | "She wet her lips." | | 16 | "It pressed against her ears" | | 17 | "She kept the torch ahead" | | 18 | "Her hand closed on empty" | | 19 | "It was soft." |
| | ratio | 0.342 | |
| 49.04% | Subject-first sentence starts | Target: ≤72% sentences starting with a subject | | subjectCount | 60 | | totalSentences | 73 | | matches | | 0 | "The standing stones rose out" | | 1 | "She'd counted on the moon." | | 2 | "She shouldn't have come after" | | 3 | "Eva had told her as" | | 4 | "she muttered, and her own" | | 5 | "The pendant lay warm against" | | 6 | "She pressed her palm to" | | 7 | "Wildflowers crowded the clearing beyond" | | 8 | "She stepped between the stones." | | 9 | "The temperature dropped." | | 10 | "Her breath ghosted out in" | | 11 | "The grass gave under her" | | 12 | "That was the first thing" | | 13 | "She stamped her foot, hard," | | 14 | "Aurora swung the torch in" | | 15 | "Trees, stones, flowers." | | 16 | "The far edge of the" | | 17 | "She had the sudden, certain" | | 18 | "An hour can be a" | | 19 | "A minute can be a" |
| | ratio | 0.822 | |
| 68.49% | Subordinate conjunction sentence starts | Target: ≥2% sentences starting with a subordinating conjunction | | subConjCount | 1 | | totalSentences | 73 | | matches | | 0 | "Now they were grey shapes" |
| | ratio | 0.014 | |
| 98.21% | Technical jargon density | Target: ≤6% sentences with technical-jargon patterns | | analyzedSentences | 32 | | technicalSentenceCount | 2 | | matches | | 0 | "She kept the torch ahead of her and felt for the stones with her free hand, fingers splayed, reaching for the cold rough comfort of bark that marked the way out…" | | 1 | "It came from just behind her left shoulder, close enough that she should have felt breath against her neck, and she spun with the torch raised like a weapon and…" |
| |
| 53.57% | Useless dialogue additions | Target: ≤5% dialogue tags with trailing filler fragments | | totalTags | 7 | | uselessAdditionCount | 1 | | matches | | 0 | "she told, as if it could hear, as if it cared" |
| |
| 0.00% | Dialogue tag variety (said vs. fancy) | Target: ≤10% fancy dialogue tags | | totalTags | 6 | | fancyCount | 4 | | fancyTags | | 0 | "she muttered (mutter)" | | 1 | "she whispered (whisper)" | | 2 | "she lied (lie)" | | 3 | "Aurora breathed (breathe)" |
| | dialogueSentences | 13 | | tagDensity | 0.462 | | leniency | 0.923 | | rawRatio | 0.667 | | effectiveRatio | 0.615 | |