| 100.00% | Adverbs in dialogue tags | Target: ≤10% dialogue tags with adverbs | | totalTags | 19 | | adverbTagCount | 1 | | adverbTags | | 0 | "she said finally [finally]" |
| | dialogueSentences | 32 | | tagDensity | 0.594 | | leniency | 1 | | rawRatio | 0.053 | | effectiveRatio | 0.053 | |
| 91.13% | AI-ism adverb frequency | Target: <2% AI-ism adverbs (58 tracked) | | wordCount | 1128 | | 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) | |
| 82.27% | AI-ism word frequency | Target: <2% AI-ism words (290 tracked) | | wordCount | 1128 | | totalAiIsms | 4 | | found | | | highlights | | 0 | "silence" | | 1 | "absolutely" | | 2 | "tension" |
| |
| 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 | 40 | | matches | (empty) | |
| 35.71% | Filter word density | Target: ≤3% sentences with filter/hedge words | | filterCount | 1 | | hedgeCount | 2 | | narrationSentences | 40 | | filterMatches | | | hedgeMatches | | 0 | "tended to" | | 1 | "managed to" |
| |
| 100.00% | Gibberish response detection | Target: ≤1% gibberish-like sentences (hard fail if a sentence exceeds 800 words) | | analyzedSentences | 52 | | gibberishSentences | 0 | | adjustedGibberishSentences | 0 | | longSentenceCount | 0 | | runOnParagraphCount | 0 | | giantParagraphCount | 0 | | wordSaladCount | 0 | | repetitionLoopCount | 0 | | controlTokenCount | 0 | | repeatedSegmentCount | 0 | | maxSentenceWordsSeen | 71 | | ratio | 0 | | matches | (empty) | |
| 100.00% | Markdown formatting overuse | Target: ≤5% words in markdown formatting | | markdownSpans | 1 | | markdownWords | 1 | | totalWords | 1126 | | ratio | 0.001 | | matches | | |
| 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 | 15 | | wordCount | 778 | | uniqueNames | 9 | | maxNameDensity | 0.64 | | worstName | "Rory" | | maxWindowNameDensity | 1.5 | | worstWindowName | "Rory" | | discoveredNames | | Rory | 5 | | Brick | 1 | | Lane | 1 | | Moreau | 1 | | Ptolemy | 1 | | Eva | 2 | | Lucien | 2 | | French | 1 | | London | 1 |
| | persons | | 0 | "Rory" | | 1 | "Moreau" | | 2 | "Eva" | | 3 | "Lucien" |
| | places | | | globalScore | 1 | | windowScore | 1 | |
| 0.00% | Narrator intent-glossing | Target: ≤2% narration sentences with intent-glossing patterns | | analyzedSentences | 27 | | glossingSentenceCount | 2 | | matches | | 0 | "seemed smaller instantly, the towers of Eva's books and scrolls crowding closer, the air thick with the smell of turmeric drifting up from the curry house below and, underneath it, the clean cedar-and-smoke scent that was just *him*, unmistakable, unwelcome in the way that only something you missed too much could be unwelcome" | | 1 | "quite let himself hope for" |
| |
| 100.00% | "Not X but Y" pattern overuse | Target: ≤1 "not X but Y" per 1000 words | | totalMatches | 0 | | per1kWords | 0 | | wordCount | 1126 | | matches | (empty) | |
| 100.00% | Overuse of "that" (subordinate clause padding) | Target: ≤2% sentences with "that" clauses | | thatCount | 1 | | totalSentences | 52 | | matches | | |
| 100.00% | Paragraph length variance | Target: CV ≥0.5 for paragraph word counts | | totalParagraphs | 30 | | mean | 37.53 | | std | 25.27 | | cv | 0.673 | | sampleLengths | | 0 | 55 | | 1 | 4 | | 2 | 73 | | 3 | 31 | | 4 | 7 | | 5 | 6 | | 6 | 41 | | 7 | 43 | | 8 | 22 | | 9 | 68 | | 10 | 3 | | 11 | 5 | | 12 | 70 | | 13 | 50 | | 14 | 78 | | 15 | 16 | | 16 | 6 | | 17 | 31 | | 18 | 40 | | 19 | 21 | | 20 | 29 | | 21 | 60 | | 22 | 44 | | 23 | 91 | | 24 | 7 | | 25 | 77 | | 26 | 40 | | 27 | 19 | | 28 | 44 | | 29 | 45 |
| |
| 100.00% | Passive voice overuse | Target: ≤2% passive sentences | | passiveCount | 0 | | totalSentences | 40 | | matches | (empty) | |
| 46.15% | Past progressive (was/were + -ing) overuse | Target: ≤2% past progressive verbs | | pastProgressiveCount | 3 | | totalVerbs | 130 | | matches | | 0 | "was announcing" | | 1 | "was, filling" | | 2 | "was enjoying" |
| |
| 0.00% | Em-dash & semicolon overuse | Target: ≤2% sentences with em-dashes/semicolons | | emDashCount | 2 | | semicolonCount | 1 | | flaggedSentences | 3 | | totalSentences | 52 | | ratio | 0.058 | | matches | | 0 | "The three deadbolts took her longer than usual to work through—Rory's hands weren't quite steady, not since the knock." | | 1 | "She yanked the door open with more force than the moment required, and there he was, filling the narrow doorway the way he filled every room he walked into—too well-dressed for Brick Lane at eleven at night, charcoal suit immaculate despite the drizzle beading on his shoulders, ivory cane hooked over one forearm like an afterthought." | | 2 | "His amber eye caught the hallway light; the black one gave nothing back at all." |
| |
| 89.24% | Purple prose (modifier overload) | Target: <4% adverbs, <2% -ly adverbs, no adj stacking | | wordCount | 784 | | adjectiveStacks | 0 | | stackExamples | (empty) | | adverbCount | 41 | | adverbRatio | 0.05229591836734694 | | lyAdverbCount | 10 | | lyAdverbRatio | 0.012755102040816327 | |
| 100.00% | Repeated phrase echo | Target: ≤20% sentences with echoes (window: 2) | | totalSentences | 52 | | echoCount | 0 | | echoWords | (empty) | |
| 100.00% | Sentence length variance | Target: CV ≥0.4 for sentence word counts | | totalSentences | 52 | | mean | 21.65 | | std | 18.2 | | cv | 0.841 | | sampleLengths | | 0 | 19 | | 1 | 36 | | 2 | 4 | | 3 | 56 | | 4 | 2 | | 5 | 15 | | 6 | 31 | | 7 | 3 | | 8 | 4 | | 9 | 6 | | 10 | 35 | | 11 | 1 | | 12 | 5 | | 13 | 18 | | 14 | 25 | | 15 | 11 | | 16 | 11 | | 17 | 68 | | 18 | 3 | | 19 | 5 | | 20 | 70 | | 21 | 50 | | 22 | 18 | | 23 | 60 | | 24 | 16 | | 25 | 6 | | 26 | 31 | | 27 | 30 | | 28 | 10 | | 29 | 7 | | 30 | 14 | | 31 | 29 | | 32 | 24 | | 33 | 36 | | 34 | 20 | | 35 | 16 | | 36 | 8 | | 37 | 47 | | 38 | 21 | | 39 | 4 | | 40 | 19 | | 41 | 4 | | 42 | 3 | | 43 | 46 | | 44 | 31 | | 45 | 40 | | 46 | 15 | | 47 | 4 | | 48 | 44 | | 49 | 8 |
| |
| 88.46% | Sentence opener variety | Target: ≥60% unique sentence openers | | consecutiveRepeats | 6 | | diversityRatio | 0.6346153846153846 | | totalSentences | 52 | | uniqueOpeners | 33 | |
| 98.04% | Adverb-first sentence starts | Target: ≥3% sentences starting with an adverb | | adverbCount | 1 | | totalSentences | 34 | | matches | | 0 | "Even the cat remembered him." |
| | ratio | 0.029 | |
| 0.00% | Pronoun-first sentence starts | Target: ≤30% sentences starting with a pronoun | | pronounCount | 19 | | totalSentences | 34 | | matches | | 0 | "She knew that knock." | | 1 | "She yanked the door open" | | 2 | "His amber eye caught the" | | 3 | "he said, and her name" | | 4 | "She stopped herself, jaw tight" | | 5 | "he finished for her, quiet" | | 6 | "She waved a hand at" | | 7 | "he said, He tilted his" | | 8 | "He crossed the threshold and" | | 9 | "he asked, glancing around at" | | 10 | "He said it lightly, but" | | 11 | "She crossed her arms, put" | | 12 | "He said it simply, the" | | 13 | "She remembered enough of what" | | 14 | "He didn't finish it" | | 15 | "He didn't have to." | | 16 | "she said, low" | | 17 | "His voice had gone rough" | | 18 | "she said finally, because it" |
| | ratio | 0.559 | |
| 18.82% | Subject-first sentence starts | Target: ≤72% sentences starting with a subject | | subjectCount | 30 | | totalSentences | 34 | | matches | | 0 | "The three deadbolts took her" | | 1 | "She knew that knock." | | 2 | "She yanked the door open" | | 3 | "His amber eye caught the" | | 4 | "he said, and her name" | | 5 | "Ptolemy, Eva's ridiculous cat, chose" | | 6 | "Rory gestured at the door," | | 7 | "She stopped herself, jaw tight" | | 8 | "he finished for her, quiet" | | 9 | "She waved a hand at" | | 10 | "The corner of his mouth" | | 11 | "he said, He tilted his" | | 12 | "Rory exhaled through her nose" | | 13 | "He crossed the threshold and" | | 14 | "he asked, glancing around at" | | 15 | "He said it lightly, but" | | 16 | "She crossed her arms, put" | | 17 | "A lie, and they both" | | 18 | "He said it simply, the" | | 19 | "The anger in her chest" |
| | ratio | 0.882 | |
| 0.00% | Subordinate conjunction sentence starts | Target: ≥2% sentences starting with a subordinating conjunction | | subConjCount | 0 | | totalSentences | 34 | | matches | (empty) | | ratio | 0 | |
| 0.00% | Technical jargon density | Target: ≤6% sentences with technical-jargon patterns | | analyzedSentences | 13 | | technicalSentenceCount | 3 | | matches | | 0 | "Three sharp raps, evenly spaced, the kind that belonged to someone who didn't knock the way most people knocked, who knocked like he was announcing himself to a…" | | 1 | "He crossed the threshold and the flat seemed smaller instantly, the towers of Eva's books and scrolls crowding closer, the air thick with the smell of turmeric …" | | 2 | "But the space between them, thick with turmeric and old hurt and the particular electricity of two people who had never once managed to be careless with each ot…" |
| |
| 46.05% | Useless dialogue additions | Target: ≤5% dialogue tags with trailing filler fragments | | totalTags | 19 | | uselessAdditionCount | 3 | | matches | | 0 | "She stopped, jaw tight" | | 1 | "he finished, quiet" | | 2 | "she said, low" |
| |
| 100.00% | Dialogue tag variety (said vs. fancy) | Target: ≤10% fancy dialogue tags | | totalTags | 8 | | fancyCount | 0 | | fancyTags | (empty) | | dialogueSentences | 32 | | tagDensity | 0.25 | | leniency | 0.5 | | rawRatio | 0 | | effectiveRatio | 0 | |