| 100.00% | Adverbs in dialogue tags | Target: ≤10% dialogue tags with adverbs | | totalTags | 10 | | adverbTagCount | 1 | | adverbTags | | 0 | "Eva turned away [away]" |
| | dialogueSentences | 69 | | tagDensity | 0.145 | | leniency | 0.29 | | rawRatio | 0.1 | | effectiveRatio | 0.029 | |
| 95.96% | AI-ism adverb frequency | Target: <2% AI-ism adverbs (58 tracked) | | wordCount | 1238 | | totalAiIsmAdverbs | 1 | | 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) | |
| 23.26% | AI-ism word frequency | Target: <2% AI-ism words (290 tracked) | | wordCount | 1238 | | totalAiIsms | 19 | | found | | | highlights | | 0 | "silence" | | 1 | "unreadable" | | 2 | "weight" | | 3 | "flickered" | | 4 | "unspoken" | | 5 | "scanned" | | 6 | "wavered" | | 7 | "pulse" | | 8 | "electric" | | 9 | "charged" | | 10 | "could feel" | | 11 | "porcelain" | | 12 | "whisper" | | 13 | "echo" |
| |
| 100.00% | Cliché density | Target: ≤1 cliche(s) per 800-word window | | totalCliches | 1 | | maxInWindow | 1 | | found | | 0 | | label | "eyes widened/narrowed" | | count | 1 |
|
| | highlights | | |
| 100.00% | Emotion telling (show vs. tell) | Target: ≤3% sentences with emotion telling | | emotionTells | 2 | | narrationSentences | 106 | | matches | | 0 | "was bitter" | | 1 | "was angry" |
| |
| 100.00% | Filter word density | Target: ≤3% sentences with filter/hedge words | | filterCount | 0 | | hedgeCount | 1 | | narrationSentences | 106 | | filterMatches | (empty) | | hedgeMatches | | |
| 100.00% | Gibberish response detection | Target: ≤1% gibberish-like sentences (hard fail if a sentence exceeds 800 words) | | analyzedSentences | 159 | | 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 | 8 | | markdownWords | 26 | | totalWords | 1228 | | ratio | 0.021 | | matches | | 0 | "The same. Exactly the same." | | 1 | "spoken" | | 2 | "I missed you. I was wrong. I shouldn’t have left like that." | | 3 | "Until you did." | | 4 | "someone" | | 5 | "felt guilty" | | 6 | "now" | | 7 | "choice" |
| |
| 100.00% | Missing dialogue indicators (quotation marks) | Target: ≤10% speech attributions without quotation marks | | totalAttributions | 10 | | unquotedAttributions | 0 | | matches | (empty) | |
| 0.00% | Name drop frequency | Target: ≤1.0 per-name mentions per 100 words | | totalMentions | 80 | | wordCount | 925 | | uniqueNames | 9 | | maxNameDensity | 4.32 | | worstName | "Eva" | | maxWindowNameDensity | 6.5 | | worstWindowName | "Eva" | | discoveredNames | | Eva | 40 | | Aurora | 33 | | Exactly | 1 | | Books | 1 | | Lucien | 1 | | Tube | 1 | | Golden | 1 | | Empress | 1 | | Yu-Fei | 1 |
| | persons | | 0 | "Eva" | | 1 | "Aurora" | | 2 | "Books" | | 3 | "Lucien" |
| | places | | | globalScore | 0 | | windowScore | 0 | |
| 100.00% | Narrator intent-glossing | Target: ≤2% narration sentences with intent-glossing patterns | | analyzedSentences | 62 | | glossingSentenceCount | 1 | | matches | | |
| 100.00% | "Not X but Y" pattern overuse | Target: ≤1 "not X but Y" per 1000 words | | totalMatches | 0 | | per1kWords | 0 | | wordCount | 1228 | | matches | (empty) | |
| 100.00% | Overuse of "that" (subordinate clause padding) | Target: ≤2% sentences with "that" clauses | | thatCount | 0 | | totalSentences | 159 | | matches | (empty) | |
| 100.00% | Paragraph length variance | Target: CV ≥0.5 for paragraph word counts | | totalParagraphs | 83 | | mean | 14.8 | | std | 10.94 | | cv | 0.74 | | sampleLengths | | 0 | 31 | | 1 | 43 | | 2 | 17 | | 3 | 17 | | 4 | 16 | | 5 | 42 | | 6 | 10 | | 7 | 24 | | 8 | 30 | | 9 | 20 | | 10 | 16 | | 11 | 17 | | 12 | 1 | | 13 | 1 | | 14 | 9 | | 15 | 52 | | 16 | 7 | | 17 | 38 | | 18 | 24 | | 19 | 10 | | 20 | 6 | | 21 | 17 | | 22 | 13 | | 23 | 10 | | 24 | 6 | | 25 | 9 | | 26 | 10 | | 27 | 4 | | 28 | 27 | | 29 | 9 | | 30 | 21 | | 31 | 7 | | 32 | 9 | | 33 | 11 | | 34 | 29 | | 35 | 1 | | 36 | 7 | | 37 | 1 | | 38 | 9 | | 39 | 14 | | 40 | 21 | | 41 | 14 | | 42 | 29 | | 43 | 4 | | 44 | 9 | | 45 | 5 | | 46 | 32 | | 47 | 15 | | 48 | 2 | | 49 | 17 |
| |
| 98.64% | Passive voice overuse | Target: ≤2% passive sentences | | passiveCount | 2 | | totalSentences | 106 | | matches | | 0 | "was scrawled" | | 1 | "was gone" |
| |
| 83.04% | Past progressive (was/were + -ing) overuse | Target: ≤2% past progressive verbs | | pastProgressiveCount | 3 | | totalVerbs | 171 | | matches | | 0 | "was fighting" | | 1 | "was letting" | | 2 | "wasn’t running" |
| |
| 70.98% | Em-dash & semicolon overuse | Target: ≤2% sentences with em-dashes/semicolons | | emDashCount | 5 | | semicolonCount | 0 | | flaggedSentences | 4 | | totalSentences | 159 | | ratio | 0.025 | | matches | | 0 | "The door swung open just wide enough to reveal a sliver of Eva’s face—eyes narrowed, hair piled into a messy bun—before it stopped dead." | | 1 | "The flat smelled the same—incense and old paper, with the faint tang of curry from the restaurant below." | | 2 | "Aurora turned, fingers brushing the spine of a book on demonic sigils—Lucien’s handiwork, probably." | | 3 | "Aurora could feel the heat of her, the way Eva’s breath came faster when she was angry, the way her fingers flexed like she was fighting the urge to reach out—or push away." |
| |
| 82.54% | Purple prose (modifier overload) | Target: <4% adverbs, <2% -ly adverbs, no adj stacking | | wordCount | 934 | | adjectiveStacks | 0 | | stackExamples | (empty) | | adverbCount | 56 | | adverbRatio | 0.059957173447537475 | | lyAdverbCount | 5 | | lyAdverbRatio | 0.0053533190578158455 | |
| 100.00% | Repeated phrase echo | Target: ≤20% sentences with echoes (window: 2) | | totalSentences | 159 | | echoCount | 0 | | echoWords | (empty) | |
| 100.00% | Sentence length variance | Target: CV ≥0.4 for sentence word counts | | totalSentences | 159 | | mean | 7.72 | | std | 6.02 | | cv | 0.779 | | sampleLengths | | 0 | 4 | | 1 | 3 | | 2 | 24 | | 3 | 15 | | 4 | 28 | | 5 | 12 | | 6 | 5 | | 7 | 11 | | 8 | 6 | | 9 | 2 | | 10 | 8 | | 11 | 6 | | 12 | 11 | | 13 | 18 | | 14 | 13 | | 15 | 6 | | 16 | 4 | | 17 | 15 | | 18 | 5 | | 19 | 4 | | 20 | 16 | | 21 | 14 | | 22 | 14 | | 23 | 6 | | 24 | 9 | | 25 | 7 | | 26 | 14 | | 27 | 3 | | 28 | 1 | | 29 | 1 | | 30 | 5 | | 31 | 4 | | 32 | 15 | | 33 | 31 | | 34 | 6 | | 35 | 6 | | 36 | 1 | | 37 | 6 | | 38 | 20 | | 39 | 3 | | 40 | 3 | | 41 | 6 | | 42 | 24 | | 43 | 10 | | 44 | 4 | | 45 | 2 | | 46 | 8 | | 47 | 9 | | 48 | 4 | | 49 | 9 |
| |
| 51.15% | Sentence opener variety | Target: ≥60% unique sentence openers | | consecutiveRepeats | 7 | | diversityRatio | 0.3333333333333333 | | totalSentences | 159 | | uniqueOpeners | 53 | |
| 100.00% | Adverb-first sentence starts | Target: ≥3% sentences starting with an adverb | | adverbCount | 9 | | totalSentences | 99 | | matches | | 0 | "Then Eva’s mouth twitched, not" | | 1 | "Exactly the same.*" | | 2 | "Instead, she reached into her" | | 3 | "Even the hum of the" | | 4 | "Then she shut it down," | | 5 | "Then she turned away, rubbing" | | 6 | "Then Eva exhaled, long and" | | 7 | "Then the moment broke." | | 8 | "Then she was gone, the" |
| | ratio | 0.091 | |
| 100.00% | Pronoun-first sentence starts | Target: ≤30% sentences starting with a pronoun | | pronounCount | 9 | | totalSentences | 99 | | matches | | 0 | "She’d rehearsed this a dozen" | | 1 | "*I missed you." | | 2 | "I was wrong." | | 3 | "I shouldn’t have left like" | | 4 | "She scanned it, then tossed" | | 5 | "She steadied them, her pulse" | | 6 | "She stopped herself" | | 7 | "Her fingers curled into Aurora’s" | | 8 | "She wasn’t running anymore." |
| | ratio | 0.091 | |
| 25.66% | Subject-first sentence starts | Target: ≤72% sentences starting with a subject | | subjectCount | 86 | | totalSentences | 99 | | matches | | 0 | "The third deadbolt clicked." | | 1 | "A chain rattled." | | 2 | "The door swung open just" | | 3 | "Aurora froze, fingers still curled" | | 4 | "The air between them thickened," | | 5 | "Eva exhaled through her nose," | | 6 | "Aurora lifted the bottle a" | | 7 | "The door opened wider, just" | | 8 | "The flat smelled the same—incense" | | 9 | "Ptolemy, the tabby, wound around" | | 10 | "Eva didn’t move from the" | | 11 | "Aurora set the wine on" | | 12 | "Books teetered in stacks along" | | 13 | "A single lamp cast long" | | 14 | "Eva finally stepped back, shutting" | | 15 | "The nickname hit like a" | | 16 | "Aurora turned, fingers brushing the" | | 17 | "Eva’s laugh was dry, humourless." | | 18 | "Aurora faced her fully then," | | 19 | "Eva’s dark eyes flickered over" |
| | ratio | 0.869 | |
| 0.00% | Subordinate conjunction sentence starts | Target: ≥2% sentences starting with a subordinating conjunction | | subConjCount | 0 | | totalSentences | 99 | | matches | (empty) | | ratio | 0 | |
| 100.00% | Technical jargon density | Target: ≤6% sentences with technical-jargon patterns | | analyzedSentences | 37 | | technicalSentenceCount | 1 | | matches | | 0 | "Eva stared at her for a long moment, her chest rising and falling too fast." |
| |
| 25.00% | Useless dialogue additions | Target: ≤5% dialogue tags with trailing filler fragments | | totalTags | 10 | | uselessAdditionCount | 2 | | matches | | 0 | "Eva faced, eyes burning" | | 1 | "Eva turned away, her back rigid" |
| |
| 100.00% | Dialogue tag variety (said vs. fancy) | Target: ≤10% fancy dialogue tags | | totalTags | 2 | | fancyCount | 1 | | fancyTags | | 0 | "Aurora admitted (admit)" |
| | dialogueSentences | 69 | | tagDensity | 0.029 | | leniency | 0.058 | | rawRatio | 0.5 | | effectiveRatio | 0.029 | |