| 100.00% | Adverbs in dialogue tags | Target: ≤10% dialogue tags with adverbs | | totalTags | 14 | | adverbTagCount | 1 | | adverbTags | | | dialogueSentences | 54 | | tagDensity | 0.259 | | leniency | 0.519 | | rawRatio | 0.071 | | effectiveRatio | 0.037 | |
| 95.79% | AI-ism adverb frequency | Target: <2% AI-ism adverbs (58 tracked) | | wordCount | 1187 | | totalAiIsmAdverbs | 1 | | 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) | |
| 91.58% | AI-ism word frequency | Target: <2% AI-ism words (290 tracked) | | wordCount | 1187 | | totalAiIsms | 2 | | found | | | highlights | | |
| 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 | 41 | | matches | (empty) | |
| 100.00% | Filter word density | Target: ≤3% sentences with filter/hedge words | | filterCount | 0 | | hedgeCount | 0 | | narrationSentences | 41 | | filterMatches | (empty) | | hedgeMatches | (empty) | |
| 100.00% | Gibberish response detection | Target: ≤1% gibberish-like sentences (hard fail if a sentence exceeds 800 words) | | analyzedSentences | 79 | | gibberishSentences | 0 | | adjustedGibberishSentences | 0 | | longSentenceCount | 0 | | runOnParagraphCount | 0 | | giantParagraphCount | 0 | | wordSaladCount | 0 | | repetitionLoopCount | 0 | | controlTokenCount | 0 | | repeatedSegmentCount | 0 | | maxSentenceWordsSeen | 67 | | ratio | 0 | | matches | (empty) | |
| 100.00% | Markdown formatting overuse | Target: ≤5% words in markdown formatting | | markdownSpans | 0 | | markdownWords | 0 | | totalWords | 1199 | | ratio | 0 | | matches | (empty) | |
| 100.00% | Missing dialogue indicators (quotation marks) | Target: ≤10% speech attributions without quotation marks | | totalAttributions | 9 | | unquotedAttributions | 0 | | matches | (empty) | |
| 100.00% | Name drop frequency | Target: ≤1.0 per-name mentions per 100 words | | totalMentions | 15 | | wordCount | 549 | | uniqueNames | 9 | | maxNameDensity | 0.73 | | worstName | "Ptolemy" | | maxWindowNameDensity | 1.5 | | worstWindowName | "Ptolemy" | | discoveredNames | | Rory | 2 | | Moreau | 1 | | Lucien | 2 | | Ptolemy | 4 | | Correct | 1 | | Eva | 2 | | Brick | 1 | | Lane | 1 | | French | 1 |
| | persons | | 0 | "Rory" | | 1 | "Moreau" | | 2 | "Lucien" | | 3 | "Ptolemy" | | 4 | "Eva" |
| | places | | | globalScore | 1 | | windowScore | 1 | |
| 60.71% | Narrator intent-glossing | Target: ≤2% narration sentences with intent-glossing patterns | | analyzedSentences | 28 | | glossingSentenceCount | 1 | | matches | | 0 | "sounded like knuckles and nothing else" |
| |
| 100.00% | "Not X but Y" pattern overuse | Target: ≤1 "not X but Y" per 1000 words | | totalMatches | 0 | | per1kWords | 0 | | wordCount | 1199 | | matches | (empty) | |
| 100.00% | Overuse of "that" (subordinate clause padding) | Target: ≤2% sentences with "that" clauses | | thatCount | 1 | | totalSentences | 79 | | matches | | |
| 100.00% | Paragraph length variance | Target: CV ≥0.5 for paragraph word counts | | totalParagraphs | 49 | | mean | 24.47 | | std | 25.88 | | cv | 1.058 | | sampleLengths | | 0 | 34 | | 1 | 40 | | 2 | 14 | | 3 | 3 | | 4 | 30 | | 5 | 5 | | 6 | 7 | | 7 | 16 | | 8 | 3 | | 9 | 3 | | 10 | 52 | | 11 | 13 | | 12 | 41 | | 13 | 63 | | 14 | 7 | | 15 | 3 | | 16 | 19 | | 17 | 96 | | 18 | 23 | | 19 | 72 | | 20 | 3 | | 21 | 3 | | 22 | 34 | | 23 | 74 | | 24 | 14 | | 25 | 82 | | 26 | 5 | | 27 | 1 | | 28 | 16 | | 29 | 1 | | 30 | 5 | | 31 | 67 | | 32 | 75 | | 33 | 11 | | 34 | 19 | | 35 | 8 | | 36 | 5 | | 37 | 36 | | 38 | 44 | | 39 | 3 | | 40 | 3 | | 41 | 2 | | 42 | 68 | | 43 | 17 | | 44 | 6 | | 45 | 1 | | 46 | 30 | | 47 | 2 | | 48 | 20 |
| |
| 96.71% | Passive voice overuse | Target: ≤2% passive sentences | | passiveCount | 1 | | totalSentences | 41 | | matches | | |
| 100.00% | Past progressive (was/were + -ing) overuse | Target: ≤2% past progressive verbs | | pastProgressiveCount | 0 | | totalVerbs | 93 | | matches | (empty) | |
| 0.00% | Em-dash & semicolon overuse | Target: ≤2% sentences with em-dashes/semicolons | | emDashCount | 6 | | semicolonCount | 1 | | flaggedSentences | 5 | | totalSentences | 79 | | ratio | 0.063 | | matches | | 0 | "Eva's rule — check twice, trust nothing — and Rory threw it out the window for a knock that sounded like knuckles and nothing else." | | 1 | "One eye caught the hall light, amber as lamplight through whiskey; the other swallowed it whole." | | 2 | "She moved to close it and he was faster — not grabbing, just resting two fingers on the page, and the sight of those fingers on that paper lit something in her chest that had been banked coals for thirteen months." | | 3 | "She didn't step back — that was the failure, or the victory, she couldn't tell which." | | 4 | "She reached for his wrist — the left, where his pulse sat under the French cuff — and turned her hand so the crescent scar on her own wrist lay against his skin." |
| |
| 100.00% | Purple prose (modifier overload) | Target: <4% adverbs, <2% -ly adverbs, no adj stacking | | wordCount | 544 | | adjectiveStacks | 0 | | stackExamples | (empty) | | adverbCount | 13 | | adverbRatio | 0.02389705882352941 | | lyAdverbCount | 1 | | lyAdverbRatio | 0.001838235294117647 | |
| 100.00% | Repeated phrase echo | Target: ≤20% sentences with echoes (window: 2) | | totalSentences | 79 | | echoCount | 0 | | echoWords | (empty) | |
| 100.00% | Sentence length variance | Target: CV ≥0.4 for sentence word counts | | totalSentences | 79 | | mean | 15.18 | | std | 14.85 | | cv | 0.979 | | sampleLengths | | 0 | 9 | | 1 | 25 | | 2 | 17 | | 3 | 7 | | 4 | 16 | | 5 | 14 | | 6 | 3 | | 7 | 12 | | 8 | 18 | | 9 | 5 | | 10 | 7 | | 11 | 7 | | 12 | 9 | | 13 | 3 | | 14 | 3 | | 15 | 12 | | 16 | 40 | | 17 | 13 | | 18 | 20 | | 19 | 21 | | 20 | 16 | | 21 | 6 | | 22 | 41 | | 23 | 5 | | 24 | 2 | | 25 | 3 | | 26 | 14 | | 27 | 5 | | 28 | 26 | | 29 | 55 | | 30 | 15 | | 31 | 10 | | 32 | 13 | | 33 | 68 | | 34 | 4 | | 35 | 3 | | 36 | 3 | | 37 | 5 | | 38 | 16 | | 39 | 13 | | 40 | 5 | | 41 | 11 | | 42 | 58 | | 43 | 6 | | 44 | 8 | | 45 | 34 | | 46 | 48 | | 47 | 5 | | 48 | 1 | | 49 | 16 |
| |
| 61.18% | Sentence opener variety | Target: ≥60% unique sentence openers | | consecutiveRepeats | 5 | | diversityRatio | 0.4050632911392405 | | totalSentences | 79 | | uniqueOpeners | 32 | |
| 0.00% | Adverb-first sentence starts | Target: ≥3% sentences starting with an adverb | | adverbCount | 0 | | totalSentences | 38 | | matches | (empty) | | ratio | 0 | |
| 0.00% | Pronoun-first sentence starts | Target: ≤30% sentences starting with a pronoun | | pronounCount | 23 | | totalSentences | 38 | | matches | | 0 | "She pushed the door" | | 1 | "His cane tip caught the" | | 2 | "She lunged, caught him by" | | 3 | "He set his cane against" | | 4 | "Her fingers dug into Ptolemy's" | | 5 | "She moved to close it" | | 6 | "He looked up" | | 7 | "Her voice came out level," | | 8 | "She snatched the ledger and" | | 9 | "He took off his coat," | | 10 | "She stepped closer" | | 11 | "He turned toward the window." | | 12 | "He turned back" | | 13 | "He crossed the room." | | 14 | "She didn't step back —" | | 15 | "He stopped close enough that" | | 16 | "His voice dropped" | | 17 | "His mouth curved, humorless" | | 18 | "She reached for his wrist" | | 19 | "He went still." |
| | ratio | 0.605 | |
| 25.79% | Subject-first sentence starts | Target: ≤72% sentences starting with a subject | | subjectCount | 33 | | totalSentences | 38 | | matches | | 0 | "The third deadbolt gave before" | | 1 | "Eva's rule — check twice," | | 2 | "Lucien Moreau stood on the" | | 3 | "The ivory cane rested against" | | 4 | "Ptolemy poured off the bookshelf" | | 5 | "Water dripped from his cuff" | | 6 | "She pushed the door" | | 7 | "His cane tip caught the" | | 8 | "Ptolemy chose that moment to" | | 9 | "She lunged, caught him by" | | 10 | "He set his cane against" | | 11 | "Her fingers dug into Ptolemy's" | | 12 | "She moved to close it" | | 13 | "He looked up" | | 14 | "Her voice came out level," | | 15 | "She snatched the ledger and" | | 16 | "He took off his coat," | | 17 | "She stepped closer" | | 18 | "The flat was four meters" | | 19 | "He turned toward the window." |
| | ratio | 0.868 | |
| 0.00% | Subordinate conjunction sentence starts | Target: ≥2% sentences starting with a subordinating conjunction | | subConjCount | 0 | | totalSentences | 38 | | matches | (empty) | | ratio | 0 | |
| 53.57% | Technical jargon density | Target: ≤6% sentences with technical-jargon patterns | | analyzedSentences | 16 | | technicalSentenceCount | 2 | | matches | | 0 | "She lunged, caught him by the scruff, and when she straightened Lucien had crossed the threshold and closed the door behind him, restoring the deadbolts one by …" | | 1 | "She moved to close it and he was faster — not grabbing, just resting two fingers on the page, and the sight of those fingers on that paper lit something in her …" |
| |
| 89.29% | Useless dialogue additions | Target: ≤5% dialogue tags with trailing filler fragments | | totalTags | 14 | | uselessAdditionCount | 1 | | matches | | 0 | "His mouth curved, humorless" |
| |
| 100.00% | Dialogue tag variety (said vs. fancy) | Target: ≤10% fancy dialogue tags | | totalTags | 1 | | fancyCount | 0 | | fancyTags | (empty) | | dialogueSentences | 54 | | tagDensity | 0.019 | | leniency | 0.037 | | rawRatio | 0 | | effectiveRatio | 0 | |