| 100.00% | Adverbs in dialogue tags | Target: ≤10% dialogue tags with adverbs | | totalTags | 19 | | adverbTagCount | 2 | | adverbTags | | 0 | "he said instead [instead]" | | 1 | "she said instead [instead]" |
| | dialogueSentences | 44 | | tagDensity | 0.432 | | leniency | 0.864 | | rawRatio | 0.105 | | effectiveRatio | 0.091 | |
| 100.00% | AI-ism adverb frequency | Target: <2% AI-ism adverbs (58 tracked) | | wordCount | 1024 | | totalAiIsmAdverbs | 0 | | found | (empty) | | highlights | (empty) | |
| 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) | |
| 85.35% | AI-ism word frequency | Target: <2% AI-ism words (290 tracked) | | wordCount | 1024 | | totalAiIsms | 3 | | found | | | highlights | | 0 | "silence" | | 1 | "unreadable" | | 2 | "could feel" |
| |
| 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 | 32 | | matches | (empty) | |
| 98.21% | Filter word density | Target: ≤3% sentences with filter/hedge words | | filterCount | 1 | | hedgeCount | 0 | | narrationSentences | 32 | | filterMatches | | | hedgeMatches | (empty) | |
| 100.00% | Gibberish response detection | Target: ≤1% gibberish-like sentences (hard fail if a sentence exceeds 800 words) | | analyzedSentences | 58 | | gibberishSentences | 0 | | adjustedGibberishSentences | 0 | | longSentenceCount | 0 | | runOnParagraphCount | 0 | | giantParagraphCount | 0 | | wordSaladCount | 0 | | repetitionLoopCount | 0 | | controlTokenCount | 0 | | repeatedSegmentCount | 0 | | maxSentenceWordsSeen | 78 | | ratio | 0 | | matches | (empty) | |
| 100.00% | Markdown formatting overuse | Target: ≤5% words in markdown formatting | | markdownSpans | 0 | | markdownWords | 0 | | totalWords | 1020 | | ratio | 0 | | matches | (empty) | |
| 100.00% | Missing dialogue indicators (quotation marks) | Target: ≤10% speech attributions without quotation marks | | totalAttributions | 20 | | unquotedAttributions | 0 | | matches | (empty) | |
| 84.33% | Name drop frequency | Target: ≤1.0 per-name mentions per 100 words | | totalMentions | 14 | | wordCount | 533 | | uniqueNames | 3 | | maxNameDensity | 1.31 | | worstName | "Rory" | | maxWindowNameDensity | 2 | | worstWindowName | "Rory" | | discoveredNames | | | persons | | | places | (empty) | | globalScore | 0.843 | | windowScore | 1 | |
| 53.85% | Narrator intent-glossing | Target: ≤2% narration sentences with intent-glossing patterns | | analyzedSentences | 26 | | glossingSentenceCount | 1 | | matches | | 0 | "not quite an invitation" |
| |
| 100.00% | "Not X but Y" pattern overuse | Target: ≤1 "not X but Y" per 1000 words | | totalMatches | 0 | | per1kWords | 0 | | wordCount | 1020 | | matches | (empty) | |
| 100.00% | Overuse of "that" (subordinate clause padding) | Target: ≤2% sentences with "that" clauses | | thatCount | 1 | | totalSentences | 58 | | matches | | |
| 100.00% | Paragraph length variance | Target: CV ≥0.5 for paragraph word counts | | totalParagraphs | 37 | | mean | 27.57 | | std | 21.03 | | cv | 0.763 | | sampleLengths | | 0 | 66 | | 1 | 23 | | 2 | 14 | | 3 | 28 | | 4 | 32 | | 5 | 56 | | 6 | 27 | | 7 | 38 | | 8 | 10 | | 9 | 96 | | 10 | 20 | | 11 | 6 | | 12 | 4 | | 13 | 4 | | 14 | 40 | | 15 | 26 | | 16 | 4 | | 17 | 45 | | 18 | 46 | | 19 | 21 | | 20 | 16 | | 21 | 35 | | 22 | 21 | | 23 | 2 | | 24 | 61 | | 25 | 50 | | 26 | 3 | | 27 | 50 | | 28 | 8 | | 29 | 15 | | 30 | 33 | | 31 | 34 | | 32 | 35 | | 33 | 13 | | 34 | 2 | | 35 | 4 | | 36 | 32 |
| |
| 94.30% | Passive voice overuse | Target: ≤2% passive sentences | | passiveCount | 1 | | totalSentences | 32 | | matches | | |
| 100.00% | Past progressive (was/were + -ing) overuse | Target: ≤2% past progressive verbs | | pastProgressiveCount | 0 | | totalVerbs | 100 | | matches | (empty) | |
| 0.00% | Em-dash & semicolon overuse | Target: ≤2% sentences with em-dashes/semicolons | | emDashCount | 3 | | semicolonCount | 0 | | flaggedSentences | 3 | | totalSentences | 58 | | ratio | 0.052 | | matches | | 0 | "She remembered the last time she'd seen him properly—not the glimpses at Silas' bar where he'd nod from across the room like they were strangers who'd once shared a taxi—but the last real conversation, in an alley off Brick Lane, rain coming down exactly like tonight, his hand on her jaw and his mouth an inch from hers before he'd pulled back and said something about complications and walked away like the words cost him nothing." | | 1 | "His jaw tightened, and for a moment the composed fixer slipped, showing something rawer underneath—the demon blood in him rising close to the surface the way it did when he was cornered." | | 2 | "Rory caught his wrist before his hand could drop, holding it there against her cheek, feeling the tremor under his cool skin—the only sign, always, that the composed fixer was as unmoored as she was." |
| |
| 95.23% | Purple prose (modifier overload) | Target: <4% adverbs, <2% -ly adverbs, no adj stacking | | wordCount | 506 | | adjectiveStacks | 0 | | stackExamples | (empty) | | adverbCount | 23 | | adverbRatio | 0.045454545454545456 | | lyAdverbCount | 5 | | lyAdverbRatio | 0.009881422924901186 | |
| 100.00% | Repeated phrase echo | Target: ≤20% sentences with echoes (window: 2) | | totalSentences | 58 | | echoCount | 0 | | echoWords | (empty) | |
| 100.00% | Sentence length variance | Target: CV ≥0.4 for sentence word counts | | totalSentences | 58 | | mean | 17.59 | | std | 14.28 | | cv | 0.812 | | sampleLengths | | 0 | 17 | | 1 | 28 | | 2 | 21 | | 3 | 23 | | 4 | 5 | | 5 | 9 | | 6 | 20 | | 7 | 8 | | 8 | 10 | | 9 | 22 | | 10 | 33 | | 11 | 23 | | 12 | 18 | | 13 | 9 | | 14 | 27 | | 15 | 11 | | 16 | 10 | | 17 | 20 | | 18 | 76 | | 19 | 12 | | 20 | 8 | | 21 | 6 | | 22 | 4 | | 23 | 4 | | 24 | 8 | | 25 | 32 | | 26 | 14 | | 27 | 12 | | 28 | 4 | | 29 | 43 | | 30 | 2 | | 31 | 35 | | 32 | 11 | | 33 | 21 | | 34 | 16 | | 35 | 35 | | 36 | 3 | | 37 | 18 | | 38 | 2 | | 39 | 43 | | 40 | 18 | | 41 | 13 | | 42 | 37 | | 43 | 3 | | 44 | 50 | | 45 | 8 | | 46 | 12 | | 47 | 3 | | 48 | 27 | | 49 | 6 |
| |
| 63.22% | Sentence opener variety | Target: ≥60% unique sentence openers | | consecutiveRepeats | 10 | | diversityRatio | 0.4827586206896552 | | totalSentences | 58 | | uniqueOpeners | 28 | |
| 0.00% | Adverb-first sentence starts | Target: ≥3% sentences starting with an adverb | | adverbCount | 0 | | totalSentences | 28 | | matches | (empty) | | ratio | 0 | |
| 20.00% | Pronoun-first sentence starts | Target: ≤30% sentences starting with a pronoun | | pronounCount | 14 | | totalSentences | 28 | | matches | | 0 | "She undid the first deadbolt," | | 1 | "He tasted the word like" | | 2 | "He didn't answer right away," | | 3 | "She remembered the last time" | | 4 | "he said instead" | | 5 | "His jaw tightened, and for" | | 6 | "he said, voice lower now" | | 7 | "He picked up one of" | | 8 | "He set the scroll down," | | 9 | "He took a step closer," | | 10 | "She stopped herself, the word" | | 11 | "His voice had gone soft," | | 12 | "she said instead, chickening out" | | 13 | "He leaned in, forehead nearly" |
| | ratio | 0.5 | |
| 0.00% | Subject-first sentence starts | Target: ≤72% sentences starting with a subject | | subjectCount | 28 | | totalSentences | 28 | | matches | | 0 | "The knock came three times," | | 1 | "Rory set down the mug" | | 2 | "She undid the first deadbolt," | | 3 | "Lucien stood in the hallway" | | 4 | "Rory kept one hand on" | | 5 | "He tasted the word like" | | 6 | "Rory glanced past him at" | | 7 | "Ptolemy the cat lifted his" | | 8 | "Rory said, closing the door" | | 9 | "Lucien set his cane against" | | 10 | "He didn't answer right away," | | 11 | "She remembered the last time" | | 12 | "he said instead" | | 13 | "That landed the way she" | | 14 | "His jaw tightened, and for" | | 15 | "he said, voice lower now" | | 16 | "He picked up one of" | | 17 | "Rory crossed her arms, aware" | | 18 | "He set the scroll down," | | 19 | "He took a step closer," |
| | ratio | 1 | |
| 0.00% | Subordinate conjunction sentence starts | Target: ≥2% sentences starting with a subordinating conjunction | | subConjCount | 0 | | totalSentences | 28 | | matches | (empty) | | ratio | 0 | |
| 0.00% | Technical jargon density | Target: ≤6% sentences with technical-jargon patterns | | analyzedSentences | 11 | | technicalSentenceCount | 3 | | matches | | 0 | "Lucien stood in the hallway instead, rain darkening the shoulders of his charcoal suit, his cane tapping once against the floorboards like punctuation." | | 1 | "Rory glanced past him at the empty hallway, then stepped back, and he moved through the doorway with that particular grace of his, the kind that made expensive …" | | 2 | "Rory caught his wrist before his hand could drop, holding it there against her cheek, feeling the tremor under his cool skin—the only sign, always, that the com…" |
| |
| 72.37% | Useless dialogue additions | Target: ≤5% dialogue tags with trailing filler fragments | | totalTags | 19 | | uselessAdditionCount | 2 | | matches | | 0 | "Rory kept, not quite an invitation" | | 1 | "he said, voice lower now" |
| |
| 100.00% | Dialogue tag variety (said vs. fancy) | Target: ≤10% fancy dialogue tags | | totalTags | 9 | | fancyCount | 0 | | fancyTags | (empty) | | dialogueSentences | 44 | | tagDensity | 0.205 | | leniency | 0.409 | | rawRatio | 0 | | effectiveRatio | 0 | |