| 100.00% | Adverbs in dialogue tags | Target: ≤10% dialogue tags with adverbs | | totalTags | 14 | | adverbTagCount | 0 | | adverbTags | (empty) | | dialogueSentences | 46 | | tagDensity | 0.304 | | leniency | 0.609 | | rawRatio | 0 | | effectiveRatio | 0 | |
| 81.29% | AI-ism adverb frequency | Target: <2% AI-ism adverbs (58 tracked) | | wordCount | 1336 | | totalAiIsmAdverbs | 5 | | found | | | highlights | | 0 | "slowly" | | 1 | "lightly" | | 2 | "really" | | 3 | "carefully" |
| |
| 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) | |
| 66.32% | AI-ism word frequency | Target: <2% AI-ism words (290 tracked) | | wordCount | 1336 | | totalAiIsms | 9 | | found | | | highlights | | 0 | "weight" | | 1 | "dancing" | | 2 | "scanning" | | 3 | "crystal" | | 4 | "almost alive" | | 5 | "silence" | | 6 | "unspoken" |
| |
| 66.67% | Cliché density | Target: ≤1 cliche(s) per 800-word window | | totalCliches | 2 | | maxInWindow | 2 | | found | | 0 | | label | "let out a breath" | | count | 1 |
| | 1 | | label | "hung in the air" | | count | 1 |
|
| | highlights | | 0 | "let out a breath" | | 1 | "hung in the air" |
| |
| 100.00% | Emotion telling (show vs. tell) | Target: ≤3% sentences with emotion telling | | emotionTells | 0 | | narrationSentences | 99 | | matches | (empty) | |
| 99.57% | Filter word density | Target: ≤3% sentences with filter/hedge words | | filterCount | 1 | | hedgeCount | 2 | | narrationSentences | 99 | | filterMatches | | | hedgeMatches | | |
| 100.00% | Gibberish response detection | Target: ≤1% gibberish-like sentences (hard fail if a sentence exceeds 800 words) | | analyzedSentences | 130 | | gibberishSentences | 0 | | adjustedGibberishSentences | 0 | | longSentenceCount | 0 | | runOnParagraphCount | 0 | | giantParagraphCount | 0 | | wordSaladCount | 0 | | repetitionLoopCount | 0 | | controlTokenCount | 0 | | repeatedSegmentCount | 0 | | maxSentenceWordsSeen | 58 | | ratio | 0 | | matches | (empty) | |
| 100.00% | Markdown formatting overuse | Target: ≤5% words in markdown formatting | | markdownSpans | 0 | | markdownWords | 0 | | totalWords | 1327 | | ratio | 0 | | matches | (empty) | |
| 100.00% | Missing dialogue indicators (quotation marks) | Target: ≤10% speech attributions without quotation marks | | totalAttributions | 31 | | unquotedAttributions | 0 | | matches | (empty) | |
| 100.00% | Name drop frequency | Target: ≤1.0 per-name mentions per 100 words | | totalMentions | 29 | | wordCount | 969 | | uniqueNames | 14 | | maxNameDensity | 0.62 | | worstName | "Silas" | | maxWindowNameDensity | 2 | | worstWindowName | "Tom" | | discoveredNames | | Soho | 3 | | Rory | 4 | | Raven | 1 | | Nest | 1 | | Tuesday | 1 | | Silas | 6 | | Great | 1 | | Hall | 1 | | Cardiff | 1 | | Evan | 1 | | Eva | 1 | | Tom | 6 | | Chinese | 1 | | London | 1 |
| | persons | | 0 | "Rory" | | 1 | "Raven" | | 2 | "Silas" | | 3 | "Evan" | | 4 | "Eva" | | 5 | "Tom" |
| | places | | 0 | "Soho" | | 1 | "Cardiff" | | 2 | "London" |
| | globalScore | 1 | | windowScore | 1 | |
| 100.00% | Narrator intent-glossing | Target: ≤2% narration sentences with intent-glossing patterns | | analyzedSentences | 59 | | glossingSentenceCount | 1 | | matches | | 0 | "as if asking permission" |
| |
| 100.00% | "Not X but Y" pattern overuse | Target: ≤1 "not X but Y" per 1000 words | | totalMatches | 1 | | per1kWords | 0.754 | | wordCount | 1327 | | matches | | |
| 100.00% | Overuse of "that" (subordinate clause padding) | Target: ≤2% sentences with "that" clauses | | thatCount | 2 | | totalSentences | 130 | | matches | | 0 | "watched that walk" | | 1 | "learned that survival" |
| |
| 100.00% | Paragraph length variance | Target: CV ≥0.5 for paragraph word counts | | totalParagraphs | 62 | | mean | 21.4 | | std | 18.56 | | cv | 0.867 | | sampleLengths | | 0 | 63 | | 1 | 34 | | 2 | 44 | | 3 | 7 | | 4 | 40 | | 5 | 15 | | 6 | 7 | | 7 | 1 | | 8 | 6 | | 9 | 56 | | 10 | 11 | | 11 | 4 | | 12 | 31 | | 13 | 5 | | 14 | 6 | | 15 | 36 | | 16 | 42 | | 17 | 9 | | 18 | 36 | | 19 | 4 | | 20 | 34 | | 21 | 3 | | 22 | 33 | | 23 | 4 | | 24 | 6 | | 25 | 36 | | 26 | 8 | | 27 | 53 | | 28 | 32 | | 29 | 8 | | 30 | 6 | | 31 | 30 | | 32 | 4 | | 33 | 5 | | 34 | 55 | | 35 | 5 | | 36 | 8 | | 37 | 8 | | 38 | 21 | | 39 | 32 | | 40 | 41 | | 41 | 48 | | 42 | 28 | | 43 | 3 | | 44 | 2 | | 45 | 34 | | 46 | 65 | | 47 | 17 | | 48 | 8 | | 49 | 3 |
| |
| 98.17% | Passive voice overuse | Target: ≤2% passive sentences | | passiveCount | 2 | | totalSentences | 99 | | matches | | 0 | "was pulled" | | 1 | "being asked" |
| |
| 89.50% | Past progressive (was/were + -ing) overuse | Target: ≤2% past progressive verbs | | pastProgressiveCount | 3 | | totalVerbs | 181 | | matches | | 0 | "was running" | | 1 | "was testing" | | 2 | "was coming" |
| |
| 0.00% | Em-dash & semicolon overuse | Target: ≤2% sentences with em-dashes/semicolons | | emDashCount | 8 | | semicolonCount | 0 | | flaggedSentences | 8 | | totalSentences | 130 | | ratio | 0.062 | | matches | | 0 | "The bar was quiet for a Tuesday—just the low murmur of a couple in the corner and the clink of Silas polishing glasses behind the mahogany." | | 1 | "That was the thing about Silas—he never asked what she was running from." | | 2 | "He'd filled out since university—shoulders broader, jaw sharper." | | 3 | "Wiped his mouth with the back of his hand—an old habit she remembered from nights spent cramming in the library, surviving on coffee and whatever biscuits they could nick from the common room." | | 4 | "The light in them was different—not gone, but banked." | | 5 | "The bitter was good—Silas had a knack for it, for the small alchemies that made a place feel like home." | | 6 | "She thought about the woman who delivered Chinese food to strangers, who lived above a bar in Soho, who'd learned that survival wasn't about winning—it was about knowing when to walk away." | | 7 | "They talked about everything except what was really there—the space between who they'd been and who they'd become, the weight of time settling into their bones." |
| |
| 100.00% | Purple prose (modifier overload) | Target: <4% adverbs, <2% -ly adverbs, no adj stacking | | wordCount | 977 | | adjectiveStacks | 0 | | stackExamples | (empty) | | adverbCount | 20 | | adverbRatio | 0.02047082906857728 | | lyAdverbCount | 6 | | lyAdverbRatio | 0.006141248720573183 | |
| 100.00% | Repeated phrase echo | Target: ≤20% sentences with echoes (window: 2) | | totalSentences | 130 | | echoCount | 0 | | echoWords | (empty) | |
| 100.00% | Sentence length variance | Target: CV ≥0.4 for sentence word counts | | totalSentences | 130 | | mean | 10.21 | | std | 9.39 | | cv | 0.919 | | sampleLengths | | 0 | 21 | | 1 | 16 | | 2 | 26 | | 3 | 8 | | 4 | 10 | | 5 | 13 | | 6 | 3 | | 7 | 16 | | 8 | 17 | | 9 | 11 | | 10 | 7 | | 11 | 7 | | 12 | 20 | | 13 | 13 | | 14 | 10 | | 15 | 5 | | 16 | 7 | | 17 | 1 | | 18 | 5 | | 19 | 1 | | 20 | 12 | | 21 | 6 | | 22 | 8 | | 23 | 8 | | 24 | 22 | | 25 | 4 | | 26 | 7 | | 27 | 4 | | 28 | 2 | | 29 | 5 | | 30 | 24 | | 31 | 3 | | 32 | 2 | | 33 | 6 | | 34 | 12 | | 35 | 4 | | 36 | 20 | | 37 | 5 | | 38 | 4 | | 39 | 33 | | 40 | 6 | | 41 | 3 | | 42 | 3 | | 43 | 2 | | 44 | 25 | | 45 | 6 | | 46 | 4 | | 47 | 25 | | 48 | 6 | | 49 | 3 |
| |
| 45.64% | Sentence opener variety | Target: ≥60% unique sentence openers | | consecutiveRepeats | 9 | | diversityRatio | 0.3153846153846154 | | totalSentences | 130 | | uniqueOpeners | 41 | |
| 0.00% | Adverb-first sentence starts | Target: ≥3% sentences starting with an adverb | | adverbCount | 0 | | totalSentences | 81 | | matches | (empty) | | ratio | 0 | |
| 17.53% | Pronoun-first sentence starts | Target: ≤30% sentences starting with a pronoun | | pronounCount | 41 | | totalSentences | 81 | | matches | | 0 | "She shook water from her" | | 1 | "She slipped onto a stool," | | 2 | "He slid a pint of" | | 3 | "He just poured." | | 4 | "He folded it, tucked it" | | 5 | "It was the walk she" | | 6 | "She'd watched that walk cross" | | 7 | "He looked up, scanning the" | | 8 | "His eyes landed on her." | | 9 | "She set her glass down." | | 10 | "He crossed the room like" | | 11 | "He'd filled out since university—shoulders" | | 12 | "His hair was shorter, greying" | | 13 | "He wore a suit that" | | 14 | "It was the wrong answer." | | 15 | "She saw him recalculate, slotting" | | 16 | "He pulled out the stool" | | 17 | "She didn't stop him." | | 18 | "She did know." | | 19 | "He said it lightly, but" |
| | ratio | 0.506 | |
| 15.56% | Subject-first sentence starts | Target: ≤72% sentences starting with a subject | | subjectCount | 72 | | totalSentences | 81 | | matches | | 0 | "The rain had slicked Soho's" | | 1 | "She shook water from her" | | 2 | "The bar was quiet for" | | 3 | "She slipped onto a stool," | | 4 | "He slid a pint of" | | 5 | "That was the thing about" | | 6 | "He just poured." | | 7 | "The door swung open again," | | 8 | "A man stood silhouetted against" | | 9 | "He folded it, tucked it" | | 10 | "Rory's hand stopped halfway to" | | 11 | "It was the walk she" | | 12 | "That slight roll in the" | | 13 | "She'd watched that walk cross" | | 14 | "He looked up, scanning the" | | 15 | "His eyes landed on her." | | 16 | "The pause lasted a heartbeat" | | 17 | "She set her glass down." | | 18 | "He crossed the room like" | | 19 | "He'd filled out since university—shoulders" |
| | ratio | 0.889 | |
| 0.00% | Subordinate conjunction sentence starts | Target: ≥2% sentences starting with a subordinating conjunction | | subConjCount | 0 | | totalSentences | 81 | | matches | (empty) | | ratio | 0 | |
| 46.33% | Technical jargon density | Target: ≤6% sentences with technical-jargon patterns | | analyzedSentences | 37 | | technicalSentenceCount | 5 | | matches | | 0 | "A man stood silhouetted against the streetlight, shaking an umbrella that had clearly given up the fight." | | 1 | "She saw him recalculate, slotting this version of her into the memory of the girl who'd argued constitutional law with professors twice her age." | | 2 | "This wasn't the boy who'd helped her plagiarise a philosophy essay at three in the morning, who'd laughed so hard at a terrible film he'd fallen out of his seat…" | | 3 | "She thought about the girl who'd argued constitutional law, who'd believed the world could be fixed with the right arguments and enough coffee." | | 4 | "She thought about the woman who delivered Chinese food to strangers, who lived above a bar in Soho, who'd learned that survival wasn't about winning—it was abou…" |
| |
| 89.29% | Useless dialogue additions | Target: ≤5% dialogue tags with trailing filler fragments | | totalTags | 14 | | uselessAdditionCount | 1 | | matches | | 0 | "He said, but the words landed wrong, settled in the space between them like something that couldn't be taken back" |
| |
| 100.00% | Dialogue tag variety (said vs. fancy) | Target: ≤10% fancy dialogue tags | | totalTags | 14 | | fancyCount | 1 | | fancyTags | | 0 | "he continued (continue)" |
| | dialogueSentences | 46 | | tagDensity | 0.304 | | leniency | 0.609 | | rawRatio | 0.071 | | effectiveRatio | 0.043 | |