| 100.00% | Adverbs in dialogue tags | Target: ≤10% dialogue tags with adverbs | | totalTags | 20 | | adverbTagCount | 2 | | adverbTags | | 0 | "His fingers curled once [once]" | | 1 | "His thumb moved once [once]" |
| | dialogueSentences | 62 | | tagDensity | 0.323 | | leniency | 0.645 | | rawRatio | 0.1 | | effectiveRatio | 0.065 | |
| 95.95% | AI-ism adverb frequency | Target: <2% AI-ism adverbs (58 tracked) | | wordCount | 1236 | | 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) | |
| 87.86% | AI-ism word frequency | Target: <2% AI-ism words (290 tracked) | | wordCount | 1236 | | totalAiIsms | 3 | | found | | | highlights | | 0 | "silk" | | 1 | "weight" | | 2 | "glinting" |
| |
| 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 | 54 | | matches | (empty) | |
| 100.00% | Filter word density | Target: ≤3% sentences with filter/hedge words | | filterCount | 0 | | hedgeCount | 1 | | narrationSentences | 54 | | filterMatches | (empty) | | hedgeMatches | | |
| 100.00% | Gibberish response detection | Target: ≤1% gibberish-like sentences (hard fail if a sentence exceeds 800 words) | | analyzedSentences | 96 | | gibberishSentences | 0 | | adjustedGibberishSentences | 0 | | longSentenceCount | 0 | | runOnParagraphCount | 0 | | giantParagraphCount | 0 | | wordSaladCount | 0 | | repetitionLoopCount | 0 | | controlTokenCount | 0 | | repeatedSegmentCount | 0 | | maxSentenceWordsSeen | 54 | | ratio | 0 | | matches | (empty) | |
| 100.00% | Markdown formatting overuse | Target: ≤5% words in markdown formatting | | markdownSpans | 1 | | markdownWords | 1 | | totalWords | 1241 | | ratio | 0.001 | | matches | | |
| 100.00% | Missing dialogue indicators (quotation marks) | Target: ≤10% speech attributions without quotation marks | | totalAttributions | 22 | | unquotedAttributions | 0 | | matches | (empty) | |
| 100.00% | Name drop frequency | Target: ≤1.0 per-name mentions per 100 words | | totalMentions | 15 | | wordCount | 781 | | uniqueNames | 10 | | maxNameDensity | 0.38 | | worstName | "Rory" | | maxWindowNameDensity | 1 | | worstWindowName | "Rory" | | discoveredNames | | Rory | 3 | | Moreau | 1 | | Ptolemy | 1 | | Eva | 3 | | Slid | 1 | | Brick | 1 | | Lane | 1 | | Didn | 1 | | Lucien | 2 | | Camden | 1 |
| | persons | | 0 | "Rory" | | 1 | "Moreau" | | 2 | "Ptolemy" | | 3 | "Eva" | | 4 | "Lucien" |
| | places | | | globalScore | 1 | | windowScore | 1 | |
| 100.00% | Narrator intent-glossing | Target: ≤2% narration sentences with intent-glossing patterns | | analyzedSentences | 34 | | glossingSentenceCount | 0 | | matches | (empty) | |
| 100.00% | "Not X but Y" pattern overuse | Target: ≤1 "not X but Y" per 1000 words | | totalMatches | 0 | | per1kWords | 0 | | wordCount | 1241 | | matches | (empty) | |
| 100.00% | Overuse of "that" (subordinate clause padding) | Target: ≤2% sentences with "that" clauses | | thatCount | 1 | | totalSentences | 96 | | matches | | |
| 100.00% | Paragraph length variance | Target: CV ≥0.5 for paragraph word counts | | totalParagraphs | 62 | | mean | 20.02 | | std | 19.18 | | cv | 0.958 | | sampleLengths | | 0 | 25 | | 1 | 56 | | 2 | 3 | | 3 | 12 | | 4 | 3 | | 5 | 29 | | 6 | 35 | | 7 | 6 | | 8 | 34 | | 9 | 3 | | 10 | 43 | | 11 | 4 | | 12 | 51 | | 13 | 57 | | 14 | 2 | | 15 | 1 | | 16 | 31 | | 17 | 34 | | 18 | 1 | | 19 | 6 | | 20 | 8 | | 21 | 44 | | 22 | 10 | | 23 | 39 | | 24 | 32 | | 25 | 40 | | 26 | 6 | | 27 | 4 | | 28 | 4 | | 29 | 46 | | 30 | 12 | | 31 | 2 | | 32 | 5 | | 33 | 10 | | 34 | 55 | | 35 | 6 | | 36 | 1 | | 37 | 20 | | 38 | 2 | | 39 | 1 | | 40 | 53 | | 41 | 21 | | 42 | 8 | | 43 | 29 | | 44 | 8 | | 45 | 4 | | 46 | 5 | | 47 | 35 | | 48 | 53 | | 49 | 7 |
| |
| 98.77% | Passive voice overuse | Target: ≤2% passive sentences | | passiveCount | 1 | | totalSentences | 54 | | matches | | |
| 100.00% | Past progressive (was/were + -ing) overuse | Target: ≤2% past progressive verbs | | pastProgressiveCount | 2 | | totalVerbs | 135 | | matches | | 0 | "was frying" | | 1 | "was lying" |
| |
| 53.57% | Em-dash & semicolon overuse | Target: ≤2% sentences with em-dashes/semicolons | | emDashCount | 5 | | semicolonCount | 0 | | flaggedSentences | 3 | | totalSentences | 96 | | ratio | 0.031 | | matches | | 0 | "He came in slower than he wanted to — she watched him manage it, the small negotiation between his ribs and the doorframe — and Ptolemy shot out from under Eva's research table, took one look at him, and vanished into the bedroom." | | 1 | "Already knitting at the edges — the demon half doing its work — but slowly, and dirty, and he'd let it go too long." | | 2 | "\"You're negotiating.\" She pressed the fresh pad against his side and held it, palm flat, the heat of him coming through the cotton, and his hand came up and closed over her wrist — over the small crescent scar, the way he had once before, in a stairwell in Camden, before anything had been ruined." |
| |
| 100.00% | Purple prose (modifier overload) | Target: <4% adverbs, <2% -ly adverbs, no adj stacking | | wordCount | 780 | | adjectiveStacks | 0 | | stackExamples | (empty) | | adverbCount | 28 | | adverbRatio | 0.035897435897435895 | | lyAdverbCount | 4 | | lyAdverbRatio | 0.005128205128205128 | |
| 100.00% | Repeated phrase echo | Target: ≤20% sentences with echoes (window: 2) | | totalSentences | 96 | | echoCount | 0 | | echoWords | (empty) | |
| 100.00% | Sentence length variance | Target: CV ≥0.4 for sentence word counts | | totalSentences | 96 | | mean | 12.93 | | std | 11.61 | | cv | 0.898 | | sampleLengths | | 0 | 25 | | 1 | 30 | | 2 | 7 | | 3 | 19 | | 4 | 3 | | 5 | 12 | | 6 | 3 | | 7 | 15 | | 8 | 14 | | 9 | 7 | | 10 | 28 | | 11 | 6 | | 12 | 20 | | 13 | 14 | | 14 | 3 | | 15 | 43 | | 16 | 4 | | 17 | 10 | | 18 | 25 | | 19 | 16 | | 20 | 27 | | 21 | 7 | | 22 | 23 | | 23 | 2 | | 24 | 1 | | 25 | 13 | | 26 | 18 | | 27 | 3 | | 28 | 8 | | 29 | 23 | | 30 | 1 | | 31 | 6 | | 32 | 8 | | 33 | 22 | | 34 | 22 | | 35 | 10 | | 36 | 23 | | 37 | 16 | | 38 | 32 | | 39 | 16 | | 40 | 24 | | 41 | 6 | | 42 | 4 | | 43 | 4 | | 44 | 35 | | 45 | 2 | | 46 | 3 | | 47 | 6 | | 48 | 9 | | 49 | 3 |
| |
| 71.18% | Sentence opener variety | Target: ≥60% unique sentence openers | | consecutiveRepeats | 10 | | diversityRatio | 0.4895833333333333 | | totalSentences | 96 | | uniqueOpeners | 47 | |
| 100.00% | Adverb-first sentence starts | Target: ≥3% sentences starting with an adverb | | adverbCount | 4 | | totalSentences | 48 | | matches | | 0 | "Then, one-handed, he shrugged out" | | 1 | "Already knitting at the edges" | | 2 | "Just rested there." | | 3 | "Somewhere under the floor a" |
| | ratio | 0.083 | |
| 0.00% | Pronoun-first sentence starts | Target: ≤30% sentences starting with a pronoun | | pronounCount | 30 | | totalSentences | 48 | | matches | | 0 | "His right pressed a folded" | | 1 | "He said it like a" | | 2 | "He tipped his head toward" | | 3 | "She didn't move out of" | | 4 | "His mismatched eyes came up," | | 5 | "She stepped back." | | 6 | "He came in slower than" | | 7 | "She shut the door" | | 8 | "He lowered himself onto the" | | 9 | "She'd learned that much in" | | 10 | "She went to the kitchen," | | 11 | "She set the tin on" | | 12 | "He was quiet." | | 13 | "He folded the jacket over" | | 14 | "She knelt on the floorboards" | | 15 | "His breath hitched when she" | | 16 | "She kept her eyes on" | | 17 | "She set the gauze down." | | 18 | "He turned his head" | | 19 | "She stood up" |
| | ratio | 0.625 | |
| 53.75% | Subject-first sentence starts | Target: ≤72% sentences starting with a subject | | subjectCount | 39 | | totalSentences | 48 | | matches | | 0 | "The third deadbolt stuck, the" | | 1 | "Lucien Moreau stood in the" | | 2 | "The cane hung from his" | | 3 | "His right pressed a folded" | | 4 | "He said it like a" | | 5 | "He tipped his head toward" | | 6 | "She didn't move out of" | | 7 | "His mismatched eyes came up," | | 8 | "She stepped back." | | 9 | "He came in slower than" | | 10 | "She shut the door" | | 11 | "He lowered himself onto the" | | 12 | "She'd learned that much in" | | 13 | "She went to the kitchen," | | 14 | "She set the tin on" | | 15 | "He was quiet." | | 16 | "Rain ticked at the window" | | 17 | "He folded the jacket over" | | 18 | "Something moved at the corner" | | 19 | "She knelt on the floorboards" |
| | ratio | 0.813 | |
| 0.00% | Subordinate conjunction sentence starts | Target: ≥2% sentences starting with a subordinating conjunction | | subConjCount | 0 | | totalSentences | 48 | | matches | (empty) | | ratio | 0 | |
| 100.00% | Technical jargon density | Target: ≤6% sentences with technical-jargon patterns | | analyzedSentences | 18 | | technicalSentenceCount | 1 | | matches | | 0 | "Below them, the curry house was frying onions in ghee, and the smell climbed the stairwell and settled over both of them like a blanket that wasn't theirs." |
| |
| 100.00% | Useless dialogue additions | Target: ≤5% dialogue tags with trailing filler fragments | | totalTags | 20 | | uselessAdditionCount | 1 | | matches | | |
| 100.00% | Dialogue tag variety (said vs. fancy) | Target: ≤10% fancy dialogue tags | | totalTags | 9 | | fancyCount | 2 | | fancyTags | | 0 | "His breath hitched (hitch)" | | 1 | "She pressed (press)" |
| | dialogueSentences | 62 | | tagDensity | 0.145 | | leniency | 0.29 | | rawRatio | 0.222 | | effectiveRatio | 0.065 | |