| 100.00% | Adverbs in dialogue tags | Target: ≤10% dialogue tags with adverbs | | totalTags | 7 | | adverbTagCount | 2 | | adverbTags | | 0 | "he said finally [finally]" | | 1 | "Silas asked suddenly [suddenly]" |
| | dialogueSentences | 45 | | tagDensity | 0.156 | | leniency | 0.311 | | rawRatio | 0.286 | | effectiveRatio | 0.089 | |
| 90.96% | AI-ism adverb frequency | Target: <2% AI-ism adverbs (58 tracked) | | wordCount | 1106 | | totalAiIsmAdverbs | 2 | | found | | | highlights | | |
| 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) | |
| 45.75% | AI-ism word frequency | Target: <2% AI-ism words (290 tracked) | | wordCount | 1106 | | totalAiIsms | 12 | | found | | | highlights | | 0 | "flickered" | | 1 | "weight" | | 2 | "charm" | | 3 | "trembled" | | 4 | "silence" | | 5 | "unspoken" | | 6 | "traced" | | 7 | "flicked" | | 8 | "stomach" |
| |
| 100.00% | Cliché density | Target: ≤1 cliche(s) per 800-word window | | totalCliches | 1 | | maxInWindow | 1 | | found | | 0 | | label | "weight of words/silence" | | count | 1 |
|
| | highlights | | 0 | "the weight of the silence" |
| |
| 100.00% | Emotion telling (show vs. tell) | Target: ≤3% sentences with emotion telling | | emotionTells | 0 | | narrationSentences | 88 | | matches | (empty) | |
| 100.00% | Filter word density | Target: ≤3% sentences with filter/hedge words | | filterCount | 0 | | hedgeCount | 0 | | narrationSentences | 88 | | filterMatches | (empty) | | hedgeMatches | (empty) | |
| 100.00% | Gibberish response detection | Target: ≤1% gibberish-like sentences (hard fail if a sentence exceeds 800 words) | | analyzedSentences | 123 | | gibberishSentences | 0 | | adjustedGibberishSentences | 0 | | longSentenceCount | 0 | | runOnParagraphCount | 0 | | giantParagraphCount | 0 | | wordSaladCount | 0 | | repetitionLoopCount | 0 | | controlTokenCount | 0 | | maxSentenceWordsSeen | 33 | | ratio | 0 | | matches | (empty) | |
| 100.00% | Markdown formatting overuse | Target: ≤5% words in markdown formatting | | markdownSpans | 3 | | markdownWords | 5 | | totalWords | 1098 | | ratio | 0.005 | | matches | | 0 | "The Raven’s Nest" | | 1 | "Silas" | | 2 | "habits" |
| |
| 100.00% | Missing dialogue indicators (quotation marks) | Target: ≤10% speech attributions without quotation marks | | totalAttributions | 12 | | unquotedAttributions | 0 | | matches | (empty) | |
| 50.00% | Name drop frequency | Target: ≤1.0 per-name mentions per 100 words | | totalMentions | 32 | | wordCount | 863 | | uniqueNames | 6 | | maxNameDensity | 1.62 | | worstName | "Rory" | | maxWindowNameDensity | 3.5 | | worstWindowName | "Rory" | | discoveredNames | | Raven | 1 | | Rory | 14 | | Carter | 1 | | Silas | 13 | | Nest | 2 | | Blackwood | 1 |
| | persons | | 0 | "Raven" | | 1 | "Rory" | | 2 | "Carter" | | 3 | "Silas" | | 4 | "Nest" | | 5 | "Blackwood" |
| | places | (empty) | | globalScore | 0.689 | | windowScore | 0.5 | |
| 100.00% | Narrator intent-glossing | Target: ≤2% narration sentences with intent-glossing patterns | | analyzedSentences | 50 | | glossingSentenceCount | 1 | | matches | | 0 | "something like disappointment" |
| |
| 100.00% | "Not X but Y" pattern overuse | Target: ≤1 "not X but Y" per 1000 words | | totalMatches | 1 | | per1kWords | 0.911 | | wordCount | 1098 | | matches | | |
| 100.00% | Overuse of "that" (subordinate clause padding) | Target: ≤2% sentences with "that" clauses | | thatCount | 1 | | totalSentences | 123 | | matches | | |
| 100.00% | Paragraph length variance | Target: CV ≥0.5 for paragraph word counts | | totalParagraphs | 60 | | mean | 18.3 | | std | 21.69 | | cv | 1.185 | | sampleLengths | | 0 | 98 | | 1 | 89 | | 2 | 6 | | 3 | 3 | | 4 | 39 | | 5 | 13 | | 6 | 13 | | 7 | 80 | | 8 | 5 | | 9 | 37 | | 10 | 6 | | 11 | 5 | | 12 | 4 | | 13 | 85 | | 14 | 14 | | 15 | 4 | | 16 | 14 | | 17 | 48 | | 18 | 14 | | 19 | 5 | | 20 | 28 | | 21 | 5 | | 22 | 6 | | 23 | 30 | | 24 | 10 | | 25 | 13 | | 26 | 8 | | 27 | 2 | | 28 | 27 | | 29 | 17 | | 30 | 2 | | 31 | 36 | | 32 | 5 | | 33 | 1 | | 34 | 20 | | 35 | 14 | | 36 | 7 | | 37 | 10 | | 38 | 10 | | 39 | 8 | | 40 | 30 | | 41 | 8 | | 42 | 3 | | 43 | 34 | | 44 | 7 | | 45 | 5 | | 46 | 3 | | 47 | 16 | | 48 | 32 | | 49 | 11 |
| |
| 97.29% | Passive voice overuse | Target: ≤2% passive sentences | | passiveCount | 2 | | totalSentences | 88 | | matches | | 0 | "being pulled" | | 1 | "being asked" |
| |
| 72.61% | Past progressive (was/were + -ing) overuse | Target: ≤2% past progressive verbs | | pastProgressiveCount | 3 | | totalVerbs | 157 | | matches | | 0 | "was deciding was willing" | | 1 | "was considering" |
| |
| 26.71% | Em-dash & semicolon overuse | Target: ≤2% sentences with em-dashes/semicolons | | emDashCount | 6 | | semicolonCount | 0 | | flaggedSentences | 5 | | totalSentences | 123 | | ratio | 0.041 | | matches | | 0 | "The air inside smelled of stale beer, polished wood, and something faintly metallic—like old coins or blood." | | 1 | "Rory ordered a gin and tonic—neat, no ice—and watched the bartender’s reflection in the mirror behind the shelves." | | 2 | "He wore a dark suit tonight, the kind that looked expensive but had seen better days—like a man who still dressed for a job that no longer existed." | | 3 | "Rory remembered the last time they’d talked like this—years ago, in his flat above the bar, the two of them drunk on cheap wine and bad decisions, laughing about nothing and everything." | | 4 | "His fingers brushed the rim of his glass—whiskey, no ice either." |
| |
| 85.72% | Purple prose (modifier overload) | Target: <4% adverbs, <2% -ly adverbs, no adj stacking | | wordCount | 870 | | adjectiveStacks | 0 | | stackExamples | (empty) | | adverbCount | 49 | | adverbRatio | 0.05632183908045977 | | lyAdverbCount | 8 | | lyAdverbRatio | 0.009195402298850575 | |
| 100.00% | Repeated phrase echo | Target: ≤20% sentences with echoes (window: 2) | | totalSentences | 123 | | echoCount | 0 | | echoWords | (empty) | |
| 100.00% | Sentence length variance | Target: CV ≥0.4 for sentence word counts | | totalSentences | 123 | | mean | 8.93 | | std | 7.86 | | cv | 0.88 | | sampleLengths | | 0 | 31 | | 1 | 17 | | 2 | 22 | | 3 | 28 | | 4 | 21 | | 5 | 20 | | 6 | 18 | | 7 | 10 | | 8 | 20 | | 9 | 6 | | 10 | 3 | | 11 | 3 | | 12 | 4 | | 13 | 12 | | 14 | 20 | | 15 | 8 | | 16 | 5 | | 17 | 10 | | 18 | 3 | | 19 | 22 | | 20 | 21 | | 21 | 28 | | 22 | 9 | | 23 | 4 | | 24 | 1 | | 25 | 2 | | 26 | 19 | | 27 | 16 | | 28 | 6 | | 29 | 3 | | 30 | 2 | | 31 | 3 | | 32 | 1 | | 33 | 7 | | 34 | 32 | | 35 | 20 | | 36 | 26 | | 37 | 14 | | 38 | 4 | | 39 | 11 | | 40 | 3 | | 41 | 3 | | 42 | 4 | | 43 | 25 | | 44 | 8 | | 45 | 1 | | 46 | 7 | | 47 | 7 | | 48 | 7 | | 49 | 2 |
| |
| 49.32% | Sentence opener variety | Target: ≥60% unique sentence openers | | consecutiveRepeats | 6 | | diversityRatio | 0.3252032520325203 | | totalSentences | 123 | | uniqueOpeners | 40 | |
| 100.00% | Adverb-first sentence starts | Target: ≥3% sentences starting with an adverb | | adverbCount | 4 | | totalSentences | 79 | | matches | | 0 | "Then the door swung open" | | 1 | "Just stared at him, her" | | 2 | "Just stared at her, his" | | 3 | "Just watched as she turned," |
| | ratio | 0.051 | |
| 93.42% | Pronoun-first sentence starts | Target: ≤30% sentences starting with a pronoun | | pronounCount | 25 | | totalSentences | 79 | | matches | | 0 | "She hadn’t been here in" | | 1 | "She slid onto a stool" | | 2 | "His back was to her," | | 3 | "She didn’t have to." | | 4 | "She recognised the weight of" | | 5 | "She exhaled through her nose," | | 6 | "He wore a dark suit" | | 7 | "His hazel eyes, sharp as" | | 8 | "he said finally" | | 9 | "She almost laughed." | | 10 | "His mouth twitched." | | 11 | "His fingers brushed the rim" | | 12 | "She didn’t have to." | | 13 | "His voice was mild, but" | | 14 | "His jaw tightened." | | 15 | "She took a sip." | | 16 | "He leaned back, just slightly," | | 17 | "His gaze flicked to the" | | 18 | "She didn’t react." | | 19 | "His expression shut down." |
| | ratio | 0.316 | |
| 35.95% | Subject-first sentence starts | Target: ≤72% sentences starting with a subject | | subjectCount | 67 | | totalSentences | 79 | | matches | | 0 | "The neon green sign of" | | 1 | "The air inside smelled of" | | 2 | "She hadn’t been here in" | | 3 | "She slid onto a stool" | | 4 | "The bar was half-full, the" | | 5 | "Rory ordered a gin and" | | 6 | "His back was to her," | | 7 | "The way he moved, slow" | | 8 | "The air shifted." | | 9 | "Rory didn’t turn." | | 10 | "She didn’t have to." | | 11 | "She recognised the weight of" | | 12 | "A beat of hesitation, then" | | 13 | "a voice said, smooth as" | | 14 | "She exhaled through her nose," | | 15 | "The ice clinked." | | 16 | "Silas Blackwood stood there, broader" | | 17 | "The limp in his left" | | 18 | "He wore a dark suit" | | 19 | "His hazel eyes, sharp as" |
| | ratio | 0.848 | |
| 100.00% | Subordinate conjunction sentence starts | Target: ≥2% sentences starting with a subordinating conjunction | | subConjCount | 2 | | totalSentences | 79 | | matches | | 0 | "Now it just meant he" | | 1 | "Now, he was just a" |
| | ratio | 0.025 | |
| 56.28% | Technical jargon density | Target: ≤6% sentences with technical-jargon patterns | | analyzedSentences | 33 | | technicalSentenceCount | 4 | | matches | | 0 | "The bar was half-full, the usual mix of late-night regulars and the occasional tourist who’d wandered in off the street." | | 1 | "The way he moved, slow and deliberate, like a man who’d spent too many years waiting for something to happen." | | 2 | "The limp in his left leg was more pronounced, a ghost of the old knee injury that had ended his career." | | 3 | "He wore a dark suit tonight, the kind that looked expensive but had seen better days—like a man who still dressed for a job that no longer existed." |
| |
| 53.57% | Useless dialogue additions | Target: ≤5% dialogue tags with trailing filler fragments | | totalTags | 7 | | uselessAdditionCount | 1 | | matches | | |
| 100.00% | Dialogue tag variety (said vs. fancy) | Target: ≤10% fancy dialogue tags | | totalTags | 5 | | fancyCount | 0 | | fancyTags | (empty) | | dialogueSentences | 45 | | tagDensity | 0.111 | | leniency | 0.222 | | rawRatio | 0 | | effectiveRatio | 0 | |