| 100.00% | Adverbs in dialogue tags | Target: ≤10% dialogue tags with adverbs | | totalTags | 24 | | adverbTagCount | 1 | | adverbTags | | 0 | "He laughed again [again]" |
| | dialogueSentences | 50 | | tagDensity | 0.48 | | leniency | 0.96 | | rawRatio | 0.042 | | effectiveRatio | 0.04 | |
| 82.56% | AI-ism adverb frequency | Target: <2% AI-ism adverbs (58 tracked) | | wordCount | 1147 | | totalAiIsmAdverbs | 4 | | found | | | highlights | | 0 | "very" | | 1 | "really" | | 2 | "slowly" |
| |
| 100.00% | AI-ism character names | Target: 0 AI-default names (16 tracked, −20% each) | | codexExemptions | | | found | (empty) | |
| 100.00% | AI-ism location names | Target: 0 AI-default location names (33 tracked, −20% each) | | codexExemptions | (empty) | | found | (empty) | |
| 78.20% | AI-ism word frequency | Target: <2% AI-ism words (290 tracked) | | wordCount | 1147 | | totalAiIsms | 5 | | found | | | highlights | | 0 | "warmth" | | 1 | "fleeting" | | 2 | "weight" | | 3 | "silence" | | 4 | "profound" |
| |
| 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 | 59 | | matches | (empty) | |
| 100.00% | Filter word density | Target: ≤3% sentences with filter/hedge words | | filterCount | 0 | | hedgeCount | 1 | | narrationSentences | 59 | | filterMatches | (empty) | | hedgeMatches | | |
| 100.00% | Gibberish response detection | Target: ≤1% gibberish-like sentences (hard fail if a sentence exceeds 800 words) | | analyzedSentences | 85 | | gibberishSentences | 0 | | adjustedGibberishSentences | 0 | | longSentenceCount | 0 | | runOnParagraphCount | 0 | | giantParagraphCount | 0 | | wordSaladCount | 0 | | repetitionLoopCount | 0 | | controlTokenCount | 0 | | repeatedSegmentCount | 0 | | maxSentenceWordsSeen | 61 | | ratio | 0 | | matches | (empty) | |
| 100.00% | Markdown formatting overuse | Target: ≤5% words in markdown formatting | | markdownSpans | 0 | | markdownWords | 0 | | totalWords | 1140 | | ratio | 0 | | matches | (empty) | |
| 100.00% | Missing dialogue indicators (quotation marks) | Target: ≤10% speech attributions without quotation marks | | totalAttributions | 15 | | unquotedAttributions | 0 | | matches | (empty) | |
| 100.00% | Name drop frequency | Target: ≤1.0 per-name mentions per 100 words | | totalMentions | 15 | | wordCount | 560 | | uniqueNames | 8 | | maxNameDensity | 0.89 | | worstName | "Aurora" | | maxWindowNameDensity | 2 | | worstWindowName | "Aurora" | | discoveredNames | | Aurora | 5 | | Raven | 1 | | Nest | 1 | | Cardiff | 1 | | Severn | 1 | | February | 1 | | Daniel | 2 | | Silas | 3 |
| | persons | | 0 | "Aurora" | | 1 | "Raven" | | 2 | "Daniel" | | 3 | "Silas" |
| | places | | | globalScore | 1 | | windowScore | 1 | |
| 100.00% | Narrator intent-glossing | Target: ≤2% narration sentences with intent-glossing patterns | | analyzedSentences | 41 | | 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 | 1140 | | matches | (empty) | |
| 100.00% | Overuse of "that" (subordinate clause padding) | Target: ≤2% sentences with "that" clauses | | thatCount | 1 | | totalSentences | 85 | | matches | | |
| 100.00% | Paragraph length variance | Target: CV ≥0.5 for paragraph word counts | | totalParagraphs | 41 | | mean | 27.8 | | std | 26.27 | | cv | 0.945 | | sampleLengths | | 0 | 61 | | 1 | 11 | | 2 | 40 | | 3 | 1 | | 4 | 54 | | 5 | 11 | | 6 | 5 | | 7 | 19 | | 8 | 35 | | 9 | 22 | | 10 | 13 | | 11 | 32 | | 12 | 23 | | 13 | 32 | | 14 | 7 | | 15 | 35 | | 16 | 20 | | 17 | 3 | | 18 | 24 | | 19 | 3 | | 20 | 18 | | 21 | 144 | | 22 | 28 | | 23 | 34 | | 24 | 4 | | 25 | 77 | | 26 | 13 | | 27 | 17 | | 28 | 76 | | 29 | 5 | | 30 | 45 | | 31 | 19 | | 32 | 31 | | 33 | 7 | | 34 | 36 | | 35 | 49 | | 36 | 30 | | 37 | 31 | | 38 | 8 | | 39 | 4 | | 40 | 13 |
| |
| 100.00% | Passive voice overuse | Target: ≤2% passive sentences | | passiveCount | 0 | | totalSentences | 59 | | matches | (empty) | |
| 100.00% | Past progressive (was/were + -ing) overuse | Target: ≤2% past progressive verbs | | pastProgressiveCount | 0 | | totalVerbs | 99 | | matches | (empty) | |
| 0.00% | Em-dash & semicolon overuse | Target: ≤2% sentences with em-dashes/semicolons | | emDashCount | 5 | | semicolonCount | 1 | | flaggedSentences | 5 | | totalSentences | 85 | | ratio | 0.059 | | matches | | 0 | "She'd meant to drop the last delivery and go home—home being the flat above this very bar—but the warmth pulled her in, the low murmur of voices, the clink of glass." | | 1 | "Silas, polishing a glass behind the bar, caught her eye and lifted one brow—a question." | | 2 | "A couple by the window laughed at something; the sound seemed to come from very far away." | | 3 | "The honest thing was that she didn't know the moment either—only that it had passed, for both of them, somewhere in the dark stretch of years between that flat and this bar, and that neither of them had marked it as it went." | | 4 | "He looked at her, and for a moment the ruin lifted and she saw him as he'd been—the boy on the steps, certain the world was a thing you could fix." |
| |
| 100.00% | Purple prose (modifier overload) | Target: <4% adverbs, <2% -ly adverbs, no adj stacking | | wordCount | 566 | | adjectiveStacks | 0 | | stackExamples | (empty) | | adverbCount | 17 | | adverbRatio | 0.030035335689045935 | | lyAdverbCount | 4 | | lyAdverbRatio | 0.007067137809187279 | |
| 100.00% | Repeated phrase echo | Target: ≤20% sentences with echoes (window: 2) | | totalSentences | 85 | | echoCount | 0 | | echoWords | (empty) | |
| 100.00% | Sentence length variance | Target: CV ≥0.4 for sentence word counts | | totalSentences | 85 | | mean | 13.41 | | std | 11.46 | | cv | 0.854 | | sampleLengths | | 0 | 22 | | 1 | 8 | | 2 | 31 | | 3 | 11 | | 4 | 22 | | 5 | 4 | | 6 | 14 | | 7 | 1 | | 8 | 3 | | 9 | 14 | | 10 | 21 | | 11 | 6 | | 12 | 10 | | 13 | 8 | | 14 | 3 | | 15 | 5 | | 16 | 11 | | 17 | 8 | | 18 | 4 | | 19 | 15 | | 20 | 8 | | 21 | 2 | | 22 | 6 | | 23 | 7 | | 24 | 15 | | 25 | 9 | | 26 | 4 | | 27 | 9 | | 28 | 13 | | 29 | 10 | | 30 | 14 | | 31 | 9 | | 32 | 9 | | 33 | 23 | | 34 | 7 | | 35 | 5 | | 36 | 30 | | 37 | 13 | | 38 | 7 | | 39 | 3 | | 40 | 7 | | 41 | 17 | | 42 | 3 | | 43 | 18 | | 44 | 18 | | 45 | 28 | | 46 | 61 | | 47 | 37 | | 48 | 5 | | 49 | 18 |
| |
| 69.02% | Sentence opener variety | Target: ≥60% unique sentence openers | | consecutiveRepeats | 8 | | diversityRatio | 0.47058823529411764 | | totalSentences | 85 | | uniqueOpeners | 40 | |
| 100.00% | Adverb-first sentence starts | Target: ≥3% sentences starting with an adverb | | adverbCount | 2 | | totalSentences | 51 | | matches | | 0 | "Pale grey, like the sky" | | 1 | "Maybe she had." |
| | ratio | 0.039 | |
| 0.00% | Pronoun-first sentence starts | Target: ≤30% sentences starting with a pronoun | | pronounCount | 30 | | totalSentences | 51 | | matches | | 0 | "She'd meant to drop the" | | 1 | "She didn't see him until" | | 2 | "He sat at the far" | | 3 | "She knew that slope." | | 4 | "She'd memorised it once, across" | | 5 | "He set the glass down" | | 6 | "She stopped herself" | | 7 | "He laughed, and it cracked" | | 8 | "She crossed the room." | | 9 | "She gave the smallest shake" | | 10 | "He moved off down the" | | 11 | "He turned the tumbler in" | | 12 | "He looked at her properly" | | 13 | "She signalled to Silas for" | | 14 | "He frowned, dredging" | | 15 | "He was quiet for a" | | 16 | "He rubbed his face with" | | 17 | "He lifted the glass, didn't" | | 18 | "He laughed again, and it" | | 19 | "She knew better than that," |
| | ratio | 0.588 | |
| 9.02% | Subject-first sentence starts | Target: ≤72% sentences starting with a subject | | subjectCount | 46 | | totalSentences | 51 | | matches | | 0 | "The green neon buzzed overhead," | | 1 | "Rain dripped from the hem" | | 2 | "She'd meant to drop the" | | 3 | "She didn't see him until" | | 4 | "He sat at the far" | | 5 | "She knew that slope." | | 6 | "She'd memorised it once, across" | | 7 | "The man turned." | | 8 | "The face that found hers" | | 9 | "He set the glass down" | | 10 | "She stopped herself" | | 11 | "He laughed, and it cracked" | | 12 | "She crossed the room." | | 13 | "Silas, polishing a glass behind" | | 14 | "She gave the smallest shake" | | 15 | "He moved off down the" | | 16 | "Aurora pulled out the stool" | | 17 | "He turned the tumbler in" | | 18 | "He looked at her properly" | | 19 | "She signalled to Silas for" |
| | ratio | 0.902 | |
| 0.00% | Subordinate conjunction sentence starts | Target: ≥2% sentences starting with a subordinating conjunction | | subConjCount | 0 | | totalSentences | 51 | | matches | (empty) | | ratio | 0 | |
| 100.00% | Technical jargon density | Target: ≤6% sentences with technical-jargon patterns | | analyzedSentences | 16 | | technicalSentenceCount | 0 | | matches | (empty) | |
| 100.00% | Useless dialogue additions | Target: ≤5% dialogue tags with trailing filler fragments | | totalTags | 24 | | uselessAdditionCount | 1 | | matches | | 0 | "He turned, and his eyes were wet, though no tears fell" |
| |
| 90.00% | Dialogue tag variety (said vs. fancy) | Target: ≤10% fancy dialogue tags | | totalTags | 8 | | fancyCount | 3 | | fancyTags | | 0 | "He laughed (laugh)" | | 1 | "He laughed again (laugh)" | | 2 | "he murmured (murmur)" |
| | dialogueSentences | 50 | | tagDensity | 0.16 | | leniency | 0.32 | | rawRatio | 0.375 | | effectiveRatio | 0.12 | |