| 100.00% | Adverbs in dialogue tags | Target: ≤10% dialogue tags with adverbs | | totalTags | 13 | | adverbTagCount | 1 | | adverbTags | | 0 | "His voice softened just [just]" |
| | dialogueSentences | 59 | | tagDensity | 0.22 | | leniency | 0.441 | | rawRatio | 0.077 | | effectiveRatio | 0.034 | |
| 90.12% | AI-ism adverb frequency | Target: <2% AI-ism adverbs (58 tracked) | | wordCount | 1012 | | totalAiIsmAdverbs | 2 | | 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) | |
| 80.24% | AI-ism word frequency | Target: <2% AI-ism words (290 tracked) | | wordCount | 1012 | | totalAiIsms | 4 | | found | | | highlights | | 0 | "stomach" | | 1 | "traced" | | 2 | "weight" | | 3 | "comfortable" |
| |
| 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 | 51 | | matches | (empty) | |
| 100.00% | Filter word density | Target: ≤3% sentences with filter/hedge words | | filterCount | 1 | | hedgeCount | 0 | | narrationSentences | 51 | | filterMatches | | | hedgeMatches | (empty) | |
| 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 | 0 | | markdownWords | 0 | | totalWords | 1017 | | ratio | 0 | | matches | (empty) | |
| 100.00% | Missing dialogue indicators (quotation marks) | Target: ≤10% speech attributions without quotation marks | | totalAttributions | 20 | | unquotedAttributions | 0 | | matches | (empty) | |
| 100.00% | Name drop frequency | Target: ≤1.0 per-name mentions per 100 words | | totalMentions | 16 | | wordCount | 555 | | uniqueNames | 7 | | maxNameDensity | 0.72 | | worstName | "Rory" | | maxWindowNameDensity | 1.5 | | worstWindowName | "Rory" | | discoveredNames | | Rory | 4 | | East | 1 | | London | 1 | | Eva | 1 | | Spitalfields | 1 | | Lucien | 4 | | Ptolemy | 4 |
| | persons | | 0 | "Rory" | | 1 | "Eva" | | 2 | "Lucien" | | 3 | "Ptolemy" |
| | places | | 0 | "East" | | 1 | "London" | | 2 | "Spitalfields" |
| | globalScore | 1 | | windowScore | 1 | |
| 100.00% | Narrator intent-glossing | Target: ≤2% narration sentences with intent-glossing patterns | | analyzedSentences | 26 | | 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 | 1017 | | matches | (empty) | |
| 100.00% | Overuse of "that" (subordinate clause padding) | Target: ≤2% sentences with "that" clauses | | thatCount | 0 | | totalSentences | 96 | | matches | (empty) | |
| 100.00% | Paragraph length variance | Target: CV ≥0.5 for paragraph word counts | | totalParagraphs | 63 | | mean | 16.14 | | std | 16.49 | | cv | 1.021 | | sampleLengths | | 0 | 26 | | 1 | 3 | | 2 | 53 | | 3 | 7 | | 4 | 28 | | 5 | 27 | | 6 | 3 | | 7 | 13 | | 8 | 4 | | 9 | 8 | | 10 | 30 | | 11 | 44 | | 12 | 56 | | 13 | 3 | | 14 | 59 | | 15 | 6 | | 16 | 1 | | 17 | 2 | | 18 | 23 | | 19 | 3 | | 20 | 1 | | 21 | 33 | | 22 | 9 | | 23 | 27 | | 24 | 36 | | 25 | 8 | | 26 | 10 | | 27 | 1 | | 28 | 12 | | 29 | 38 | | 30 | 1 | | 31 | 10 | | 32 | 1 | | 33 | 5 | | 34 | 23 | | 35 | 59 | | 36 | 16 | | 37 | 5 | | 38 | 2 | | 39 | 18 | | 40 | 7 | | 41 | 1 | | 42 | 4 | | 43 | 1 | | 44 | 19 | | 45 | 13 | | 46 | 18 | | 47 | 6 | | 48 | 7 | | 49 | 4 |
| |
| 98.38% | Passive voice overuse | Target: ≤2% passive sentences | | passiveCount | 1 | | totalSentences | 51 | | matches | | |
| 0.00% | Past progressive (was/were + -ing) overuse | Target: ≤2% past progressive verbs | | pastProgressiveCount | 4 | | totalVerbs | 101 | | matches | | 0 | "was actively trying" | | 1 | "weren't walking" | | 2 | "were holding" | | 3 | "was purring" |
| |
| 23.81% | Em-dash & semicolon overuse | Target: ≤2% sentences with em-dashes/semicolons | | emDashCount | 4 | | semicolonCount | 1 | | flaggedSentences | 4 | | totalSentences | 96 | | ratio | 0.042 | | matches | | 0 | "Lucien stood on the landing like he'd been painted there — charcoal suit immaculate despite the East London drizzle, ivory cane resting against the toe of one polished shoe, one amber eye and one black eye settled on her with the calm of a man who had all the time in the world." | | 1 | "He set the cane against the bookcase by the door — the one gesture that always gave him away as something other than a man — and turned to face her as she worked through the deadbolts again." | | 2 | "The kitchen was six steps from the door; he filled it without meaning to." | | 3 | "The jumper was too warm suddenly and the flat was too small and Ptolemy was purring like a small engine and she could smell the rain on Lucien's coat, the faint cedar of whatever absurd cologne he wore, and she had been doing fine, she had been, she had been almost fine, and now—" |
| |
| 100.00% | Purple prose (modifier overload) | Target: <4% adverbs, <2% -ly adverbs, no adj stacking | | wordCount | 552 | | adjectiveStacks | 0 | | stackExamples | (empty) | | adverbCount | 22 | | adverbRatio | 0.03985507246376811 | | lyAdverbCount | 5 | | lyAdverbRatio | 0.009057971014492754 | |
| 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 | 10.59 | | std | 11.03 | | cv | 1.041 | | sampleLengths | | 0 | 26 | | 1 | 3 | | 2 | 53 | | 3 | 7 | | 4 | 8 | | 5 | 20 | | 6 | 3 | | 7 | 24 | | 8 | 3 | | 9 | 13 | | 10 | 4 | | 11 | 8 | | 12 | 19 | | 13 | 11 | | 14 | 17 | | 15 | 20 | | 16 | 7 | | 17 | 8 | | 18 | 19 | | 19 | 3 | | 20 | 26 | | 21 | 3 | | 22 | 13 | | 23 | 4 | | 24 | 4 | | 25 | 38 | | 26 | 6 | | 27 | 1 | | 28 | 2 | | 29 | 3 | | 30 | 14 | | 31 | 6 | | 32 | 3 | | 33 | 1 | | 34 | 9 | | 35 | 13 | | 36 | 11 | | 37 | 8 | | 38 | 1 | | 39 | 27 | | 40 | 3 | | 41 | 6 | | 42 | 27 | | 43 | 8 | | 44 | 10 | | 45 | 1 | | 46 | 12 | | 47 | 5 | | 48 | 1 | | 49 | 32 |
| |
| 69.79% | Sentence opener variety | Target: ≥60% unique sentence openers | | consecutiveRepeats | 8 | | diversityRatio | 0.46875 | | totalSentences | 96 | | uniqueOpeners | 45 | |
| 0.00% | Adverb-first sentence starts | Target: ≥3% sentences starting with an adverb | | adverbCount | 0 | | totalSentences | 42 | | matches | (empty) | | ratio | 0 | |
| 10.48% | Pronoun-first sentence starts | Target: ≤30% sentences starting with a pronoun | | pronounCount | 22 | | totalSentences | 42 | | matches | | 0 | "His mouth tilted" | | 1 | "She didn't move." | | 2 | "He didn't push past her," | | 3 | "He simply waited, the picture" | | 4 | "She hated when he used" | | 5 | "It landed somewhere low in" | | 6 | "She stepped aside." | | 7 | "He knew the flat." | | 8 | "He'd been here before." | | 9 | "He set the cane against" | | 10 | "He slid his hands into" | | 11 | "Her breath caught before she" | | 12 | "She turned away." | | 13 | "She looked at him then." | | 14 | "He said it evenly, the" | | 15 | "He took one step, not" | | 16 | "She pressed her palms harder" | | 17 | "His voice softened, just a" | | 18 | "She wouldn't look at him." | | 19 | "He was quiet." |
| | ratio | 0.524 | |
| 7.62% | Subject-first sentence starts | Target: ≤72% sentences starting with a subject | | subjectCount | 38 | | totalSentences | 42 | | matches | | 0 | "The third deadbolt gave with" | | 1 | "The speech died." | | 2 | "Lucien stood on the landing" | | 3 | "His mouth tilted" | | 4 | "She didn't move." | | 5 | "Ptolemy wound between her ankles," | | 6 | "Rory folded her arms across" | | 7 | "He didn't push past her," | | 8 | "He simply waited, the picture" | | 9 | "She hated when he used" | | 10 | "It landed somewhere low in" | | 11 | "She stepped aside." | | 12 | "Lucien moved past her with" | | 13 | "He knew the flat." | | 14 | "He'd been here before." | | 15 | "He set the cane against" | | 16 | "The kitchen was six steps" | | 17 | "He slid his hands into" | | 18 | "The black eye caught the" | | 19 | "Her breath caught before she" |
| | ratio | 0.905 | |
| 0.00% | Subordinate conjunction sentence starts | Target: ≥2% sentences starting with a subordinating conjunction | | subConjCount | 0 | | totalSentences | 42 | | matches | (empty) | | ratio | 0 | |
| 0.00% | Technical jargon density | Target: ≤6% sentences with technical-jargon patterns | | analyzedSentences | 15 | | technicalSentenceCount | 3 | | matches | | 0 | "Lucien stood on the landing like he'd been painted there — charcoal suit immaculate despite the East London drizzle, ivory cane resting against the toe of one p…" | | 1 | "Ptolemy wound between her ankles, purring at the new arrival with the traitorous enthusiasm cats reserved for people one was actively trying to dislike." | | 2 | "The suit, the cane, the careful, careful distance he kept with the whole of his body, as though he were holding something in check that he did not trust to let …" |
| |
| 86.54% | Useless dialogue additions | Target: ≤5% dialogue tags with trailing filler fragments | | totalTags | 13 | | uselessAdditionCount | 1 | | matches | | |
| 100.00% | Dialogue tag variety (said vs. fancy) | Target: ≤10% fancy dialogue tags | | totalTags | 6 | | fancyCount | 0 | | fancyTags | (empty) | | dialogueSentences | 59 | | tagDensity | 0.102 | | leniency | 0.203 | | rawRatio | 0 | | effectiveRatio | 0 | |