| 100.00% | Adverbs in dialogue tags | Target: ≤10% dialogue tags with adverbs | | totalTags | 17 | | adverbTagCount | 2 | | adverbTags | | 0 | "Rory stepped back [back]" | | 1 | "he said finally [finally]" |
| | dialogueSentences | 47 | | tagDensity | 0.362 | | leniency | 0.723 | | rawRatio | 0.118 | | effectiveRatio | 0.085 | |
| 88.49% | AI-ism adverb frequency | Target: <2% AI-ism adverbs (58 tracked) | | wordCount | 1303 | | totalAiIsmAdverbs | 3 | | 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) | |
| 61.63% | AI-ism word frequency | Target: <2% AI-ism words (290 tracked) | | wordCount | 1303 | | totalAiIsms | 10 | | found | | 0 | | | 1 | | | 2 | | | 3 | | word | "practiced ease" | | count | 1 |
| | 4 | | | 5 | | | 6 | | | 7 | |
| | highlights | | 0 | "stomach" | | 1 | "comfortable" | | 2 | "navigated" | | 3 | "practiced ease" | | 4 | "silence" | | 5 | "measured" | | 6 | "weight" | | 7 | "familiar" |
| |
| 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 | 83 | | matches | (empty) | |
| 100.00% | Filter word density | Target: ≤3% sentences with filter/hedge words | | filterCount | 0 | | hedgeCount | 2 | | narrationSentences | 83 | | filterMatches | (empty) | | hedgeMatches | | |
| 100.00% | Gibberish response detection | Target: ≤1% gibberish-like sentences (hard fail if a sentence exceeds 800 words) | | analyzedSentences | 112 | | gibberishSentences | 0 | | adjustedGibberishSentences | 0 | | longSentenceCount | 0 | | runOnParagraphCount | 0 | | giantParagraphCount | 0 | | wordSaladCount | 0 | | repetitionLoopCount | 0 | | controlTokenCount | 0 | | repeatedSegmentCount | 0 | | maxSentenceWordsSeen | 46 | | ratio | 0 | | matches | (empty) | |
| 100.00% | Markdown formatting overuse | Target: ≤5% words in markdown formatting | | markdownSpans | 3 | | markdownWords | 5 | | totalWords | 1301 | | ratio | 0.004 | | matches | | 0 | "untenable" | | 1 | "better this way" | | 2 | "note" |
| |
| 100.00% | Missing dialogue indicators (quotation marks) | Target: ≤10% speech attributions without quotation marks | | totalAttributions | 14 | | unquotedAttributions | 0 | | matches | (empty) | |
| 83.33% | Name drop frequency | Target: ≤1.0 per-name mentions per 100 words | | totalMentions | 29 | | wordCount | 927 | | uniqueNames | 9 | | maxNameDensity | 0.86 | | worstName | "Lucien" | | maxWindowNameDensity | 2.5 | | worstWindowName | "Lucien" | | discoveredNames | | Eva | 6 | | Ptolemy | 3 | | British | 1 | | Library | 1 | | Moreau | 1 | | Rory | 7 | | Lucien | 8 | | Measured | 1 | | Avaros | 1 |
| | persons | | 0 | "Eva" | | 1 | "Ptolemy" | | 2 | "Moreau" | | 3 | "Rory" | | 4 | "Lucien" |
| | places | | 0 | "British" | | 1 | "Library" | | 2 | "Avaros" |
| | globalScore | 1 | | windowScore | 0.833 | |
| 100.00% | Narrator intent-glossing | Target: ≤2% narration sentences with intent-glossing patterns | | analyzedSentences | 51 | | glossingSentenceCount | 1 | | matches | | |
| 100.00% | "Not X but Y" pattern overuse | Target: ≤1 "not X but Y" per 1000 words | | totalMatches | 0 | | per1kWords | 0 | | wordCount | 1301 | | matches | (empty) | |
| 100.00% | Overuse of "that" (subordinate clause padding) | Target: ≤2% sentences with "that" clauses | | thatCount | 1 | | totalSentences | 112 | | matches | | |
| 100.00% | Paragraph length variance | Target: CV ≥0.5 for paragraph word counts | | totalParagraphs | 53 | | mean | 24.55 | | std | 17.24 | | cv | 0.703 | | sampleLengths | | 0 | 37 | | 1 | 35 | | 2 | 27 | | 3 | 65 | | 4 | 30 | | 5 | 9 | | 6 | 29 | | 7 | 1 | | 8 | 14 | | 9 | 11 | | 10 | 26 | | 11 | 11 | | 12 | 40 | | 13 | 41 | | 14 | 34 | | 15 | 2 | | 16 | 15 | | 17 | 50 | | 18 | 1 | | 19 | 5 | | 20 | 51 | | 21 | 25 | | 22 | 30 | | 23 | 16 | | 24 | 9 | | 25 | 66 | | 26 | 35 | | 27 | 11 | | 28 | 3 | | 29 | 23 | | 30 | 41 | | 31 | 5 | | 32 | 3 | | 33 | 51 | | 34 | 27 | | 35 | 21 | | 36 | 23 | | 37 | 35 | | 38 | 20 | | 39 | 37 | | 40 | 14 | | 41 | 50 | | 42 | 13 | | 43 | 50 | | 44 | 30 | | 45 | 6 | | 46 | 2 | | 47 | 2 | | 48 | 17 | | 49 | 36 |
| |
| 100.00% | Passive voice overuse | Target: ≤2% passive sentences | | passiveCount | 0 | | totalSentences | 83 | | matches | (empty) | |
| 0.00% | Past progressive (was/were + -ing) overuse | Target: ≤2% past progressive verbs | | pastProgressiveCount | 5 | | totalVerbs | 165 | | matches | | 0 | "was standing" | | 1 | "was already moving" | | 2 | "were shaking" | | 3 | "were shaking" | | 4 | "was clearly expecting" |
| |
| 100.00% | Em-dash & semicolon overuse | Target: ≤2% sentences with em-dashes/semicolons | | emDashCount | 2 | | semicolonCount | 0 | | flaggedSentences | 1 | | totalSentences | 112 | | ratio | 0.009 | | matches | | 0 | "His platinum hair caught the weak bulb light, slicked back as always, and even through the distorted fisheye of the peephole she could see the difference in his eyes—one amber, one black—fixed on the door as if he knew precisely where she was standing." |
| |
| 100.00% | Purple prose (modifier overload) | Target: <4% adverbs, <2% -ly adverbs, no adj stacking | | wordCount | 931 | | adjectiveStacks | 0 | | stackExamples | (empty) | | adverbCount | 32 | | adverbRatio | 0.034371643394199784 | | lyAdverbCount | 9 | | lyAdverbRatio | 0.00966702470461869 | |
| 100.00% | Repeated phrase echo | Target: ≤20% sentences with echoes (window: 2) | | totalSentences | 112 | | echoCount | 0 | | echoWords | (empty) | |
| 100.00% | Sentence length variance | Target: CV ≥0.4 for sentence word counts | | totalSentences | 112 | | mean | 11.62 | | std | 9.02 | | cv | 0.776 | | sampleLengths | | 0 | 14 | | 1 | 23 | | 2 | 3 | | 3 | 19 | | 4 | 13 | | 5 | 15 | | 6 | 12 | | 7 | 21 | | 8 | 44 | | 9 | 4 | | 10 | 26 | | 11 | 5 | | 12 | 4 | | 13 | 19 | | 14 | 10 | | 15 | 1 | | 16 | 5 | | 17 | 5 | | 18 | 4 | | 19 | 6 | | 20 | 5 | | 21 | 17 | | 22 | 9 | | 23 | 11 | | 24 | 34 | | 25 | 6 | | 26 | 13 | | 27 | 5 | | 28 | 4 | | 29 | 19 | | 30 | 15 | | 31 | 19 | | 32 | 2 | | 33 | 10 | | 34 | 5 | | 35 | 18 | | 36 | 32 | | 37 | 1 | | 38 | 3 | | 39 | 2 | | 40 | 32 | | 41 | 4 | | 42 | 7 | | 43 | 8 | | 44 | 4 | | 45 | 21 | | 46 | 12 | | 47 | 18 | | 48 | 7 | | 49 | 9 |
| |
| 58.04% | Sentence opener variety | Target: ≥60% unique sentence openers | | consecutiveRepeats | 10 | | diversityRatio | 0.4017857142857143 | | totalSentences | 112 | | uniqueOpeners | 45 | |
| 45.66% | Adverb-first sentence starts | Target: ≥3% sentences starting with an adverb | | adverbCount | 1 | | totalSentences | 73 | | matches | | 0 | "Instead, she undid the deadbolts." |
| | ratio | 0.014 | |
| 11.78% | Pronoun-first sentence starts | Target: ≤30% sentences starting with a pronoun | | pronounCount | 38 | | totalSentences | 73 | | matches | | 0 | "She'd texted an hour ago" | | 1 | "She checked the peephole and" | | 2 | "His platinum hair caught the" | | 3 | "She should walk away." | | 4 | "She should pretend she wasn't" | | 5 | "She flinched at the name." | | 6 | "He knew she hated it." | | 7 | "She kept her voice flat" | | 8 | "He gestured with the cane" | | 9 | "His gaze slid past her" | | 10 | "She didn't invite him in." | | 11 | "She didn't have to." | | 12 | "He was already moving, the" | | 13 | "He navigated the clutter with" | | 14 | "He said it simply, as" | | 15 | "His eyebrows rose." | | 16 | "She pushed off from the" | | 17 | "Her hands were shaking." | | 18 | "She hated that her hands" | | 19 | "She filled the kettle anyway," |
| | ratio | 0.521 | |
| 0.00% | Subject-first sentence starts | Target: ≤72% sentences starting with a subject | | subjectCount | 68 | | totalSentences | 73 | | matches | | 0 | "The knock came at half" | | 1 | "Rory looked up from the" | | 2 | "Eva wasn't home." | | 3 | "She'd texted an hour ago" | | 4 | "Rory set the cat aside" | | 5 | "She checked the peephole and" | | 6 | "Lucien Moreau stood in the" | | 7 | "His platinum hair caught the" | | 8 | "She should walk away." | | 9 | "She should pretend she wasn't" | | 10 | "The door swung open and" | | 11 | "Lucien's mouth curved into something" | | 12 | "She flinched at the name." | | 13 | "He knew she hated it." | | 14 | "That was the point." | | 15 | "She kept her voice flat" | | 16 | "He gestured with the cane" | | 17 | "His gaze slid past her" | | 18 | "Rory stepped back, leaving the" | | 19 | "She didn't invite him in." |
| | ratio | 0.932 | |
| 68.49% | Subordinate conjunction sentence starts | Target: ≥2% sentences starting with a subordinating conjunction | | subConjCount | 1 | | totalSentences | 73 | | matches | | | ratio | 0.014 | |
| 77.92% | Technical jargon density | Target: ≤6% sentences with technical-jargon patterns | | analyzedSentences | 33 | | technicalSentenceCount | 3 | | matches | | 0 | "His platinum hair caught the weak bulb light, slicked back as always, and even through the distorted fisheye of the peephole she could see the difference in his…" | | 1 | "As if he hadn't ended things six months ago with a curt note slipped under her door at the bar, his elegant handwriting spelling out words like *untenable* and …" | | 2 | "Rory stood there, feeling the weight of six months between them, the scar on her wrist aching the way it did when the weather turned." |
| |
| 95.59% | Useless dialogue additions | Target: ≤5% dialogue tags with trailing filler fragments | | totalTags | 17 | | uselessAdditionCount | 1 | | matches | | 0 | "He said, as if it were the most natural thing in the world" |
| |
| 100.00% | Dialogue tag variety (said vs. fancy) | Target: ≤10% fancy dialogue tags | | totalTags | 7 | | fancyCount | 1 | | fancyTags | | 0 | "Lucien continued (continue)" |
| | dialogueSentences | 47 | | tagDensity | 0.149 | | leniency | 0.298 | | rawRatio | 0.143 | | effectiveRatio | 0.043 | |