| 100.00% | Adverbs in dialogue tags | Target: ≤10% dialogue tags with adverbs | | totalTags | 21 | | adverbTagCount | 0 | | adverbTags | (empty) | | dialogueSentences | 62 | | tagDensity | 0.339 | | leniency | 0.677 | | rawRatio | 0 | | effectiveRatio | 0 | |
| 100.00% | AI-ism adverb frequency | Target: <2% AI-ism adverbs (58 tracked) | | wordCount | 1654 | | 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) | |
| 78.84% | AI-ism word frequency | Target: <2% AI-ism words (290 tracked) | | wordCount | 1654 | | totalAiIsms | 7 | | found | | | highlights | | 0 | "weight" | | 1 | "tension" | | 2 | "charm" | | 3 | "raced" | | 4 | "silence" | | 5 | "familiar" | | 6 | "echoed" |
| |
| 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 | 71 | | matches | (empty) | |
| 100.00% | Filter word density | Target: ≤3% sentences with filter/hedge words | | filterCount | 1 | | hedgeCount | 0 | | narrationSentences | 71 | | filterMatches | | | hedgeMatches | (empty) | |
| 100.00% | Gibberish response detection | Target: ≤1% gibberish-like sentences (hard fail if a sentence exceeds 800 words) | | analyzedSentences | 111 | | gibberishSentences | 0 | | adjustedGibberishSentences | 0 | | longSentenceCount | 0 | | runOnParagraphCount | 0 | | giantParagraphCount | 0 | | wordSaladCount | 0 | | repetitionLoopCount | 0 | | controlTokenCount | 0 | | repeatedSegmentCount | 0 | | maxSentenceWordsSeen | 53 | | ratio | 0 | | matches | (empty) | |
| 100.00% | Markdown formatting overuse | Target: ≤5% words in markdown formatting | | markdownSpans | 0 | | markdownWords | 0 | | totalWords | 1654 | | ratio | 0 | | matches | (empty) | |
| 100.00% | Missing dialogue indicators (quotation marks) | Target: ≤10% speech attributions without quotation marks | | totalAttributions | 18 | | unquotedAttributions | 0 | | matches | (empty) | |
| 83.33% | Name drop frequency | Target: ≤1.0 per-name mentions per 100 words | | totalMentions | 22 | | wordCount | 1043 | | uniqueNames | 10 | | maxNameDensity | 0.96 | | worstName | "Rory" | | maxWindowNameDensity | 2.5 | | worstWindowName | "Rory" | | discoveredNames | | Silas | 1 | | Moreau | 1 | | Rory | 10 | | French | 1 | | Golden | 1 | | Empress | 1 | | Yu-Fei | 1 | | Ming | 1 | | Lucien | 4 | | Marseille | 1 |
| | persons | | 0 | "Silas" | | 1 | "Moreau" | | 2 | "Rory" | | 3 | "Empress" | | 4 | "Yu-Fei" | | 5 | "Lucien" |
| | places | | | globalScore | 1 | | windowScore | 0.833 | |
| 100.00% | Narrator intent-glossing | Target: ≤2% narration sentences with intent-glossing patterns | | analyzedSentences | 53 | | glossingSentenceCount | 1 | | matches | | 0 | "seemed warmer than the black one and the black eye that always seemed colder, and she wanted to hit him and she wanted to ask him to stay, and both impulses made her furious" | | 1 | "seemed colder and she wanted to hit him and she wanted to ask him to stay, and both impulses made her furious" |
| |
| 100.00% | "Not X but Y" pattern overuse | Target: ≤1 "not X but Y" per 1000 words | | totalMatches | 1 | | per1kWords | 0.605 | | wordCount | 1654 | | matches | | 0 | "not out of invitation, but because standing in an open doorway in a shared corridor mea" |
| |
| 100.00% | Overuse of "that" (subordinate clause padding) | Target: ≤2% sentences with "that" clauses | | thatCount | 0 | | totalSentences | 111 | | matches | (empty) | |
| 100.00% | Paragraph length variance | Target: CV ≥0.5 for paragraph word counts | | totalParagraphs | 53 | | mean | 31.21 | | std | 24.47 | | cv | 0.784 | | sampleLengths | | 0 | 80 | | 1 | 8 | | 2 | 3 | | 3 | 14 | | 4 | 57 | | 5 | 37 | | 6 | 60 | | 7 | 6 | | 8 | 41 | | 9 | 33 | | 10 | 59 | | 11 | 6 | | 12 | 2 | | 13 | 22 | | 14 | 30 | | 15 | 8 | | 16 | 32 | | 17 | 47 | | 18 | 3 | | 19 | 56 | | 20 | 59 | | 21 | 8 | | 22 | 6 | | 23 | 31 | | 24 | 65 | | 25 | 28 | | 26 | 44 | | 27 | 5 | | 28 | 55 | | 29 | 31 | | 30 | 1 | | 31 | 58 | | 32 | 60 | | 33 | 6 | | 34 | 32 | | 35 | 4 | | 36 | 24 | | 37 | 57 | | 38 | 8 | | 39 | 40 | | 40 | 12 | | 41 | 11 | | 42 | 81 | | 43 | 4 | | 44 | 36 | | 45 | 87 | | 46 | 2 | | 47 | 8 | | 48 | 39 | | 49 | 71 |
| |
| 95.38% | Passive voice overuse | Target: ≤2% passive sentences | | passiveCount | 2 | | totalSentences | 71 | | matches | | 0 | "were scarred" | | 1 | "been seven" |
| |
| 100.00% | Past progressive (was/were + -ing) overuse | Target: ≤2% past progressive verbs | | pastProgressiveCount | 1 | | totalVerbs | 174 | | matches | | |
| 100.00% | Em-dash & semicolon overuse | Target: ≤2% sentences with em-dashes/semicolons | | emDashCount | 0 | | semicolonCount | 0 | | flaggedSentences | 0 | | totalSentences | 111 | | ratio | 0 | | matches | (empty) | |
| 100.00% | Purple prose (modifier overload) | Target: <4% adverbs, <2% -ly adverbs, no adj stacking | | wordCount | 702 | | adjectiveStacks | 0 | | stackExamples | (empty) | | adverbCount | 19 | | adverbRatio | 0.027065527065527065 | | lyAdverbCount | 2 | | lyAdverbRatio | 0.002849002849002849 | |
| 100.00% | Repeated phrase echo | Target: ≤20% sentences with echoes (window: 2) | | totalSentences | 111 | | echoCount | 0 | | echoWords | (empty) | |
| 100.00% | Sentence length variance | Target: CV ≥0.4 for sentence word counts | | totalSentences | 111 | | mean | 14.9 | | std | 12.17 | | cv | 0.817 | | sampleLengths | | 0 | 18 | | 1 | 18 | | 2 | 44 | | 3 | 8 | | 4 | 3 | | 5 | 11 | | 6 | 3 | | 7 | 9 | | 8 | 37 | | 9 | 11 | | 10 | 22 | | 11 | 15 | | 12 | 32 | | 13 | 6 | | 14 | 22 | | 15 | 6 | | 16 | 32 | | 17 | 9 | | 18 | 6 | | 19 | 27 | | 20 | 12 | | 21 | 22 | | 22 | 25 | | 23 | 6 | | 24 | 2 | | 25 | 19 | | 26 | 3 | | 27 | 7 | | 28 | 21 | | 29 | 2 | | 30 | 6 | | 31 | 2 | | 32 | 7 | | 33 | 15 | | 34 | 10 | | 35 | 25 | | 36 | 4 | | 37 | 15 | | 38 | 3 | | 39 | 3 | | 40 | 37 | | 41 | 19 | | 42 | 23 | | 43 | 3 | | 44 | 25 | | 45 | 8 | | 46 | 8 | | 47 | 6 | | 48 | 6 | | 49 | 19 |
| |
| 60.30% | Sentence opener variety | Target: ≥60% unique sentence openers | | consecutiveRepeats | 7 | | diversityRatio | 0.4 | | totalSentences | 110 | | uniqueOpeners | 44 | |
| 51.28% | Adverb-first sentence starts | Target: ≥3% sentences starting with an adverb | | adverbCount | 1 | | totalSentences | 65 | | matches | | | ratio | 0.015 | |
| 29.23% | Pronoun-first sentence starts | Target: ≤30% sentences starting with a pronoun | | pronounCount | 31 | | totalSentences | 65 | | matches | | 0 | "She hadn't heard from him" | | 1 | "He glanced at the deadbolts" | | 2 | "She didn't move from the" | | 3 | "He shifted his weight, the" | | 4 | "She studied his face for" | | 5 | "His jaw was tighter than" | | 6 | "She stepped back, not out" | | 7 | "He took in the room" | | 8 | "Her flat above" | | 9 | "He set the cane against" | | 10 | "She nodded at his hand" | | 11 | "His fingers curled inward, then" | | 12 | "she repeated, crossing her arms" | | 13 | "He leaned one hip against" | | 14 | "She'd seen him dismantle a" | | 15 | "He tilted his head" | | 16 | "She'd been seven." | | 17 | "He straightened from the counter," | | 18 | "He said it the way" | | 19 | "He reached into his jacket" |
| | ratio | 0.477 | |
| 0.00% | Subject-first sentence starts | Target: ≤72% sentences starting with a subject | | subjectCount | 61 | | totalSentences | 65 | | matches | | 0 | "The third deadbolt stuck, then" | | 1 | "Rory's hand dropped from the" | | 2 | "Lucien Moreau stood under the" | | 3 | "She hadn't heard from him" | | 4 | "He glanced at the deadbolts" | | 5 | "She didn't move from the" | | 6 | "The hallway behind him smelled" | | 7 | "He shifted his weight, the" | | 8 | "The air between them felt" | | 9 | "She studied his face for" | | 10 | "His jaw was tighter than" | | 11 | "The amber eye caught the" | | 12 | "Rory's grip on the doorframe" | | 13 | "She stepped back, not out" | | 14 | "Lucien stepped inside as though" | | 15 | "He took in the room" | | 16 | "Her flat above" | | 17 | "He set the cane against" | | 18 | "She nodded at his hand" | | 19 | "The knuckles were scarred in" |
| | ratio | 0.938 | |
| 0.00% | Subordinate conjunction sentence starts | Target: ≥2% sentences starting with a subordinating conjunction | | subConjCount | 0 | | totalSentences | 65 | | matches | (empty) | | ratio | 0 | |
| 66.33% | Technical jargon density | Target: ≤6% sentences with technical-jargon patterns | | analyzedSentences | 28 | | technicalSentenceCount | 3 | | matches | | 0 | "Lucien Moreau stood under the corridor's buzzing strip light in a charcoal suit that probably cost more than her monthly rent, his ivory-handled cane hooked ove…" | | 1 | "The air between them felt thick, the kind of thick that came from years of unfinished sentences and one conversation that had ended with a door much like this o…" | | 2 | "She opened her mouth, and the door closed behind him with a click that echoed through the flat like a gunshot, and Rory stood in the sudden quiet with a dead wo…" |
| |
| 77.38% | Useless dialogue additions | Target: ≤5% dialogue tags with trailing filler fragments | | totalTags | 21 | | uselessAdditionCount | 2 | | matches | | 0 | "He shifted, the cane tapping the worn carpet once" | | 1 | "He straightened, and the movement changed the geometry of the room, made it smaller" |
| |
| 100.00% | Dialogue tag variety (said vs. fancy) | Target: ≤10% fancy dialogue tags | | totalTags | 5 | | fancyCount | 1 | | fancyTags | | | dialogueSentences | 62 | | tagDensity | 0.081 | | leniency | 0.161 | | rawRatio | 0.2 | | effectiveRatio | 0.032 | |