| 100.00% | Adverbs in dialogue tags | Target: ≤10% dialogue tags with adverbs | | totalTags | 15 | | adverbTagCount | 1 | | adverbTags | | 0 | "Her fingers pressed hard [hard]" |
| | dialogueSentences | 124 | | tagDensity | 0.121 | | leniency | 0.242 | | rawRatio | 0.067 | | effectiveRatio | 0.016 | |
| 92.70% | AI-ism adverb frequency | Target: <2% AI-ism adverbs (58 tracked) | | wordCount | 2054 | | totalAiIsmAdverbs | 3 | | found | | | highlights | | 0 | "lightly" | | 1 | "carefully" | | 2 | "very" |
| |
| 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.96% | AI-ism word frequency | Target: <2% AI-ism words (290 tracked) | | wordCount | 2054 | | totalAiIsms | 7 | | found | | | highlights | | 0 | "pulse" | | 1 | "silence" | | 2 | "perfect" | | 3 | "flicked" | | 4 | "charm" | | 5 | "magnetic" |
| |
| 100.00% | Cliché density | Target: ≤1 cliche(s) per 800-word window | | totalCliches | 1 | | maxInWindow | 1 | | found | | 0 | | label | "let out a breath" | | count | 1 |
|
| | highlights | | |
| 100.00% | Emotion telling (show vs. tell) | Target: ≤3% sentences with emotion telling | | emotionTells | 0 | | narrationSentences | 151 | | matches | (empty) | |
| 100.00% | Filter word density | Target: ≤3% sentences with filter/hedge words | | filterCount | 0 | | hedgeCount | 1 | | narrationSentences | 151 | | filterMatches | (empty) | | hedgeMatches | | |
| 100.00% | Gibberish response detection | Target: ≤1% gibberish-like sentences (hard fail if a sentence exceeds 800 words) | | analyzedSentences | 260 | | gibberishSentences | 0 | | adjustedGibberishSentences | 0 | | longSentenceCount | 0 | | runOnParagraphCount | 0 | | giantParagraphCount | 0 | | wordSaladCount | 0 | | repetitionLoopCount | 0 | | controlTokenCount | 0 | | maxSentenceWordsSeen | 47 | | ratio | 0 | | matches | (empty) | |
| 100.00% | Markdown formatting overuse | Target: ≤5% words in markdown formatting | | markdownSpans | 0 | | markdownWords | 0 | | totalWords | 2054 | | ratio | 0 | | matches | (empty) | |
| 100.00% | Missing dialogue indicators (quotation marks) | Target: ≤10% speech attributions without quotation marks | | totalAttributions | 24 | | unquotedAttributions | 0 | | matches | (empty) | |
| 81.01% | Name drop frequency | Target: ≤1.0 per-name mentions per 100 words | | totalMentions | 48 | | wordCount | 1232 | | uniqueNames | 11 | | maxNameDensity | 1.38 | | worstName | "Aurora" | | maxWindowNameDensity | 2.5 | | worstWindowName | "Aurora" | | discoveredNames | | Moreau | 1 | | London | 1 | | Aurora | 17 | | Eva | 4 | | Rainwater | 1 | | Lucien | 15 | | Hobnobs | 1 | | Cold | 1 | | Brick | 1 | | Lane | 1 | | Ptolemy | 5 |
| | persons | | 0 | "Moreau" | | 1 | "Aurora" | | 2 | "Eva" | | 3 | "Rainwater" | | 4 | "Lucien" | | 5 | "Hobnobs" | | 6 | "Cold" | | 7 | "Ptolemy" |
| | places | | | globalScore | 0.81 | | windowScore | 0.833 | |
| 91.18% | Narrator intent-glossing | Target: ≤2% narration sentences with intent-glossing patterns | | analyzedSentences | 85 | | glossingSentenceCount | 2 | | matches | | 0 | "not quite a smile" | | 1 | "sounded like him before" |
| |
| 100.00% | "Not X but Y" pattern overuse | Target: ≤1 "not X but Y" per 1000 words | | totalMatches | 0 | | per1kWords | 0 | | wordCount | 2054 | | matches | (empty) | |
| 100.00% | Overuse of "that" (subordinate clause padding) | Target: ≤2% sentences with "that" clauses | | thatCount | 1 | | totalSentences | 260 | | matches | | |
| 100.00% | Paragraph length variance | Target: CV ≥0.5 for paragraph word counts | | totalParagraphs | 174 | | mean | 11.8 | | std | 12.06 | | cv | 1.022 | | sampleLengths | | 0 | 19 | | 1 | 12 | | 2 | 66 | | 3 | 10 | | 4 | 4 | | 5 | 3 | | 6 | 14 | | 7 | 8 | | 8 | 13 | | 9 | 42 | | 10 | 4 | | 11 | 6 | | 12 | 3 | | 13 | 25 | | 14 | 6 | | 15 | 1 | | 16 | 29 | | 17 | 14 | | 18 | 4 | | 19 | 23 | | 20 | 30 | | 21 | 5 | | 22 | 13 | | 23 | 1 | | 24 | 28 | | 25 | 31 | | 26 | 5 | | 27 | 1 | | 28 | 7 | | 29 | 28 | | 30 | 4 | | 31 | 15 | | 32 | 13 | | 33 | 34 | | 34 | 36 | | 35 | 6 | | 36 | 3 | | 37 | 1 | | 38 | 2 | | 39 | 1 | | 40 | 3 | | 41 | 4 | | 42 | 33 | | 43 | 29 | | 44 | 10 | | 45 | 10 | | 46 | 11 | | 47 | 4 | | 48 | 8 | | 49 | 72 |
| |
| 100.00% | Passive voice overuse | Target: ≤2% passive sentences | | passiveCount | 0 | | totalSentences | 151 | | matches | (empty) | |
| 100.00% | Past progressive (was/were + -ing) overuse | Target: ≤2% past progressive verbs | | pastProgressiveCount | 0 | | totalVerbs | 212 | | matches | (empty) | |
| 100.00% | Em-dash & semicolon overuse | Target: ≤2% sentences with em-dashes/semicolons | | emDashCount | 0 | | semicolonCount | 0 | | flaggedSentences | 0 | | totalSentences | 260 | | ratio | 0 | | matches | (empty) | |
| 96.71% | Purple prose (modifier overload) | Target: <4% adverbs, <2% -ly adverbs, no adj stacking | | wordCount | 1234 | | adjectiveStacks | 0 | | stackExamples | (empty) | | adverbCount | 54 | | adverbRatio | 0.04376012965964344 | | lyAdverbCount | 7 | | lyAdverbRatio | 0.005672609400324149 | |
| 100.00% | Repeated phrase echo | Target: ≤20% sentences with echoes (window: 2) | | totalSentences | 260 | | echoCount | 0 | | echoWords | (empty) | |
| 100.00% | Sentence length variance | Target: CV ≥0.4 for sentence word counts | | totalSentences | 260 | | mean | 7.9 | | std | 7.11 | | cv | 0.899 | | sampleLengths | | 0 | 5 | | 1 | 3 | | 2 | 11 | | 3 | 12 | | 4 | 27 | | 5 | 9 | | 6 | 30 | | 7 | 10 | | 8 | 4 | | 9 | 3 | | 10 | 9 | | 11 | 5 | | 12 | 8 | | 13 | 10 | | 14 | 3 | | 15 | 26 | | 16 | 16 | | 17 | 4 | | 18 | 6 | | 19 | 3 | | 20 | 25 | | 21 | 6 | | 22 | 1 | | 23 | 18 | | 24 | 11 | | 25 | 4 | | 26 | 4 | | 27 | 6 | | 28 | 4 | | 29 | 3 | | 30 | 20 | | 31 | 8 | | 32 | 1 | | 33 | 1 | | 34 | 20 | | 35 | 5 | | 36 | 7 | | 37 | 2 | | 38 | 2 | | 39 | 2 | | 40 | 1 | | 41 | 8 | | 42 | 20 | | 43 | 12 | | 44 | 15 | | 45 | 2 | | 46 | 2 | | 47 | 5 | | 48 | 1 | | 49 | 7 |
| |
| 47.69% | Sentence opener variety | Target: ≥60% unique sentence openers | | consecutiveRepeats | 6 | | diversityRatio | 0.2923076923076923 | | totalSentences | 260 | | uniqueOpeners | 76 | |
| 100.00% | Adverb-first sentence starts | Target: ≥3% sentences starting with an adverb | | adverbCount | 5 | | totalSentences | 126 | | matches | | 0 | "Then the second." | | 1 | "Then the third stuck for" | | 2 | "Instead she planted both palms" | | 3 | "Somewhere below, a pan clanged" | | 4 | "Then a third." |
| | ratio | 0.04 | |
| 73.97% | Pronoun-first sentence starts | Target: ≤30% sentences starting with a pronoun | | pronounCount | 46 | | totalSentences | 126 | | matches | | 0 | "It caught in his hair" | | 1 | "She had pictured this moment" | | 2 | "His expression sharpened." | | 3 | "She started to close it." | | 4 | "Her voice came out low" | | 5 | "His head angled, listening." | | 6 | "She laughed once, sharp as" | | 7 | "His fingers left the door" | | 8 | "He stood back, cane planted" | | 9 | "he said, quieter now" | | 10 | "Her hand stayed on the" | | 11 | "His jaw set." | | 12 | "She hated that." | | 13 | "He held her gaze." | | 14 | "She opened the door wider" | | 15 | "He brought in the smell" | | 16 | "He shut the door with" | | 17 | "He walked into a space" | | 18 | "His gaze flicked to her." | | 19 | "She folded her arms." |
| | ratio | 0.365 | |
| 39.37% | Subject-first sentence starts | Target: ≤72% sentences starting with a subject | | subjectCount | 106 | | totalSentences | 126 | | matches | | 0 | "The first deadbolt scraped back." | | 1 | "Aurora kept one hand on" | | 2 | "Lucien Moreau stood in the" | | 3 | "The corridor light hummed above" | | 4 | "It caught in his hair" | | 5 | "Ptolemy shot between Aurora’s ankles" | | 6 | "Aurora tightened the chain." | | 7 | "Lucien glanced down at the" | | 8 | "A corner of his mouth" | | 9 | "She had pictured this moment" | | 10 | "The chain bit into Aurora’s" | | 11 | "Lucien lifted his chin towards" | | 12 | "Aurora looked past him." | | 13 | "The landing sat empty." | | 14 | "Rain rattled against the stairwell" | | 15 | "His expression sharpened." | | 16 | "That stung because it sounded" | | 17 | "The sort of answer that" | | 18 | "She started to close it." | | 19 | "Lucien caught the edge with" |
| | ratio | 0.841 | |
| 79.37% | Subordinate conjunction sentence starts | Target: ≥2% sentences starting with a subordinating conjunction | | subConjCount | 2 | | totalSentences | 126 | | matches | | 0 | "Now her pulse hammered in" | | 1 | "Now he looked at her" |
| | ratio | 0.016 | |
| 100.00% | Technical jargon density | Target: ≤6% sentences with technical-jargon patterns | | analyzedSentences | 42 | | technicalSentenceCount | 2 | | matches | | 0 | "Aurora watched him and caught herself doing it the old way, tracking the line of his mouth, the rain caught in his lashes, the hand on the cane that had once wr…" | | 1 | "The old heat between them rose fast, ugly and magnetic, drawn from arguments that had once ended with her back against a wall and his careful hands bracketed be…" |
| |
| 91.67% | Useless dialogue additions | Target: ≤5% dialogue tags with trailing filler fragments | | totalTags | 15 | | uselessAdditionCount | 1 | | matches | | 0 | "He moved, as if he knew better than to claim ground" |
| |
| 100.00% | Dialogue tag variety (said vs. fancy) | Target: ≤10% fancy dialogue tags | | totalTags | 10 | | fancyCount | 2 | | fancyTags | | 0 | "Lucien continued (continue)" | | 1 | "Her fingers pressed hard (press)" |
| | dialogueSentences | 124 | | tagDensity | 0.081 | | leniency | 0.161 | | rawRatio | 0.2 | | effectiveRatio | 0.032 | |