| 100.00% | Adverbs in dialogue tags | Target: ≤10% dialogue tags with adverbs | | totalTags | 10 | | adverbTagCount | 0 | | adverbTags | (empty) | | dialogueSentences | 45 | | tagDensity | 0.222 | | leniency | 0.444 | | rawRatio | 0 | | effectiveRatio | 0 | |
| 100.00% | AI-ism adverb frequency | Target: <2% AI-ism adverbs (58 tracked) | | wordCount | 782 | | 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) | |
| 36.06% | AI-ism word frequency | Target: <2% AI-ism words (290 tracked) | | wordCount | 782 | | totalAiIsms | 10 | | found | | | highlights | | 0 | "unreadable" | | 1 | "flicked" | | 2 | "charged" | | 3 | "traced" | | 4 | "pulse" | | 5 | "weight" | | 6 | "silence" | | 7 | "unspoken" |
| |
| 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 | 75 | | matches | (empty) | |
| 100.00% | Filter word density | Target: ≤3% sentences with filter/hedge words | | filterCount | 0 | | hedgeCount | 1 | | narrationSentences | 75 | | filterMatches | (empty) | | hedgeMatches | | |
| 100.00% | Gibberish response detection | Target: ≤1% gibberish-like sentences (hard fail if a sentence exceeds 800 words) | | analyzedSentences | 107 | | 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 | 6 | | markdownWords | 11 | | totalWords | 774 | | ratio | 0.014 | | matches | | 0 | "snick" | | 1 | "Don’t." | | 2 | "job" | | 3 | "you" | | 4 | "Vesper Lane. Midnight. Don’t be late." | | 5 | "him" |
| |
| 100.00% | Missing dialogue indicators (quotation marks) | Target: ≤10% speech attributions without quotation marks | | totalAttributions | 13 | | unquotedAttributions | 0 | | matches | (empty) | |
| 72.68% | Name drop frequency | Target: ≤1.0 per-name mentions per 100 words | | totalMentions | 19 | | wordCount | 582 | | uniqueNames | 5 | | maxNameDensity | 1.55 | | worstName | "Rory" | | maxWindowNameDensity | 2.5 | | worstWindowName | "Rory" | | discoveredNames | | Moreau | 1 | | Eva | 2 | | Rory | 9 | | Lucien | 6 | | Lane | 1 |
| | persons | | 0 | "Moreau" | | 1 | "Eva" | | 2 | "Rory" | | 3 | "Lucien" |
| | places | | | globalScore | 0.727 | | windowScore | 0.833 | |
| 2.94% | Narrator intent-glossing | Target: ≤2% narration sentences with intent-glossing patterns | | analyzedSentences | 34 | | glossingSentenceCount | 2 | | matches | | 0 | "tasted like whiskey and something darker" | | 1 | "tasted like ozone and old blood, the way" |
| |
| 100.00% | "Not X but Y" pattern overuse | Target: ≤1 "not X but Y" per 1000 words | | totalMatches | 0 | | per1kWords | 0 | | wordCount | 774 | | matches | (empty) | |
| 100.00% | Overuse of "that" (subordinate clause padding) | Target: ≤2% sentences with "that" clauses | | thatCount | 1 | | totalSentences | 107 | | matches | | |
| 100.00% | Paragraph length variance | Target: CV ≥0.5 for paragraph word counts | | totalParagraphs | 51 | | mean | 15.18 | | std | 15.3 | | cv | 1.008 | | sampleLengths | | 0 | 43 | | 1 | 8 | | 2 | 77 | | 3 | 5 | | 4 | 7 | | 5 | 40 | | 6 | 30 | | 7 | 12 | | 8 | 8 | | 9 | 9 | | 10 | 39 | | 11 | 5 | | 12 | 1 | | 13 | 20 | | 14 | 2 | | 15 | 12 | | 16 | 42 | | 17 | 9 | | 18 | 5 | | 19 | 4 | | 20 | 3 | | 21 | 23 | | 22 | 11 | | 23 | 12 | | 24 | 12 | | 25 | 2 | | 26 | 9 | | 27 | 4 | | 28 | 3 | | 29 | 7 | | 30 | 11 | | 31 | 13 | | 32 | 16 | | 33 | 5 | | 34 | 31 | | 35 | 6 | | 36 | 9 | | 37 | 2 | | 38 | 36 | | 39 | 19 | | 40 | 11 | | 41 | 12 | | 42 | 54 | | 43 | 4 | | 44 | 29 | | 45 | 17 | | 46 | 7 | | 47 | 9 | | 48 | 7 | | 49 | 8 |
| |
| 100.00% | Passive voice overuse | Target: ≤2% passive sentences | | passiveCount | 0 | | totalSentences | 75 | | matches | (empty) | |
| 100.00% | Past progressive (was/were + -ing) overuse | Target: ≤2% past progressive verbs | | pastProgressiveCount | 0 | | totalVerbs | 108 | | matches | (empty) | |
| 0.00% | Em-dash & semicolon overuse | Target: ≤2% sentences with em-dashes/semicolons | | emDashCount | 6 | | semicolonCount | 0 | | flaggedSentences | 6 | | totalSentences | 107 | | ratio | 0.056 | | matches | | 0 | "The black one flicked past her shoulder, taking in the chaos of Eva’s flat—the stacks of books, the half-empty teacups, the way the lamplight made the scar on her wrist glow pale against her skin." | | 1 | "He stepped inside, close enough that she caught the scent of him—bergamot and something metallic, like old coins." | | 2 | "She remembered the last time he’d stood this close—the way his fingers had traced the line of her jaw, the way his voice had dropped to something rougher than this." | | 3 | "Hated how her body remembered things her mind tried to forget—the press of his palm against the small of her back, the way his lips had tasted like whiskey and something darker." | | 4 | "For a second, Rory tensed—old habits, old fears." | | 5 | "She remembered the last time she’d stood in a place like that—the way the air had tasted like ozone and old blood, the way Lucien’s hand had been the only thing steadying her when the world had tilted." |
| |
| 99.41% | Purple prose (modifier overload) | Target: <4% adverbs, <2% -ly adverbs, no adj stacking | | wordCount | 590 | | adjectiveStacks | 0 | | stackExamples | (empty) | | adverbCount | 24 | | adverbRatio | 0.04067796610169491 | | lyAdverbCount | 4 | | lyAdverbRatio | 0.006779661016949152 | |
| 100.00% | Repeated phrase echo | Target: ≤20% sentences with echoes (window: 2) | | totalSentences | 107 | | echoCount | 0 | | echoWords | (empty) | |
| 100.00% | Sentence length variance | Target: CV ≥0.4 for sentence word counts | | totalSentences | 107 | | mean | 7.23 | | std | 6.96 | | cv | 0.962 | | sampleLengths | | 0 | 10 | | 1 | 4 | | 2 | 4 | | 3 | 16 | | 4 | 9 | | 5 | 6 | | 6 | 2 | | 7 | 9 | | 8 | 26 | | 9 | 7 | | 10 | 35 | | 11 | 5 | | 12 | 5 | | 13 | 2 | | 14 | 18 | | 15 | 6 | | 16 | 2 | | 17 | 4 | | 18 | 10 | | 19 | 14 | | 20 | 16 | | 21 | 9 | | 22 | 3 | | 23 | 5 | | 24 | 3 | | 25 | 9 | | 26 | 2 | | 27 | 6 | | 28 | 30 | | 29 | 1 | | 30 | 5 | | 31 | 1 | | 32 | 7 | | 33 | 8 | | 34 | 5 | | 35 | 2 | | 36 | 7 | | 37 | 5 | | 38 | 3 | | 39 | 7 | | 40 | 32 | | 41 | 9 | | 42 | 3 | | 43 | 2 | | 44 | 2 | | 45 | 2 | | 46 | 3 | | 47 | 13 | | 48 | 6 | | 49 | 4 |
| |
| 53.89% | Sentence opener variety | Target: ≥60% unique sentence openers | | consecutiveRepeats | 9 | | diversityRatio | 0.37383177570093457 | | totalSentences | 107 | | uniqueOpeners | 40 | |
| 100.00% | Adverb-first sentence starts | Target: ≥3% sentences starting with an adverb | | adverbCount | 3 | | totalSentences | 58 | | matches | | 0 | "Then he adjusted his cuffs," | | 1 | "Then, the faintest ghost of" | | 2 | "Instead, she crumpled the paper" |
| | ratio | 0.052 | |
| 68.28% | Pronoun-first sentence starts | Target: ≤30% sentences starting with a pronoun | | pronounCount | 22 | | totalSentences | 58 | | matches | | 0 | "She knew that sound." | | 1 | "she said, voice steady" | | 2 | "He stepped inside, close enough" | | 3 | "His gaze skimmed the room," | | 4 | "She remembered the last time" | | 5 | "His smirk faltered, just for" | | 6 | "He tilted his head, studying" | | 7 | "She hated how easily he" | | 8 | "she asked, voice low" | | 9 | "His jaw tightened." | | 10 | "She cut herself off" | | 11 | "He hesitated, just a fraction." | | 12 | "His cane thudded against the" | | 13 | "She arched a brow." | | 14 | "His gaze snapped back to" | | 15 | "He stepped closer, close enough" | | 16 | "His smile vanished." | | 17 | "She took it." | | 18 | "His voice was quiet" | | 19 | "She remembered the last time" |
| | ratio | 0.379 | |
| 63.45% | Subject-first sentence starts | Target: ≤72% sentences starting with a subject | | subjectCount | 46 | | totalSentences | 58 | | matches | | 0 | "The third deadbolt clicked shut" | | 1 | "Rory didn’t turn around." | | 2 | "She knew that sound." | | 3 | "Ptolemy’s tail twitched against the" | | 4 | "she said, voice steady" | | 5 | "The door swung open before" | | 6 | "Lucien Moreau stood there, filling" | | 7 | "The amber eye locked onto" | | 8 | "The black one flicked past" | | 9 | "Rory exhaled through her nose." | | 10 | "He stepped inside, close enough" | | 11 | "The door clicked shut behind" | | 12 | "His gaze skimmed the room," | | 13 | "A half-finished translation of a" | | 14 | "Rory crossed her arms" | | 15 | "Lucien smirked, slow and deliberate." | | 16 | "The air between them hummed," | | 17 | "She remembered the last time" | | 18 | "His smirk faltered, just for" | | 19 | "He tilted his head, studying" |
| | ratio | 0.793 | |
| 0.00% | Subordinate conjunction sentence starts | Target: ≥2% sentences starting with a subordinating conjunction | | subConjCount | 0 | | totalSentences | 58 | | matches | (empty) | | ratio | 0 | |
| 100.00% | Technical jargon density | Target: ≤6% sentences with technical-jargon patterns | | analyzedSentences | 17 | | technicalSentenceCount | 1 | | matches | | 0 | "Lucien Moreau stood there, filling the frame in a charcoal suit that looked freshly pressed, his cane tucked under one arm like it was an afterthought." |
| |
| 25.00% | Useless dialogue additions | Target: ≤5% dialogue tags with trailing filler fragments | | totalTags | 10 | | uselessAdditionCount | 2 | | matches | | 0 | "she said, voice steady" | | 1 | "she asked, voice low" |
| |
| 100.00% | Dialogue tag variety (said vs. fancy) | Target: ≤10% fancy dialogue tags | | totalTags | 7 | | fancyCount | 1 | | fancyTags | | 0 | "she corrected (correct)" |
| | dialogueSentences | 45 | | tagDensity | 0.156 | | leniency | 0.311 | | rawRatio | 0.143 | | effectiveRatio | 0.044 | |