| 100.00% | Adverbs in dialogue tags | Target: ≤10% dialogue tags with adverbs | | totalTags | 20 | | adverbTagCount | 1 | | adverbTags | | 0 | "he said quietly [quietly]" |
| | dialogueSentences | 64 | | tagDensity | 0.313 | | leniency | 0.625 | | rawRatio | 0.05 | | effectiveRatio | 0.031 | |
| 89.35% | AI-ism adverb frequency | Target: <2% AI-ism adverbs (58 tracked) | | wordCount | 1408 | | totalAiIsmAdverbs | 3 | | found | | | highlights | | 0 | "quickly" | | 1 | "slightly" | | 2 | "very" |
| |
| 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) | |
| 71.59% | AI-ism word frequency | Target: <2% AI-ism words (290 tracked) | | wordCount | 1408 | | totalAiIsms | 8 | | found | | | highlights | | 0 | "tracing" | | 1 | "familiar" | | 2 | "absolutely" | | 3 | "flickered" | | 4 | "silence" | | 5 | "traced" | | 6 | "weight" |
| |
| 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 | 108 | | matches | (empty) | |
| 100.00% | Filter word density | Target: ≤3% sentences with filter/hedge words | | filterCount | 1 | | hedgeCount | 1 | | narrationSentences | 108 | | filterMatches | | | hedgeMatches | | |
| 100.00% | Gibberish response detection | Target: ≤1% gibberish-like sentences (hard fail if a sentence exceeds 800 words) | | analyzedSentences | 152 | | gibberishSentences | 0 | | adjustedGibberishSentences | 0 | | longSentenceCount | 0 | | runOnParagraphCount | 0 | | giantParagraphCount | 0 | | wordSaladCount | 0 | | repetitionLoopCount | 0 | | controlTokenCount | 0 | | repeatedSegmentCount | 0 | | maxSentenceWordsSeen | 45 | | ratio | 0 | | matches | (empty) | |
| 100.00% | Markdown formatting overuse | Target: ≤5% words in markdown formatting | | markdownSpans | 0 | | markdownWords | 0 | | totalWords | 1402 | | ratio | 0 | | matches | (empty) | |
| 100.00% | Missing dialogue indicators (quotation marks) | Target: ≤10% speech attributions without quotation marks | | totalAttributions | 23 | | unquotedAttributions | 0 | | matches | (empty) | |
| 100.00% | Name drop frequency | Target: ≤1.0 per-name mentions per 100 words | | totalMentions | 19 | | wordCount | 951 | | uniqueNames | 12 | | maxNameDensity | 0.53 | | worstName | "Rory" | | maxWindowNameDensity | 1.5 | | worstWindowName | "Rory" | | discoveredNames | | Moreau | 1 | | Brick | 1 | | Lane | 1 | | Low | 1 | | French-soft | 1 | | Laila | 1 | | London | 1 | | Ovid | 1 | | Swallowed | 1 | | French | 2 | | Rory | 5 | | Ptolemy | 3 |
| | persons | | 0 | "Moreau" | | 1 | "Laila" | | 2 | "Rory" | | 3 | "Ptolemy" |
| | places | | 0 | "Brick" | | 1 | "Lane" | | 2 | "London" | | 3 | "French" |
| | globalScore | 1 | | windowScore | 1 | |
| 100.00% | Narrator intent-glossing | Target: ≤2% narration sentences with intent-glossing patterns | | analyzedSentences | 61 | | glossingSentenceCount | 1 | | matches | | 0 | "smelled like him—rain and vetiver and some" |
| |
| 100.00% | "Not X but Y" pattern overuse | Target: ≤1 "not X but Y" per 1000 words | | totalMatches | 1 | | per1kWords | 0.713 | | wordCount | 1402 | | matches | | 0 | "not with bulk, but with presence" |
| |
| 100.00% | Overuse of "that" (subordinate clause padding) | Target: ≤2% sentences with "that" clauses | | thatCount | 0 | | totalSentences | 152 | | matches | (empty) | |
| 100.00% | Paragraph length variance | Target: CV ≥0.5 for paragraph word counts | | totalParagraphs | 84 | | mean | 16.69 | | std | 16.86 | | cv | 1.01 | | sampleLengths | | 0 | 18 | | 1 | 62 | | 2 | 14 | | 3 | 7 | | 4 | 33 | | 5 | 12 | | 6 | 29 | | 7 | 2 | | 8 | 3 | | 9 | 14 | | 10 | 17 | | 11 | 5 | | 12 | 15 | | 13 | 79 | | 14 | 7 | | 15 | 2 | | 16 | 13 | | 17 | 23 | | 18 | 8 | | 19 | 4 | | 20 | 10 | | 21 | 12 | | 22 | 43 | | 23 | 9 | | 24 | 8 | | 25 | 14 | | 26 | 36 | | 27 | 57 | | 28 | 4 | | 29 | 2 | | 30 | 3 | | 31 | 23 | | 32 | 5 | | 33 | 1 | | 34 | 40 | | 35 | 11 | | 36 | 8 | | 37 | 33 | | 38 | 13 | | 39 | 4 | | 40 | 1 | | 41 | 6 | | 42 | 3 | | 43 | 1 | | 44 | 40 | | 45 | 51 | | 46 | 13 | | 47 | 4 | | 48 | 5 | | 49 | 15 |
| |
| 100.00% | Passive voice overuse | Target: ≤2% passive sentences | | passiveCount | 1 | | totalSentences | 108 | | matches | | |
| 100.00% | Past progressive (was/were + -ing) overuse | Target: ≤2% past progressive verbs | | pastProgressiveCount | 1 | | totalVerbs | 184 | | matches | | |
| 48.87% | Em-dash & semicolon overuse | Target: ≤2% sentences with em-dashes/semicolons | | emDashCount | 6 | | semicolonCount | 0 | | flaggedSentences | 5 | | totalSentences | 152 | | ratio | 0.033 | | matches | | 0 | "His cane moved—not threatening, just there, a silver-tipped obstruction against the wood." | | 1 | "She should absolutely not let him inside the flat where her walls were thin and her bed was three feet from the door and the air already smelled like him—rain and vetiver and something darker, like smoke from a fire you couldn't see." | | 2 | "He filled spaces differently than other men—not with bulk, but with presence." | | 3 | "His collar was slightly loosened—something she’d never seen him do in public." | | 4 | "She remembered the way he’d said her name—her real name—the first time he’d trusted her with a job that mattered." |
| |
| 100.00% | Purple prose (modifier overload) | Target: <4% adverbs, <2% -ly adverbs, no adj stacking | | wordCount | 962 | | adjectiveStacks | 0 | | stackExamples | (empty) | | adverbCount | 37 | | adverbRatio | 0.038461538461538464 | | lyAdverbCount | 9 | | lyAdverbRatio | 0.009355509355509356 | |
| 100.00% | Repeated phrase echo | Target: ≤20% sentences with echoes (window: 2) | | totalSentences | 152 | | echoCount | 0 | | echoWords | (empty) | |
| 100.00% | Sentence length variance | Target: CV ≥0.4 for sentence word counts | | totalSentences | 152 | | mean | 9.22 | | std | 7.94 | | cv | 0.861 | | sampleLengths | | 0 | 10 | | 1 | 8 | | 2 | 31 | | 3 | 16 | | 4 | 10 | | 5 | 5 | | 6 | 9 | | 7 | 5 | | 8 | 7 | | 9 | 13 | | 10 | 11 | | 11 | 9 | | 12 | 12 | | 13 | 12 | | 14 | 17 | | 15 | 2 | | 16 | 3 | | 17 | 13 | | 18 | 1 | | 19 | 5 | | 20 | 12 | | 21 | 5 | | 22 | 5 | | 23 | 1 | | 24 | 9 | | 25 | 5 | | 26 | 31 | | 27 | 43 | | 28 | 7 | | 29 | 2 | | 30 | 13 | | 31 | 3 | | 32 | 10 | | 33 | 3 | | 34 | 7 | | 35 | 6 | | 36 | 2 | | 37 | 4 | | 38 | 10 | | 39 | 12 | | 40 | 3 | | 41 | 25 | | 42 | 2 | | 43 | 13 | | 44 | 9 | | 45 | 8 | | 46 | 4 | | 47 | 10 | | 48 | 9 | | 49 | 12 |
| |
| 51.54% | Sentence opener variety | Target: ≥60% unique sentence openers | | consecutiveRepeats | 15 | | diversityRatio | 0.3684210526315789 | | totalSentences | 152 | | uniqueOpeners | 56 | |
| 100.00% | Adverb-first sentence starts | Target: ≥3% sentences starting with an adverb | | adverbCount | 3 | | totalSentences | 84 | | matches | | 0 | "Somewhere below, the curry house" | | 1 | "Just for a moment." | | 2 | "Then he nodded." |
| | ratio | 0.036 | |
| 29.52% | Pronoun-first sentence starts | Target: ≤30% sentences starting with a pronoun | | pronounCount | 40 | | totalSentences | 84 | | matches | | 0 | "His platinum hair was slicked" | | 1 | "His voice moved through her" | | 2 | "She hadn't been Laila in" | | 3 | "She started to push the" | | 4 | "His cane moved—not threatening, just" | | 5 | "She should close the door." | | 6 | "She should tell him to" | | 7 | "She should absolutely not let" | | 8 | "His jaw tightened." | | 9 | "She didn’t remember him betraying" | | 10 | "he said quietly" | | 11 | "He didn’t answer." | | 12 | "He just stood there, dripping," | | 13 | "He stepped inside, and the" | | 14 | "He filled spaces differently than" | | 15 | "She watched him take in" | | 16 | "Her jacket draped over the" | | 17 | "He held up a hand," | | 18 | "He turned to survey the" | | 19 | "Her voice cracked on the" |
| | ratio | 0.476 | |
| 19.52% | Subject-first sentence starts | Target: ≤72% sentences starting with a subject | | subjectCount | 74 | | totalSentences | 84 | | matches | | 0 | "The deadbolt scraped back, then" | | 1 | "Rory pulled the door open" | | 2 | "Lucien Moreau stood in the" | | 3 | "His platinum hair was slicked" | | 4 | "The amber eye caught the" | | 5 | "The black one simply watched." | | 6 | "His voice moved through her" | | 7 | "She hadn't been Laila in" | | 8 | "Rory held the door like" | | 9 | "Rain hissed against the window" | | 10 | "She started to push the" | | 11 | "His cane moved—not threatening, just" | | 12 | "Ptolemy wound between her ankles," | | 13 | "The words sat between them." | | 14 | "She should close the door." | | 15 | "She should tell him to" | | 16 | "She should absolutely not let" | | 17 | "His jaw tightened." | | 18 | "A muscle ticked beneath the" | | 19 | "That was new." |
| | ratio | 0.881 | |
| 0.00% | Subordinate conjunction sentence starts | Target: ≥2% sentences starting with a subordinating conjunction | | subConjCount | 0 | | totalSentences | 84 | | matches | (empty) | | ratio | 0 | |
| 43.65% | Technical jargon density | Target: ≤6% sentences with technical-jargon patterns | | analyzedSentences | 36 | | technicalSentenceCount | 5 | | matches | | 0 | "He just stood there, dripping, watching her with that mismatched gaze that had always made her feel seen in ways she didn’t want to be." | | 1 | "The kind of gravity that made you aware of every inch of air between you." | | 2 | "A half-empty mug of tea that had gone cold hours ago." | | 3 | "His cane tapped once against the floorboards, a sound she remembered from a hundred nights in his office, pacing while he thought, while she watched the way his…" | | 4 | "She remembered the way he’d said her name—her real name—the first time he’d trusted her with a job that mattered." |
| |
| 100.00% | Useless dialogue additions | Target: ≤5% dialogue tags with trailing filler fragments | | totalTags | 20 | | uselessAdditionCount | 0 | | matches | (empty) | |
| 100.00% | Dialogue tag variety (said vs. fancy) | Target: ≤10% fancy dialogue tags | | totalTags | 15 | | fancyCount | 1 | | fancyTags | | | dialogueSentences | 64 | | tagDensity | 0.234 | | leniency | 0.469 | | rawRatio | 0.067 | | effectiveRatio | 0.031 | |