| 100.00% | Adverbs in dialogue tags | Target: ≤10% dialogue tags with adverbs | | totalTags | 7 | | adverbTagCount | 1 | | adverbTags | | 0 | "His lips quirked just [just]" |
| | dialogueSentences | 43 | | tagDensity | 0.163 | | leniency | 0.326 | | rawRatio | 0.143 | | effectiveRatio | 0.047 | |
| 83.50% | AI-ism adverb frequency | Target: <2% AI-ism adverbs (58 tracked) | | wordCount | 1212 | | totalAiIsmAdverbs | 4 | | 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) | |
| 58.75% | AI-ism word frequency | Target: <2% AI-ism words (290 tracked) | | wordCount | 1212 | | totalAiIsms | 10 | | found | | | highlights | | 0 | "silence" | | 1 | "stomach" | | 2 | "gleaming" | | 3 | "pulse" | | 4 | "could feel" | | 5 | "charged" | | 6 | "tracing" |
| |
| 100.00% | Cliché density | Target: ≤1 cliche(s) per 800-word window | | totalCliches | 1 | | maxInWindow | 1 | | found | | 0 | | label | "stomach dropped/sank" | | count | 1 |
|
| | highlights | | |
| 100.00% | Emotion telling (show vs. tell) | Target: ≤3% sentences with emotion telling | | emotionTells | 0 | | narrationSentences | 101 | | matches | (empty) | |
| 100.00% | Filter word density | Target: ≤3% sentences with filter/hedge words | | filterCount | 0 | | hedgeCount | 0 | | narrationSentences | 101 | | filterMatches | (empty) | | hedgeMatches | (empty) | |
| 100.00% | Gibberish response detection | Target: ≤1% gibberish-like sentences (hard fail if a sentence exceeds 800 words) | | analyzedSentences | 136 | | 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 | 9 | | markdownWords | 14 | | totalWords | 1199 | | ratio | 0.012 | | matches | | 0 | "clink" | | 1 | "No. Not possible." | | 2 | "felt" | | 3 | "chérie" | | 4 | "Shit." | | 5 | "petit monstre" | | 6 | "Laila" | | 7 | "Don’t you dare." | | 8 | "chérie" |
| |
| 100.00% | Missing dialogue indicators (quotation marks) | Target: ≤10% speech attributions without quotation marks | | totalAttributions | 13 | | unquotedAttributions | 0 | | matches | (empty) | |
| 100.00% | Name drop frequency | Target: ≤1.0 per-name mentions per 100 words | | totalMentions | 21 | | wordCount | 989 | | uniqueNames | 5 | | maxNameDensity | 0.91 | | worstName | "Lucien" | | maxWindowNameDensity | 2 | | worstWindowName | "Lucien" | | discoveredNames | | French | 1 | | Rory | 4 | | Lucien | 9 | | Ptolemy | 4 | | Should | 3 |
| | persons | | 0 | "Rory" | | 1 | "Lucien" | | 2 | "Ptolemy" | | 3 | "Should" |
| | places | (empty) | | globalScore | 1 | | windowScore | 1 | |
| 69.35% | Narrator intent-glossing | Target: ≤2% narration sentences with intent-glossing patterns | | analyzedSentences | 62 | | glossingSentenceCount | 2 | | matches | | 0 | "smelled like expensive cologne and somethi" | | 1 | "tasted like sin and whiskey, like every b" |
| |
| 100.00% | "Not X but Y" pattern overuse | Target: ≤1 "not X but Y" per 1000 words | | totalMatches | 1 | | per1kWords | 0.834 | | wordCount | 1199 | | matches | | 0 | "Not enough to crowd her, but enough" |
| |
| 100.00% | Overuse of "that" (subordinate clause padding) | Target: ≤2% sentences with "that" clauses | | thatCount | 1 | | totalSentences | 136 | | matches | | |
| 100.00% | Paragraph length variance | Target: CV ≥0.5 for paragraph word counts | | totalParagraphs | 58 | | mean | 20.67 | | std | 15.79 | | cv | 0.764 | | sampleLengths | | 0 | 51 | | 1 | 48 | | 2 | 12 | | 3 | 23 | | 4 | 41 | | 5 | 6 | | 6 | 34 | | 7 | 14 | | 8 | 39 | | 9 | 59 | | 10 | 12 | | 11 | 9 | | 12 | 16 | | 13 | 48 | | 14 | 7 | | 15 | 27 | | 16 | 27 | | 17 | 14 | | 18 | 5 | | 19 | 32 | | 20 | 7 | | 21 | 9 | | 22 | 50 | | 23 | 8 | | 24 | 1 | | 25 | 2 | | 26 | 4 | | 27 | 19 | | 28 | 23 | | 29 | 15 | | 30 | 20 | | 31 | 4 | | 32 | 9 | | 33 | 54 | | 34 | 32 | | 35 | 3 | | 36 | 20 | | 37 | 16 | | 38 | 15 | | 39 | 28 | | 40 | 18 | | 41 | 40 | | 42 | 6 | | 43 | 6 | | 44 | 10 | | 45 | 20 | | 46 | 21 | | 47 | 33 | | 48 | 21 | | 49 | 2 |
| |
| 100.00% | Passive voice overuse | Target: ≤2% passive sentences | | passiveCount | 0 | | totalSentences | 101 | | matches | (empty) | |
| 88.89% | Past progressive (was/were + -ing) overuse | Target: ≤2% past progressive verbs | | pastProgressiveCount | 3 | | totalVerbs | 180 | | matches | | 0 | "was looking" | | 1 | "was looking" | | 2 | "was tracing" |
| |
| 0.00% | Em-dash & semicolon overuse | Target: ≤2% sentences with em-dashes/semicolons | | emDashCount | 11 | | semicolonCount | 0 | | flaggedSentences | 8 | | totalSentences | 136 | | ratio | 0.059 | | matches | | 0 | "The deadbolts held firm, but the sound came again—three rapid strikes, then a pause, then two more." | | 1 | "The door swung open just enough to reveal him—tall, immaculate, leaning against the frame like he owned the place." | | 2 | "The flat’s dim light spilled over him—tailored charcoal suit, platinum hair slicked back, those damn eyes, one amber, one black, catching the glow like polished stone." | | 3 | "The cat sniffed his fingers, then—traitor—rubbed his cheek against Lucien’s knuckles before slinking away." | | 4 | "She hadn’t heard it in months—not since the last time they’d stood this close, not since the night she’d walked out of his office with the ledger tucked under her arm and his voice raw in her ears." | | 5 | "But the way he was looking at her—like he could see straight through her—made her fingers twitch at her sides." | | 6 | "But the way he was looking at her—like she was the only thing in the room, the only thing that mattered—made her stomach twist." | | 7 | "The ledger, the reason he’d come, the months of silence—none of it mattered." |
| |
| 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 | 8 | | lyAdverbRatio | 0.007984031936127744 | |
| 100.00% | Repeated phrase echo | Target: ≤20% sentences with echoes (window: 2) | | totalSentences | 136 | | echoCount | 0 | | echoWords | (empty) | |
| 100.00% | Sentence length variance | Target: CV ≥0.4 for sentence word counts | | totalSentences | 136 | | mean | 8.82 | | std | 6.65 | | cv | 0.754 | | sampleLengths | | 0 | 23 | | 1 | 10 | | 2 | 18 | | 3 | 13 | | 4 | 13 | | 5 | 17 | | 6 | 2 | | 7 | 3 | | 8 | 9 | | 9 | 1 | | 10 | 2 | | 11 | 6 | | 12 | 13 | | 13 | 4 | | 14 | 8 | | 15 | 18 | | 16 | 3 | | 17 | 12 | | 18 | 6 | | 19 | 15 | | 20 | 16 | | 21 | 3 | | 22 | 4 | | 23 | 10 | | 24 | 3 | | 25 | 3 | | 26 | 27 | | 27 | 5 | | 28 | 1 | | 29 | 5 | | 30 | 3 | | 31 | 16 | | 32 | 19 | | 33 | 16 | | 34 | 8 | | 35 | 4 | | 36 | 5 | | 37 | 4 | | 38 | 9 | | 39 | 7 | | 40 | 8 | | 41 | 26 | | 42 | 14 | | 43 | 4 | | 44 | 3 | | 45 | 17 | | 46 | 6 | | 47 | 4 | | 48 | 15 | | 49 | 3 |
| |
| 47.06% | Sentence opener variety | Target: ≥60% unique sentence openers | | consecutiveRepeats | 4 | | diversityRatio | 0.27941176470588236 | | totalSentences | 136 | | uniqueOpeners | 38 | |
| 73.26% | Adverb-first sentence starts | Target: ≥3% sentences starting with an adverb | | adverbCount | 2 | | totalSentences | 91 | | matches | | 0 | "Then the second." | | 1 | "Instead, her fingers curled into" |
| | ratio | 0.022 | |
| 30.99% | Pronoun-first sentence starts | Target: ≤30% sentences starting with a pronoun | | pronounCount | 43 | | totalSentences | 91 | | matches | | 0 | "She set the mug down" | | 1 | "Her fingers tightened around the" | | 2 | "She exhaled through her nose," | | 3 | "She should’ve known." | | 4 | "She pressed her palm to" | | 5 | "Her stomach dropped." | | 6 | "She’d meant to return it." | | 7 | "She unlatched the first deadbolt." | | 8 | "His cane tapped once against" | | 9 | "She didn’t rise to it." | | 10 | "His lips quirked, just slightly" | | 11 | "He smelled like expensive cologne" | | 12 | "She crossed her arms." | | 13 | "He pushed off the frame," | | 14 | "He simply crouched, extending a" | | 15 | "She hadn’t heard it in" | | 16 | "She turned away, moving to" | | 17 | "She yanked open a cabinet," | | 18 | "She didn’t offer him one." | | 19 | "He didn’t ask." |
| | ratio | 0.473 | |
| 31.43% | Subject-first sentence starts | Target: ≤72% sentences starting with a subject | | subjectCount | 78 | | totalSentences | 91 | | matches | | 0 | "The knock came just after" | | 1 | "Rory froze mid-sip, the lukewarm" | | 2 | "Ptolemy’s ears twitched from his" | | 3 | "She set the mug down" | | 4 | "The deadbolts held firm, but" | | 5 | "Her fingers tightened around the" | | 6 | "The knock repeated, louder this" | | 7 | "A voice followed, smooth as" | | 8 | "She exhaled through her nose," | | 9 | "The flat smelled of old" | | 10 | "She should’ve known." | | 11 | "Ptolemy hissed from his hiding" | | 12 | "Rory crossed the room in" | | 13 | "She pressed her palm to" | | 14 | "A beat of silence." | | 15 | "Her stomach dropped." | | 16 | "The one she’d swiped from" | | 17 | "She’d meant to return it." | | 18 | "She unlatched the first deadbolt." | | 19 | "The third stuck, and she" |
| | ratio | 0.857 | |
| 0.00% | Subordinate conjunction sentence starts | Target: ≥2% sentences starting with a subordinating conjunction | | subConjCount | 0 | | totalSentences | 91 | | matches | (empty) | | ratio | 0 | |
| 100.00% | Technical jargon density | Target: ≤6% sentences with technical-jargon patterns | | analyzedSentences | 43 | | technicalSentenceCount | 2 | | matches | | 0 | "He smelled like expensive cologne and something darker, something that made her pulse jump." | | 1 | "The sting faded, replaced by something warmer, something that made her breath catch." |
| |
| 100.00% | Useless dialogue additions | Target: ≤5% dialogue tags with trailing filler fragments | | totalTags | 7 | | uselessAdditionCount | 0 | | matches | (empty) | |
| 100.00% | Dialogue tag variety (said vs. fancy) | Target: ≤10% fancy dialogue tags | | totalTags | 1 | | fancyCount | 1 | | fancyTags | | | dialogueSentences | 43 | | tagDensity | 0.023 | | leniency | 0.047 | | rawRatio | 1 | | effectiveRatio | 0.047 | |