| 100.00% | Adverbs in dialogue tags | Target: ≤10% dialogue tags with adverbs | | totalTags | 20 | | adverbTagCount | 2 | | adverbTags | | 0 | "She stepped back [back]" | | 1 | "She stepped back [back]" |
| | dialogueSentences | 58 | | tagDensity | 0.345 | | leniency | 0.69 | | rawRatio | 0.1 | | effectiveRatio | 0.069 | |
| 88.72% | AI-ism adverb frequency | Target: <2% AI-ism adverbs (58 tracked) | | wordCount | 1330 | | totalAiIsmAdverbs | 3 | | found | | | highlights | | 0 | "softly" | | 1 | "really" | | 2 | "slowly" |
| |
| 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) | |
| 84.96% | AI-ism word frequency | Target: <2% AI-ism words (290 tracked) | | wordCount | 1330 | | totalAiIsms | 4 | | found | | | highlights | | 0 | "stomach" | | 1 | "traced" | | 2 | "silence" |
| |
| 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 | 63 | | matches | (empty) | |
| 100.00% | Filter word density | Target: ≤3% sentences with filter/hedge words | | filterCount | 0 | | hedgeCount | 0 | | narrationSentences | 63 | | filterMatches | (empty) | | hedgeMatches | (empty) | |
| 100.00% | Gibberish response detection | Target: ≤1% gibberish-like sentences (hard fail if a sentence exceeds 800 words) | | analyzedSentences | 100 | | gibberishSentences | 0 | | adjustedGibberishSentences | 0 | | longSentenceCount | 0 | | runOnParagraphCount | 0 | | giantParagraphCount | 0 | | wordSaladCount | 0 | | repetitionLoopCount | 0 | | controlTokenCount | 0 | | repeatedSegmentCount | 0 | | maxSentenceWordsSeen | 50 | | ratio | 0 | | matches | (empty) | |
| 100.00% | Markdown formatting overuse | Target: ≤5% words in markdown formatting | | markdownSpans | 5 | | markdownWords | 8 | | totalWords | 1324 | | ratio | 0.006 | | matches | | 0 | "he thought about me" | | 1 | "was" | | 2 | "sold" | | 3 | "discharged" | | 4 | "postcard" |
| |
| 100.00% | Missing dialogue indicators (quotation marks) | Target: ≤10% speech attributions without quotation marks | | totalAttributions | 8 | | unquotedAttributions | 0 | | matches | (empty) | |
| 100.00% | Name drop frequency | Target: ≤1.0 per-name mentions per 100 words | | totalMentions | 15 | | wordCount | 736 | | uniqueNames | 7 | | maxNameDensity | 0.41 | | worstName | "Lucien" | | maxWindowNameDensity | 1 | | worstWindowName | "Lucien" | | discoveredNames | | Lucien | 3 | | Moreau | 1 | | Cardiff | 1 | | Water | 2 | | Ptolemy | 3 | | Eva | 2 | | Yeats | 3 |
| | persons | | 0 | "Lucien" | | 1 | "Moreau" | | 2 | "Water" | | 3 | "Ptolemy" | | 4 | "Eva" | | 5 | "Yeats" |
| | places | | | globalScore | 1 | | windowScore | 1 | |
| 91.86% | Narrator intent-glossing | Target: ≤2% narration sentences with intent-glossing patterns | | analyzedSentences | 43 | | glossingSentenceCount | 1 | | matches | | 0 | "sounded like it had been rehearsed on a lo" |
| |
| 100.00% | "Not X but Y" pattern overuse | Target: ≤1 "not X but Y" per 1000 words | | totalMatches | 0 | | per1kWords | 0 | | wordCount | 1324 | | matches | (empty) | |
| 100.00% | Overuse of "that" (subordinate clause padding) | Target: ≤2% sentences with "that" clauses | | thatCount | 2 | | totalSentences | 100 | | matches | | 0 | "hated that some" | | 1 | "traced that scar" |
| |
| 100.00% | Paragraph length variance | Target: CV ≥0.5 for paragraph word counts | | totalParagraphs | 54 | | mean | 24.52 | | std | 20.98 | | cv | 0.856 | | sampleLengths | | 0 | 28 | | 1 | 7 | | 2 | 52 | | 3 | 4 | | 4 | 18 | | 5 | 29 | | 6 | 5 | | 7 | 26 | | 8 | 6 | | 9 | 34 | | 10 | 50 | | 11 | 2 | | 12 | 4 | | 13 | 53 | | 14 | 5 | | 15 | 22 | | 16 | 60 | | 17 | 4 | | 18 | 1 | | 19 | 31 | | 20 | 13 | | 21 | 55 | | 22 | 13 | | 23 | 41 | | 24 | 3 | | 25 | 45 | | 26 | 40 | | 27 | 4 | | 28 | 3 | | 29 | 66 | | 30 | 23 | | 31 | 47 | | 32 | 34 | | 33 | 4 | | 34 | 34 | | 35 | 38 | | 36 | 3 | | 37 | 73 | | 38 | 7 | | 39 | 44 | | 40 | 2 | | 41 | 47 | | 42 | 47 | | 43 | 2 | | 44 | 3 | | 45 | 1 | | 46 | 60 | | 47 | 14 | | 48 | 49 | | 49 | 5 |
| |
| 82.99% | Passive voice overuse | Target: ≤2% passive sentences | | passiveCount | 4 | | totalSentences | 63 | | matches | | 0 | "been held" | | 1 | "been asked" | | 2 | "been rehearsed" | | 3 | "was spent" |
| |
| 47.33% | Past progressive (was/were + -ing) overuse | Target: ≤2% past progressive verbs | | pastProgressiveCount | 3 | | totalVerbs | 131 | | matches | | 0 | "was memorising" | | 1 | "was doing" | | 2 | "was still paying" |
| |
| 28.57% | Em-dash & semicolon overuse | Target: ≤2% sentences with em-dashes/semicolons | | emDashCount | 5 | | semicolonCount | 0 | | flaggedSentences | 4 | | totalSentences | 100 | | ratio | 0.04 | | matches | | 0 | "He ducked the frame and stood dripping on the mat inside while Eva's flat crowded around them—books in towers, scrolls pinned over the radiator, research notes taped to the window glass in overlapping sheets that turned the streetlights amber." | | 1 | "\"You read the first column.\" He unbuttoned his coat, and she saw his knuckles—split across three fingers, scabbed dark, fresh enough that he'd come here straight from whatever did that." | | 2 | "She picked up the Yeats instead, thumbed it open, and found what she knew she'd find—pencil in the margins." | | 3 | "He reached out—slowly, the way you'd reach for something that had bitten you before—and laid two split knuckles over it." |
| |
| 100.00% | Purple prose (modifier overload) | Target: <4% adverbs, <2% -ly adverbs, no adj stacking | | wordCount | 740 | | adjectiveStacks | 0 | | stackExamples | (empty) | | adverbCount | 27 | | adverbRatio | 0.03648648648648649 | | lyAdverbCount | 3 | | lyAdverbRatio | 0.004054054054054054 | |
| 100.00% | Repeated phrase echo | Target: ≤20% sentences with echoes (window: 2) | | totalSentences | 100 | | echoCount | 0 | | echoWords | (empty) | |
| 100.00% | Sentence length variance | Target: CV ≥0.4 for sentence word counts | | totalSentences | 100 | | mean | 13.24 | | std | 11.62 | | cv | 0.878 | | sampleLengths | | 0 | 14 | | 1 | 14 | | 2 | 7 | | 3 | 13 | | 4 | 9 | | 5 | 30 | | 6 | 4 | | 7 | 6 | | 8 | 9 | | 9 | 3 | | 10 | 6 | | 11 | 1 | | 12 | 14 | | 13 | 8 | | 14 | 5 | | 15 | 23 | | 16 | 3 | | 17 | 6 | | 18 | 22 | | 19 | 8 | | 20 | 4 | | 21 | 10 | | 22 | 40 | | 23 | 2 | | 24 | 4 | | 25 | 50 | | 26 | 3 | | 27 | 5 | | 28 | 2 | | 29 | 20 | | 30 | 36 | | 31 | 5 | | 32 | 19 | | 33 | 4 | | 34 | 1 | | 35 | 31 | | 36 | 4 | | 37 | 4 | | 38 | 5 | | 39 | 16 | | 40 | 39 | | 41 | 13 | | 42 | 6 | | 43 | 21 | | 44 | 8 | | 45 | 6 | | 46 | 3 | | 47 | 30 | | 48 | 15 | | 49 | 12 |
| |
| 56.33% | Sentence opener variety | Target: ≥60% unique sentence openers | | consecutiveRepeats | 7 | | diversityRatio | 0.38 | | totalSentences | 100 | | uniqueOpeners | 38 | |
| 55.56% | Adverb-first sentence starts | Target: ≥3% sentences starting with an adverb | | adverbCount | 1 | | totalSentences | 60 | | matches | | 0 | "Somewhere below, a pan clattered." |
| | ratio | 0.017 | |
| 0.00% | Pronoun-first sentence starts | Target: ≤30% sentences starting with a pronoun | | pronounCount | 38 | | totalSentences | 60 | | matches | | 0 | "His charcoal suit had gone" | | 1 | "He raised his other hand" | | 2 | "She knew the spine without" | | 3 | "Her stomach did something she" | | 4 | "He tilted the book toward" | | 5 | "She pushed the door" | | 6 | "His shoe stopped it an" | | 7 | "She looked down at the" | | 8 | "She hated that some traitorous" | | 9 | "Her thumb found the crescent" | | 10 | "His eyes tracked the movement." | | 11 | "He'd traced that scar once," | | 12 | "She glanced past him." | | 13 | "She stepped back and held" | | 14 | "He ducked the frame and" | | 15 | "He did not sit" | | 16 | "He set the Yeats down" | | 17 | "He drew a breath that" | | 18 | "He unbuttoned his coat, and" | | 19 | "Her voice cracked on it," |
| | ratio | 0.633 | |
| 1.67% | Subject-first sentence starts | Target: ≤72% sentences starting with a subject | | subjectCount | 55 | | totalSentences | 60 | | matches | | 0 | "The third deadbolt stuck, the" | | 1 | "Rory cursed it, jammed the" | | 2 | "The door swung open on" | | 3 | "Rain ran off the ends" | | 4 | "His charcoal suit had gone" | | 5 | "The ivory cane stood planted" | | 6 | "He raised his other hand" | | 7 | "She knew the spine without" | | 8 | "The cover had been held" | | 9 | "Her stomach did something she" | | 10 | "A muscle moved in his" | | 11 | "He tilted the book toward" | | 12 | "Water dripped from its corner" | | 13 | "She pushed the door" | | 14 | "His shoe stopped it an" | | 15 | "She looked down at the" | | 16 | "She hated that some traitorous" | | 17 | "Her thumb found the crescent" | | 18 | "His eyes tracked the movement." | | 19 | "He'd traced that scar once," |
| | ratio | 0.917 | |
| 0.00% | Subordinate conjunction sentence starts | Target: ≥2% sentences starting with a subordinating conjunction | | subConjCount | 0 | | totalSentences | 60 | | matches | (empty) | | ratio | 0 | |
| 71.43% | Technical jargon density | Target: ≤6% sentences with technical-jargon patterns | | analyzedSentences | 20 | | technicalSentenceCount | 2 | | matches | | 0 | "He ducked the frame and stood dripping on the mat inside while Eva's flat crowded around them—books in towers, scrolls pinned over the radiator, research notes …" | | 1 | "He reached out—slowly, the way you'd reach for something that had bitten you before—and laid two split knuckles over it." |
| |
| 100.00% | Useless dialogue additions | Target: ≤5% dialogue tags with trailing filler fragments | | totalTags | 20 | | uselessAdditionCount | 1 | | matches | | 0 | "she said, without meaning to" |
| |
| 100.00% | Dialogue tag variety (said vs. fancy) | Target: ≤10% fancy dialogue tags | | totalTags | 3 | | fancyCount | 1 | | fancyTags | | | dialogueSentences | 58 | | tagDensity | 0.052 | | leniency | 0.103 | | rawRatio | 0.333 | | effectiveRatio | 0.034 | |