| 100.00% | Adverbs in dialogue tags | Target: ≤10% dialogue tags with adverbs | | totalTags | 16 | | adverbTagCount | 1 | | adverbTags | | 0 | "she said finally [finally]" |
| | dialogueSentences | 33 | | tagDensity | 0.485 | | leniency | 0.97 | | rawRatio | 0.063 | | effectiveRatio | 0.061 | |
| 70.64% | AI-ism adverb frequency | Target: <2% AI-ism adverbs (58 tracked) | | wordCount | 1192 | | totalAiIsmAdverbs | 7 | | found | | | highlights | | 0 | "precisely" | | 1 | "slowly" | | 2 | "lightly" | | 3 | "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) | |
| 91.61% | AI-ism word frequency | Target: <2% AI-ism words (290 tracked) | | wordCount | 1192 | | totalAiIsms | 2 | | found | | | highlights | | |
| 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 | 55 | | matches | (empty) | |
| 90.91% | Filter word density | Target: ≤3% sentences with filter/hedge words | | filterCount | 2 | | hedgeCount | 0 | | narrationSentences | 55 | | filterMatches | | | hedgeMatches | (empty) | |
| 100.00% | Gibberish response detection | Target: ≤1% gibberish-like sentences (hard fail if a sentence exceeds 800 words) | | analyzedSentences | 72 | | gibberishSentences | 0 | | adjustedGibberishSentences | 0 | | longSentenceCount | 0 | | runOnParagraphCount | 0 | | giantParagraphCount | 0 | | wordSaladCount | 0 | | repetitionLoopCount | 0 | | controlTokenCount | 0 | | repeatedSegmentCount | 0 | | maxSentenceWordsSeen | 59 | | ratio | 0 | | matches | (empty) | |
| 100.00% | Markdown formatting overuse | Target: ≤5% words in markdown formatting | | markdownSpans | 3 | | markdownWords | 6 | | totalWords | 1184 | | ratio | 0.005 | | matches | | 0 | "I counted" | | 1 | "to" | | 2 | "turned to smoke" |
| |
| 100.00% | Missing dialogue indicators (quotation marks) | Target: ≤10% speech attributions without quotation marks | | totalAttributions | 18 | | unquotedAttributions | 0 | | matches | (empty) | |
| 100.00% | Name drop frequency | Target: ≤1.0 per-name mentions per 100 words | | totalMentions | 24 | | wordCount | 717 | | uniqueNames | 7 | | maxNameDensity | 0.98 | | worstName | "Lucien" | | maxWindowNameDensity | 1.5 | | worstWindowName | "Rory" | | discoveredNames | | Rory | 6 | | Eva | 2 | | Moreau | 2 | | Lucien | 7 | | Brick | 2 | | Lane | 2 | | Ptolemy | 3 |
| | persons | | 0 | "Rory" | | 1 | "Eva" | | 2 | "Moreau" | | 3 | "Lucien" | | 4 | "Ptolemy" |
| | places | | | globalScore | 1 | | windowScore | 1 | |
| 0.00% | Narrator intent-glossing | Target: ≤2% narration sentences with intent-glossing patterns | | analyzedSentences | 39 | | glossingSentenceCount | 3 | | matches | | 0 | "looked like he always looked, like someth" | | 1 | "not quite a smile" | | 2 | "smelled like it always did—turmeric and ol" |
| |
| 100.00% | "Not X but Y" pattern overuse | Target: ≤1 "not X but Y" per 1000 words | | totalMatches | 1 | | per1kWords | 0.845 | | wordCount | 1184 | | matches | | 0 | "not to leave, she realized, but because his hands needed something to do" |
| |
| 100.00% | Overuse of "that" (subordinate clause padding) | Target: ≤2% sentences with "that" clauses | | thatCount | 1 | | totalSentences | 72 | | matches | | |
| 100.00% | Paragraph length variance | Target: CV ≥0.5 for paragraph word counts | | totalParagraphs | 34 | | mean | 34.82 | | std | 27.29 | | cv | 0.784 | | sampleLengths | | 0 | 49 | | 1 | 24 | | 2 | 76 | | 3 | 13 | | 4 | 8 | | 5 | 21 | | 6 | 4 | | 7 | 57 | | 8 | 24 | | 9 | 33 | | 10 | 7 | | 11 | 16 | | 12 | 14 | | 13 | 97 | | 14 | 12 | | 15 | 31 | | 16 | 42 | | 17 | 2 | | 18 | 2 | | 19 | 75 | | 20 | 8 | | 21 | 36 | | 22 | 62 | | 23 | 6 | | 24 | 75 | | 25 | 35 | | 26 | 19 | | 27 | 102 | | 28 | 28 | | 29 | 46 | | 30 | 68 | | 31 | 24 | | 32 | 18 | | 33 | 50 |
| |
| 98.88% | Passive voice overuse | Target: ≤2% passive sentences | | passiveCount | 1 | | totalSentences | 55 | | matches | | |
| 0.00% | Past progressive (was/were + -ing) overuse | Target: ≤2% past progressive verbs | | pastProgressiveCount | 5 | | totalVerbs | 139 | | matches | | 0 | "wasn't looking" | | 1 | "was looking" | | 2 | "were rehearsing" | | 3 | "was solving" | | 4 | "was closing" |
| |
| 0.00% | Em-dash & semicolon overuse | Target: ≤2% sentences with em-dashes/semicolons | | emDashCount | 5 | | semicolonCount | 1 | | flaggedSentences | 5 | | totalSentences | 72 | | ratio | 0.069 | | matches | | 0 | "She checked the peephole out of habit—Eva's flat had taught her paranoia the way other places taught patience—and her stomach dropped through the floor." | | 1 | "The amber eye caught the hallway light; the black one swallowed it." | | 2 | "He'd always had an unfair advantage in doorways, Lucien—he knew exactly how to stand in one, how to let the shadow fall just so, how to make an entrance out of simply existing." | | 3 | "The flat smelled like it always did—turmeric and old paper, the curry house below seeping up through the floorboards no matter how many candles Eva burned." | | 4 | "He absorbed that the way he absorbed most hits—very still, very careful, like a man checking himself for blood." |
| |
| 97.53% | Purple prose (modifier overload) | Target: <4% adverbs, <2% -ly adverbs, no adj stacking | | wordCount | 724 | | adjectiveStacks | 0 | | stackExamples | (empty) | | adverbCount | 31 | | adverbRatio | 0.04281767955801105 | | lyAdverbCount | 7 | | lyAdverbRatio | 0.009668508287292817 | |
| 100.00% | Repeated phrase echo | Target: ≤20% sentences with echoes (window: 2) | | totalSentences | 72 | | echoCount | 0 | | echoWords | (empty) | |
| 100.00% | Sentence length variance | Target: CV ≥0.4 for sentence word counts | | totalSentences | 72 | | mean | 16.44 | | std | 12.92 | | cv | 0.785 | | sampleLengths | | 0 | 22 | | 1 | 27 | | 2 | 24 | | 3 | 33 | | 4 | 10 | | 5 | 6 | | 6 | 27 | | 7 | 5 | | 8 | 2 | | 9 | 6 | | 10 | 8 | | 11 | 4 | | 12 | 5 | | 13 | 12 | | 14 | 4 | | 15 | 12 | | 16 | 12 | | 17 | 33 | | 18 | 9 | | 19 | 15 | | 20 | 12 | | 21 | 21 | | 22 | 7 | | 23 | 16 | | 24 | 14 | | 25 | 26 | | 26 | 35 | | 27 | 17 | | 28 | 12 | | 29 | 7 | | 30 | 7 | | 31 | 5 | | 32 | 17 | | 33 | 14 | | 34 | 12 | | 35 | 30 | | 36 | 2 | | 37 | 2 | | 38 | 32 | | 39 | 6 | | 40 | 13 | | 41 | 24 | | 42 | 8 | | 43 | 8 | | 44 | 28 | | 45 | 6 | | 46 | 43 | | 47 | 8 | | 48 | 5 | | 49 | 4 |
| |
| 55.09% | Sentence opener variety | Target: ≥60% unique sentence openers | | consecutiveRepeats | 7 | | diversityRatio | 0.3888888888888889 | | totalSentences | 72 | | uniqueOpeners | 28 | |
| 66.67% | Adverb-first sentence starts | Target: ≥3% sentences starting with an adverb | | adverbCount | 1 | | totalSentences | 50 | | matches | | 0 | "Somewhere below, the curry house" |
| | ratio | 0.02 | |
| 0.00% | Pronoun-first sentence starts | Target: ≤30% sentences starting with a pronoun | | pronounCount | 32 | | totalSentences | 50 | | matches | | 0 | "She checked the peephole out" | | 1 | "His platinum hair had gone" | | 2 | "He wasn't looking at the" | | 3 | "He was looking at his" | | 4 | "She undid the first deadbolt." | | 5 | "Her fingers hesitated on the" | | 6 | "His voice hadn't changed." | | 7 | "She opened the door." | | 8 | "He looked up, and for" | | 9 | "He'd always had an unfair" | | 10 | "she said, which was a" | | 11 | "He looked like he always" | | 12 | "His mouth curved, not quite" | | 13 | "He took it in the" | | 14 | "It used to make her" | | 15 | "she said, arms crossed" | | 16 | "He set the cane against" | | 17 | "She laughed, and it came" | | 18 | "He said it simply, without" | | 19 | "He did charm, misdirection, the" |
| | ratio | 0.64 | |
| 0.00% | Subject-first sentence starts | Target: ≤72% sentences starting with a subject | | subjectCount | 46 | | totalSentences | 50 | | matches | | 0 | "The knock came at half" | | 1 | "Ptolemy lifted his head from" | | 2 | "She checked the peephole out" | | 3 | "Lucien Moreau stood in the" | | 4 | "His platinum hair had gone" | | 5 | "He wasn't looking at the" | | 6 | "He was looking at his" | | 7 | "She undid the first deadbolt." | | 8 | "Her fingers hesitated on the" | | 9 | "His voice hadn't changed." | | 10 | "That was the worst part." | | 11 | "She opened the door." | | 12 | "He looked up, and for" | | 13 | "The amber eye caught the" | | 14 | "He'd always had an unfair" | | 15 | "she said, which was a" | | 16 | "He looked like he always" | | 17 | "His mouth curved, not quite" | | 18 | "Rory stepped back, and hated" | | 19 | "The flat smelled like it" |
| | ratio | 0.92 | |
| 100.00% | Subordinate conjunction sentence starts | Target: ≥2% sentences starting with a subordinating conjunction | | subConjCount | 1 | | totalSentences | 50 | | matches | | | ratio | 0.02 | |
| 80.75% | Technical jargon density | Target: ≤6% sentences with technical-jargon patterns | | analyzedSentences | 23 | | technicalSentenceCount | 2 | | matches | | 0 | "He was looking at his own reflection in the little brass numbers screwed to it, as if he were rehearsing something and didn't like how it sounded." | | 1 | "But Lucien sat, and Ptolemy climbed into his lap uninvited, and Rory went to put the kettle on with her hands shaking only a little, and outside the rain kept f…" |
| |
| 62.50% | Useless dialogue additions | Target: ≤5% dialogue tags with trailing filler fragments | | totalTags | 16 | | uselessAdditionCount | 2 | | matches | | 0 | "His mouth curved, not quite a smile" | | 1 | "He said, but his jaw was tight" |
| |
| 100.00% | Dialogue tag variety (said vs. fancy) | Target: ≤10% fancy dialogue tags | | totalTags | 12 | | fancyCount | 1 | | fancyTags | | | dialogueSentences | 33 | | tagDensity | 0.364 | | leniency | 0.727 | | rawRatio | 0.083 | | effectiveRatio | 0.061 | |