| 100.00% | Adverbs in dialogue tags | Target: ≤10% dialogue tags with adverbs | | totalTags | 21 | | adverbTagCount | 0 | | adverbTags | (empty) | | dialogueSentences | 89 | | tagDensity | 0.236 | | leniency | 0.472 | | rawRatio | 0 | | effectiveRatio | 0 | |
| 100.00% | AI-ism adverb frequency | Target: <2% AI-ism adverbs (58 tracked) | | wordCount | 1343 | | 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) | |
| 40.43% | AI-ism word frequency | Target: <2% AI-ism words (290 tracked) | | wordCount | 1343 | | totalAiIsms | 16 | | found | | | highlights | | 0 | "flicked" | | 1 | "wavered" | | 2 | "weight" | | 3 | "unspoken" | | 4 | "traced" | | 5 | "pulse" | | 6 | "silence" | | 7 | "charged" | | 8 | "footsteps" | | 9 | "stomach" | | 10 | "familiar" | | 11 | "whisper" |
| |
| 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 | 0 | | narrationSentences | 116 | | matches | (empty) | |
| 100.00% | Filter word density | Target: ≤3% sentences with filter/hedge words | | filterCount | 0 | | hedgeCount | 0 | | narrationSentences | 116 | | filterMatches | (empty) | | hedgeMatches | (empty) | |
| 100.00% | Gibberish response detection | Target: ≤1% gibberish-like sentences (hard fail if a sentence exceeds 800 words) | | analyzedSentences | 183 | | gibberishSentences | 0 | | adjustedGibberishSentences | 0 | | longSentenceCount | 0 | | runOnParagraphCount | 0 | | giantParagraphCount | 0 | | wordSaladCount | 0 | | repetitionLoopCount | 0 | | controlTokenCount | 0 | | maxSentenceWordsSeen | 39 | | ratio | 0 | | matches | (empty) | |
| 100.00% | Markdown formatting overuse | Target: ≤5% words in markdown formatting | | markdownSpans | 5 | | markdownWords | 5 | | totalWords | 1329 | | ratio | 0.004 | | matches | | 0 | "this" | | 1 | "thud" | | 2 | "want" | | 3 | "insane" | | 4 | "skin" |
| |
| 100.00% | Missing dialogue indicators (quotation marks) | Target: ≤10% speech attributions without quotation marks | | totalAttributions | 14 | | unquotedAttributions | 0 | | matches | (empty) | |
| 16.67% | Name drop frequency | Target: ≤1.0 per-name mentions per 100 words | | totalMentions | 51 | | wordCount | 989 | | uniqueNames | 4 | | maxNameDensity | 2.22 | | worstName | "Lucien" | | maxWindowNameDensity | 4.5 | | worstWindowName | "Lucien" | | discoveredNames | | | persons | | 0 | "Eva" | | 1 | "Rory" | | 2 | "Lucien" | | 3 | "Silas" |
| | places | (empty) | | globalScore | 0.388 | | windowScore | 0.167 | |
| 100.00% | Narrator intent-glossing | Target: ≤2% narration sentences with intent-glossing patterns | | analyzedSentences | 60 | | glossingSentenceCount | 0 | | matches | (empty) | |
| 49.51% | "Not X but Y" pattern overuse | Target: ≤1 "not X but Y" per 1000 words | | totalMatches | 2 | | per1kWords | 1.505 | | wordCount | 1329 | | matches | | 0 | "not for a weapon, not yet, but for the silver flask tucked in his inner pocket" | | 1 | "not yet, but for the silver flask tucked in his inner pocket" |
| |
| 100.00% | Overuse of "that" (subordinate clause padding) | Target: ≤2% sentences with "that" clauses | | thatCount | 0 | | totalSentences | 183 | | matches | (empty) | |
| 100.00% | Paragraph length variance | Target: CV ≥0.5 for paragraph word counts | | totalParagraphs | 101 | | mean | 13.16 | | std | 13.3 | | cv | 1.011 | | sampleLengths | | 0 | 63 | | 1 | 25 | | 2 | 11 | | 3 | 44 | | 4 | 6 | | 5 | 43 | | 6 | 3 | | 7 | 37 | | 8 | 6 | | 9 | 17 | | 10 | 9 | | 11 | 19 | | 12 | 8 | | 13 | 51 | | 14 | 7 | | 15 | 9 | | 16 | 13 | | 17 | 5 | | 18 | 30 | | 19 | 6 | | 20 | 21 | | 21 | 16 | | 22 | 20 | | 23 | 2 | | 24 | 50 | | 25 | 11 | | 26 | 8 | | 27 | 2 | | 28 | 2 | | 29 | 41 | | 30 | 5 | | 31 | 2 | | 32 | 21 | | 33 | 10 | | 34 | 11 | | 35 | 14 | | 36 | 5 | | 37 | 1 | | 38 | 5 | | 39 | 61 | | 40 | 5 | | 41 | 2 | | 42 | 2 | | 43 | 9 | | 44 | 2 | | 45 | 12 | | 46 | 24 | | 47 | 1 | | 48 | 10 | | 49 | 7 |
| |
| 100.00% | Passive voice overuse | Target: ≤2% passive sentences | | passiveCount | 1 | | totalSentences | 116 | | matches | | |
| 100.00% | Past progressive (was/were + -ing) overuse | Target: ≤2% past progressive verbs | | pastProgressiveCount | 0 | | totalVerbs | 179 | | matches | (empty) | |
| 17.95% | Em-dash & semicolon overuse | Target: ≤2% sentences with em-dashes/semicolons | | emDashCount | 13 | | semicolonCount | 0 | | flaggedSentences | 8 | | totalSentences | 183 | | ratio | 0.044 | | matches | | 0 | "The flour dusting her cheek and the way her bright blue eyes locked onto him—wide, wary—told him she hadn’t been expecting company." | | 1 | "“Neither are you.” His gaze flicked past her, taking in the chaos of Eva’s flat—stacks of books precariously balanced against the walls, scrolls pinned with bent paper clips, the faint scent of old parchment and something sharper underneath." | | 2 | "“And I’m your problem.” He reached into his coat—not for a weapon, not yet, but for the silver flask tucked in his inner pocket." | | 3 | "“Don’t I?” His free hand brushed against the scar on her wrist—the small crescent moon left from that childhood accident she’d never told him about." | | 4 | "But the sound of footsteps outside—slow, deliberate—made her blood turn to ice." | | 5 | "Then a voice—deep, familiar—called out." | | 6 | "Lucien’s cane—ivory-handled, deceptively thin—materialised in his hand." | | 7 | "Silas stood there, his usual smirk replaced by something sharper—shock, maybe, or recognition." |
| |
| 100.00% | Purple prose (modifier overload) | Target: <4% adverbs, <2% -ly adverbs, no adj stacking | | wordCount | 1002 | | adjectiveStacks | 0 | | stackExamples | (empty) | | adverbCount | 36 | | adverbRatio | 0.03592814371257485 | | lyAdverbCount | 4 | | lyAdverbRatio | 0.003992015968063872 | |
| 100.00% | Repeated phrase echo | Target: ≤20% sentences with echoes (window: 2) | | totalSentences | 183 | | echoCount | 0 | | echoWords | (empty) | |
| 100.00% | Sentence length variance | Target: CV ≥0.4 for sentence word counts | | totalSentences | 183 | | mean | 7.26 | | std | 6.99 | | cv | 0.962 | | sampleLengths | | 0 | 12 | | 1 | 26 | | 2 | 22 | | 3 | 3 | | 4 | 3 | | 5 | 20 | | 6 | 2 | | 7 | 5 | | 8 | 6 | | 9 | 38 | | 10 | 6 | | 11 | 3 | | 12 | 3 | | 13 | 36 | | 14 | 7 | | 15 | 3 | | 16 | 24 | | 17 | 9 | | 18 | 4 | | 19 | 6 | | 20 | 13 | | 21 | 4 | | 22 | 4 | | 23 | 5 | | 24 | 16 | | 25 | 3 | | 26 | 3 | | 27 | 5 | | 28 | 25 | | 29 | 26 | | 30 | 3 | | 31 | 4 | | 32 | 6 | | 33 | 3 | | 34 | 10 | | 35 | 3 | | 36 | 5 | | 37 | 23 | | 38 | 7 | | 39 | 2 | | 40 | 4 | | 41 | 14 | | 42 | 7 | | 43 | 8 | | 44 | 3 | | 45 | 5 | | 46 | 11 | | 47 | 9 | | 48 | 2 | | 49 | 4 |
| |
| 45.72% | Sentence opener variety | Target: ≥60% unique sentence openers | | consecutiveRepeats | 8 | | diversityRatio | 0.3005464480874317 | | totalSentences | 183 | | uniqueOpeners | 55 | |
| 64.10% | Adverb-first sentence starts | Target: ≥3% sentences starting with an adverb | | adverbCount | 2 | | totalSentences | 104 | | matches | | 0 | "Then a voice—deep, familiar—called out." | | 1 | "Then Silas’s eyes narrowed." |
| | ratio | 0.019 | |
| 93.08% | Pronoun-first sentence starts | Target: ≤30% sentences starting with a pronoun | | pronounCount | 33 | | totalSentences | 104 | | matches | | 0 | "He stepped inside, letting the" | | 1 | "She didn’t lower the knife." | | 2 | "His gaze flicked past her," | | 3 | "He pushed off the doorframe" | | 4 | "He reached into his coat—not" | | 5 | "He unscrewed the cap, took" | | 6 | "She didn’t take it." | | 7 | "He took another drink, the" | | 8 | "His free hand brushed against" | | 9 | "His voice dropped, rougher now" | | 10 | "He stepped closer, close enough" | | 11 | "His fingers brushed the knife’s" | | 12 | "His thumb traced the edge" | | 13 | "he murmured against her hair" | | 14 | "Her pulse hammered in her" | | 15 | "His free hand slid up" | | 16 | "She should’ve pushed him away." | | 17 | "His mouth crashed onto hers." | | 18 | "It wasn’t gentle." | | 19 | "It was years of anger" |
| | ratio | 0.317 | |
| 17.69% | Subject-first sentence starts | Target: ≤72% sentences starting with a subject | | subjectCount | 92 | | totalSentences | 104 | | matches | | 0 | "The door swung open before" | | 1 | "Rory stood there, her black" | | 2 | "The flour dusting her cheek" | | 3 | "Lucien didn’t flinch." | | 4 | "He stepped inside, letting the" | | 5 | "She didn’t lower the knife." | | 6 | "His gaze flicked past her," | | 7 | "Rory’s jaw tightened." | | 8 | "He pushed off the doorframe" | | 9 | "He reached into his coat—not" | | 10 | "The one that had once" | | 11 | "He unscrewed the cap, took" | | 12 | "She didn’t take it." | | 13 | "He took another drink, the" | | 14 | "The knife wavered." | | 15 | "His free hand brushed against" | | 16 | "Rory’s breath hitched." | | 17 | "His voice dropped, rougher now" | | 18 | "The flask clinked against his" | | 19 | "He stepped closer, close enough" |
| | ratio | 0.885 | |
| 0.00% | Subordinate conjunction sentence starts | Target: ≥2% sentences starting with a subordinating conjunction | | subConjCount | 0 | | totalSentences | 104 | | matches | (empty) | | ratio | 0 | |
| 100.00% | Technical jargon density | Target: ≤6% sentences with technical-jargon patterns | | analyzedSentences | 27 | | technicalSentenceCount | 1 | | matches | | 0 | "Her hands fisted in his coat, yanking him closer, and Lucien groaned against her lips, the sound vibrating through her like a promise." |
| |
| 100.00% | Useless dialogue additions | Target: ≤5% dialogue tags with trailing filler fragments | | totalTags | 21 | | uselessAdditionCount | 1 | | matches | | 0 | "His fingers brushed, not taking it, just testing the weight" |
| |
| 100.00% | Dialogue tag variety (said vs. fancy) | Target: ≤10% fancy dialogue tags | | totalTags | 4 | | fancyCount | 3 | | fancyTags | | 0 | "he murmured (murmur)" | | 1 | "He pressed (press)" | | 2 | "he murmured (murmur)" |
| | dialogueSentences | 89 | | tagDensity | 0.045 | | leniency | 0.09 | | rawRatio | 0.75 | | effectiveRatio | 0.067 | |