| 100.00% | Adverbs in dialogue tags | Target: ≤10% dialogue tags with adverbs | | totalTags | 12 | | adverbTagCount | 2 | | adverbTags | | 0 | "He glanced around [around]" | | 1 | "He turned back [back]" |
| | dialogueSentences | 44 | | tagDensity | 0.273 | | leniency | 0.545 | | rawRatio | 0.167 | | effectiveRatio | 0.091 | |
| 94.92% | AI-ism adverb frequency | Target: <2% AI-ism adverbs (58 tracked) | | wordCount | 984 | | totalAiIsmAdverbs | 1 | | 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) | |
| 33.94% | AI-ism word frequency | Target: <2% AI-ism words (290 tracked) | | wordCount | 984 | | totalAiIsms | 13 | | found | | | highlights | | 0 | "pulse" | | 1 | "glinting" | | 2 | "flicked" | | 3 | "stomach" | | 4 | "traced" | | 5 | "flickered" | | 6 | "charged" | | 7 | "whisper" | | 8 | "eyebrow" | | 9 | "trembled" | | 10 | "tension" |
| |
| 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 | 1 | | narrationSentences | 70 | | matches | | |
| 100.00% | Filter word density | Target: ≤3% sentences with filter/hedge words | | filterCount | 0 | | hedgeCount | 0 | | narrationSentences | 70 | | filterMatches | (empty) | | hedgeMatches | (empty) | |
| 100.00% | Gibberish response detection | Target: ≤1% gibberish-like sentences (hard fail if a sentence exceeds 800 words) | | analyzedSentences | 102 | | gibberishSentences | 0 | | adjustedGibberishSentences | 0 | | longSentenceCount | 0 | | runOnParagraphCount | 0 | | giantParagraphCount | 0 | | wordSaladCount | 0 | | repetitionLoopCount | 0 | | controlTokenCount | 0 | | maxSentenceWordsSeen | 40 | | ratio | 0 | | matches | (empty) | |
| 100.00% | Markdown formatting overuse | Target: ≤5% words in markdown formatting | | markdownSpans | 2 | | markdownWords | 7 | | totalWords | 973 | | ratio | 0.007 | | matches | | 0 | "Get out. Now. Don’t look back." | | 1 | "clink" |
| |
| 100.00% | Missing dialogue indicators (quotation marks) | Target: ≤10% speech attributions without quotation marks | | totalAttributions | 11 | | unquotedAttributions | 0 | | matches | (empty) | |
| 100.00% | Name drop frequency | Target: ≤1.0 per-name mentions per 100 words | | totalMentions | 16 | | wordCount | 736 | | uniqueNames | 4 | | maxNameDensity | 0.82 | | worstName | "Evan" | | maxWindowNameDensity | 2 | | worstWindowName | "Evan" | | discoveredNames | | | persons | | | places | | | globalScore | 1 | | windowScore | 1 | |
| 95.65% | Narrator intent-glossing | Target: ≤2% narration sentences with intent-glossing patterns | | analyzedSentences | 46 | | glossingSentenceCount | 1 | | matches | | 0 | "as if testing the shape of her name in his mouth" |
| |
| 100.00% | "Not X but Y" pattern overuse | Target: ≤1 "not X but Y" per 1000 words | | totalMatches | 0 | | per1kWords | 0 | | wordCount | 973 | | matches | (empty) | |
| 100.00% | Overuse of "that" (subordinate clause padding) | Target: ≤2% sentences with "that" clauses | | thatCount | 0 | | totalSentences | 102 | | matches | (empty) | |
| 100.00% | Paragraph length variance | Target: CV ≥0.5 for paragraph word counts | | totalParagraphs | 44 | | mean | 22.11 | | std | 15.8 | | cv | 0.715 | | sampleLengths | | 0 | 61 | | 1 | 1 | | 2 | 62 | | 3 | 17 | | 4 | 39 | | 5 | 17 | | 6 | 11 | | 7 | 44 | | 8 | 13 | | 9 | 21 | | 10 | 23 | | 11 | 9 | | 12 | 7 | | 13 | 4 | | 14 | 22 | | 15 | 33 | | 16 | 39 | | 17 | 1 | | 18 | 34 | | 19 | 13 | | 20 | 16 | | 21 | 10 | | 22 | 17 | | 23 | 35 | | 24 | 23 | | 25 | 9 | | 26 | 66 | | 27 | 11 | | 28 | 8 | | 29 | 40 | | 30 | 20 | | 31 | 47 | | 32 | 13 | | 33 | 5 | | 34 | 13 | | 35 | 28 | | 36 | 24 | | 37 | 10 | | 38 | 11 | | 39 | 17 | | 40 | 25 | | 41 | 15 | | 42 | 21 | | 43 | 18 |
| |
| 95.24% | Passive voice overuse | Target: ≤2% passive sentences | | passiveCount | 2 | | totalSentences | 70 | | matches | | 0 | "was gone" | | 1 | "were curled" |
| |
| 100.00% | Past progressive (was/were + -ing) overuse | Target: ≤2% past progressive verbs | | pastProgressiveCount | 1 | | totalVerbs | 142 | | matches | | |
| 0.00% | Em-dash & semicolon overuse | Target: ≤2% sentences with em-dashes/semicolons | | emDashCount | 9 | | semicolonCount | 0 | | flaggedSentences | 6 | | totalSentences | 102 | | ratio | 0.059 | | matches | | 0 | "His hands—those hands—rested casually in his pockets, but his knuckles were white where they pressed against the fabric." | | 1 | "\"Old friend. Right.\" He pushed off the wall and sauntered over, close enough that she caught the scent of his cologne—something expensive, something that hadn’t been on the shelves when they were together." | | 2 | "But something—stubbornness, maybe, or the whiskey burning in her stomach—kept her rooted to the spot." | | 3 | "\"Another for her. And a gin for me. Neat.\" He turned back to her, his bright blue eyes—so like hers, people used to joke they were siblings—searching her face." | | 4 | "His expression didn’t change, but something flickered in his eyes—something dark and hungry." | | 5 | "\"Haven’t we all?\" He leaned in, close enough that she could see the faint scar above his eyebrow—a souvenir from a bar fight years ago." |
| |
| 100.00% | Purple prose (modifier overload) | Target: <4% adverbs, <2% -ly adverbs, no adj stacking | | wordCount | 373 | | adjectiveStacks | 0 | | stackExamples | (empty) | | adverbCount | 12 | | adverbRatio | 0.032171581769437 | | lyAdverbCount | 3 | | lyAdverbRatio | 0.00804289544235925 | |
| 100.00% | Repeated phrase echo | Target: ≤20% sentences with echoes (window: 2) | | totalSentences | 102 | | echoCount | 0 | | echoWords | (empty) | |
| 100.00% | Sentence length variance | Target: CV ≥0.4 for sentence word counts | | totalSentences | 102 | | mean | 9.54 | | std | 8.18 | | cv | 0.858 | | sampleLengths | | 0 | 22 | | 1 | 39 | | 2 | 1 | | 3 | 21 | | 4 | 23 | | 5 | 18 | | 6 | 14 | | 7 | 3 | | 8 | 3 | | 9 | 1 | | 10 | 26 | | 11 | 2 | | 12 | 1 | | 13 | 5 | | 14 | 1 | | 15 | 14 | | 16 | 3 | | 17 | 6 | | 18 | 5 | | 19 | 6 | | 20 | 33 | | 21 | 5 | | 22 | 9 | | 23 | 4 | | 24 | 14 | | 25 | 4 | | 26 | 3 | | 27 | 23 | | 28 | 3 | | 29 | 6 | | 30 | 7 | | 31 | 4 | | 32 | 18 | | 33 | 4 | | 34 | 3 | | 35 | 15 | | 36 | 15 | | 37 | 4 | | 38 | 29 | | 39 | 6 | | 40 | 1 | | 41 | 30 | | 42 | 4 | | 43 | 10 | | 44 | 3 | | 45 | 6 | | 46 | 7 | | 47 | 3 | | 48 | 4 | | 49 | 6 |
| |
| 69.61% | Sentence opener variety | Target: ≥60% unique sentence openers | | consecutiveRepeats | 4 | | diversityRatio | 0.4411764705882353 | | totalSentences | 102 | | uniqueOpeners | 45 | |
| 100.00% | Adverb-first sentence starts | Target: ≥3% sentences starting with an adverb | | adverbCount | 2 | | totalSentences | 61 | | matches | | 0 | "Just nodded at the empty" | | 1 | "Somewhere in the city, a" |
| | ratio | 0.033 | |
| 49.51% | Pronoun-first sentence starts | Target: ≤30% sentences starting with a pronoun | | pronounCount | 26 | | totalSentences | 61 | | matches | | 0 | "His hair was shorter now," | | 1 | "His hands—those hands—rested casually in" | | 2 | "he said, as if testing" | | 3 | "She didn’t answer." | | 4 | "She forced a smile, teeth" | | 5 | "He pushed off the wall" | | 6 | "She didn’t move away." | | 7 | "He glanced around, taking in" | | 8 | "She should’ve left." | | 9 | "He turned back to her," | | 10 | "He chuckled, low and warm," | | 11 | "She traced the rim of" | | 12 | "He took a sip, watching" | | 13 | "She could’ve lied." | | 14 | "His expression didn’t change, but" | | 15 | "He set his glass down" | | 16 | "His fingers drummed against the" | | 17 | "He said it like it" | | 18 | "Her hands curled into fists." | | 19 | "He leaned in, close enough" |
| | ratio | 0.426 | |
| 41.97% | Subject-first sentence starts | Target: ≤72% sentences starting with a subject | | subjectCount | 51 | | totalSentences | 61 | | matches | | 0 | "The glass slipped from her" | | 1 | "Rory’s pulse hammered in her" | | 2 | "His hair was shorter now," | | 3 | "The leather jacket he’d always" | | 4 | "His hands—those hands—rested casually in" | | 5 | "he said, as if testing" | | 6 | "She didn’t answer." | | 7 | "The last time she’d seen" | | 8 | "Silas appeared at her elbow," | | 9 | "She forced a smile, teeth" | | 10 | "Evan’s grin widened, slow and" | | 11 | "He pushed off the wall" | | 12 | "Evan slid onto the stool" | | 13 | "She didn’t move away." | | 14 | "Silas lingered a moment longer," | | 15 | "Rory exhaled, slow." | | 16 | "He glanced around, taking in" | | 17 | "She should’ve left." | | 18 | "Evan signalled the bartender." | | 19 | "He turned back to her," |
| | ratio | 0.836 | |
| 0.00% | Subordinate conjunction sentence starts | Target: ≥2% sentences starting with a subordinating conjunction | | subConjCount | 0 | | totalSentences | 61 | | matches | (empty) | | ratio | 0 | |
| 100.00% | Technical jargon density | Target: ≤6% sentences with technical-jargon patterns | | analyzedSentences | 22 | | technicalSentenceCount | 0 | | matches | (empty) | |
| 41.67% | Useless dialogue additions | Target: ≤5% dialogue tags with trailing filler fragments | | totalTags | 12 | | uselessAdditionCount | 2 | | matches | | 0 | "he said, as if testing the shape of her name in his mouth" | | 1 | "Evan slid, his knee brushing hers" |
| |
| 100.00% | Dialogue tag variety (said vs. fancy) | Target: ≤10% fancy dialogue tags | | totalTags | 4 | | fancyCount | 2 | | fancyTags | | 0 | "He chuckled (chuckle)" | | 1 | "he agreed (agree)" |
| | dialogueSentences | 44 | | tagDensity | 0.091 | | leniency | 0.182 | | rawRatio | 0.5 | | effectiveRatio | 0.091 | |