| 100.00% | Adverbs in dialogue tags | Target: ≤10% dialogue tags with adverbs | | totalTags | 10 | | adverbTagCount | 1 | | adverbTags | | 0 | "His thumb dragged once [once]" |
| | dialogueSentences | 36 | | tagDensity | 0.278 | | leniency | 0.556 | | rawRatio | 0.1 | | effectiveRatio | 0.056 | |
| 95.83% | AI-ism adverb frequency | Target: <2% AI-ism adverbs (58 tracked) | | wordCount | 1200 | | totalAiIsmAdverbs | 1 | | 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) | |
| 75.00% | AI-ism word frequency | Target: <2% AI-ism words (290 tracked) | | wordCount | 1200 | | totalAiIsms | 6 | | found | | | highlights | | 0 | "measured" | | 1 | "tracing" | | 2 | "velvet" | | 3 | "silence" | | 4 | "charm" |
| |
| 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 | 65 | | matches | (empty) | |
| 100.00% | Filter word density | Target: ≤3% sentences with filter/hedge words | | filterCount | 0 | | hedgeCount | 0 | | narrationSentences | 65 | | filterMatches | (empty) | | hedgeMatches | (empty) | |
| 100.00% | Gibberish response detection | Target: ≤1% gibberish-like sentences (hard fail if a sentence exceeds 800 words) | | analyzedSentences | 91 | | gibberishSentences | 0 | | adjustedGibberishSentences | 0 | | longSentenceCount | 0 | | runOnParagraphCount | 0 | | giantParagraphCount | 0 | | wordSaladCount | 0 | | repetitionLoopCount | 0 | | controlTokenCount | 0 | | repeatedSegmentCount | 0 | | maxSentenceWordsSeen | 51 | | ratio | 0 | | matches | (empty) | |
| 100.00% | Markdown formatting overuse | Target: ≤5% words in markdown formatting | | markdownSpans | 0 | | markdownWords | 0 | | totalWords | 1195 | | ratio | 0 | | matches | (empty) | |
| 100.00% | Missing dialogue indicators (quotation marks) | Target: ≤10% speech attributions without quotation marks | | totalAttributions | 14 | | unquotedAttributions | 0 | | matches | (empty) | |
| 89.12% | Name drop frequency | Target: ≤1.0 per-name mentions per 100 words | | totalMentions | 27 | | wordCount | 657 | | uniqueNames | 12 | | maxNameDensity | 1.22 | | worstName | "Aurora" | | maxWindowNameDensity | 2 | | worstWindowName | "Aurora" | | discoveredNames | | Carter | 1 | | Eva | 1 | | Cardiff | 1 | | University | 1 | | Moreau | 1 | | Brick | 2 | | Lane | 2 | | Aurora | 8 | | Silence | 1 | | Palm | 1 | | Heterochromatic | 2 | | Lucien | 6 |
| | persons | | 0 | "Carter" | | 1 | "Eva" | | 2 | "Moreau" | | 3 | "Aurora" | | 4 | "Silence" | | 5 | "Heterochromatic" | | 6 | "Lucien" |
| | places | | 0 | "Cardiff" | | 1 | "Brick" | | 2 | "Lane" |
| | globalScore | 0.891 | | windowScore | 1 | |
| 100.00% | Narrator intent-glossing | Target: ≤2% narration sentences with intent-glossing patterns | | analyzedSentences | 51 | | glossingSentenceCount | 0 | | matches | (empty) | |
| 100.00% | "Not X but Y" pattern overuse | Target: ≤1 "not X but Y" per 1000 words | | totalMatches | 0 | | per1kWords | 0 | | wordCount | 1195 | | matches | (empty) | |
| 100.00% | Overuse of "that" (subordinate clause padding) | Target: ≤2% sentences with "that" clauses | | thatCount | 0 | | totalSentences | 91 | | matches | (empty) | |
| 100.00% | Paragraph length variance | Target: CV ≥0.5 for paragraph word counts | | totalParagraphs | 35 | | mean | 34.14 | | std | 17.96 | | cv | 0.526 | | sampleLengths | | 0 | 56 | | 1 | 48 | | 2 | 7 | | 3 | 44 | | 4 | 8 | | 5 | 47 | | 6 | 19 | | 7 | 59 | | 8 | 34 | | 9 | 26 | | 10 | 31 | | 11 | 47 | | 12 | 36 | | 13 | 24 | | 14 | 38 | | 15 | 8 | | 16 | 48 | | 17 | 58 | | 18 | 47 | | 19 | 47 | | 20 | 5 | | 21 | 51 | | 22 | 21 | | 23 | 42 | | 24 | 45 | | 25 | 29 | | 26 | 46 | | 27 | 36 | | 28 | 6 | | 29 | 37 | | 30 | 6 | | 31 | 48 | | 32 | 18 | | 33 | 3 | | 34 | 70 |
| |
| 100.00% | Passive voice overuse | Target: ≤2% passive sentences | | passiveCount | 0 | | totalSentences | 65 | | matches | (empty) | |
| 100.00% | Past progressive (was/were + -ing) overuse | Target: ≤2% past progressive verbs | | pastProgressiveCount | 0 | | totalVerbs | 105 | | matches | (empty) | |
| 0.00% | Em-dash & semicolon overuse | Target: ≤2% sentences with em-dashes/semicolons | | emDashCount | 5 | | semicolonCount | 1 | | flaggedSentences | 5 | | totalSentences | 91 | | ratio | 0.055 | | matches | | 0 | "Heterochromatic eyes—one amber, one black—met hers without blinking." | | 1 | "\"Silas protects his tenants. I pay for the privilege of knowing who sleeps above his bar.\" Lucien's gaze moved past her to the chaos of books and research notes covering every surface—tongues of parchment spilling from open crates, a half-drunk mug of cold tea balanced on an open grimoire." | | 2 | "History pressed against her ribs—nights of shared whisky and whispered translations, the sharp ache of walking away, the weeks of silence that followed." | | 3 | "Her free hand found the lapel of his suit; the charcoal wool was soft under her knuckles." | | 4 | "His lips brushed the corner of hers—once, testing." |
| |
| 100.00% | Purple prose (modifier overload) | Target: <4% adverbs, <2% -ly adverbs, no adj stacking | | wordCount | 664 | | adjectiveStacks | 0 | | stackExamples | (empty) | | adverbCount | 14 | | adverbRatio | 0.02108433734939759 | | lyAdverbCount | 1 | | lyAdverbRatio | 0.0015060240963855422 | |
| 100.00% | Repeated phrase echo | Target: ≤20% sentences with echoes (window: 2) | | totalSentences | 91 | | echoCount | 0 | | echoWords | (empty) | |
| 100.00% | Sentence length variance | Target: CV ≥0.4 for sentence word counts | | totalSentences | 91 | | mean | 13.13 | | std | 9.91 | | cv | 0.755 | | sampleLengths | | 0 | 15 | | 1 | 18 | | 2 | 23 | | 3 | 12 | | 4 | 28 | | 5 | 8 | | 6 | 7 | | 7 | 6 | | 8 | 23 | | 9 | 15 | | 10 | 8 | | 11 | 8 | | 12 | 8 | | 13 | 31 | | 14 | 7 | | 15 | 8 | | 16 | 4 | | 17 | 49 | | 18 | 10 | | 19 | 14 | | 20 | 16 | | 21 | 4 | | 22 | 14 | | 23 | 12 | | 24 | 22 | | 25 | 9 | | 26 | 3 | | 27 | 10 | | 28 | 34 | | 29 | 9 | | 30 | 9 | | 31 | 18 | | 32 | 9 | | 33 | 10 | | 34 | 5 | | 35 | 2 | | 36 | 11 | | 37 | 25 | | 38 | 4 | | 39 | 4 | | 40 | 48 | | 41 | 3 | | 42 | 17 | | 43 | 24 | | 44 | 14 | | 45 | 2 | | 46 | 10 | | 47 | 8 | | 48 | 27 | | 49 | 30 |
| |
| 68.13% | Sentence opener variety | Target: ≥60% unique sentence openers | | consecutiveRepeats | 3 | | diversityRatio | 0.42857142857142855 | | totalSentences | 91 | | uniqueOpeners | 39 | |
| 0.00% | Adverb-first sentence starts | Target: ≥3% sentences starting with an adverb | | adverbCount | 0 | | totalSentences | 61 | | matches | (empty) | | ratio | 0 | |
| 82.30% | Pronoun-first sentence starts | Target: ≤30% sentences starting with a pronoun | | pronounCount | 21 | | totalSentences | 61 | | matches | | 0 | "Her straight black hair hung" | | 1 | "His charcoal suit looked out" | | 2 | "She stepped back half a" | | 3 | "He advanced one measured step" | | 4 | "He set the cane against" | | 5 | "She turned away, scooped a" | | 6 | "He moved closer" | | 7 | "She broke off, breath hitching" | | 8 | "He reached out." | | 9 | "His thumb dragged once across" | | 10 | "She pulled her wrist free," | | 11 | "He stepped into the space" | | 12 | "His voice dropped, velvet and" | | 13 | "Her bare feet curled against" | | 14 | "She almost laughed." | | 15 | "He lifted one hand and" | | 16 | "She placed her palm against" | | 17 | "Their faces halted a breath" | | 18 | "Her free hand found the" | | 19 | "He bent until his forehead" |
| | ratio | 0.344 | |
| 9.18% | Subject-first sentence starts | Target: ≤72% sentences starting with a subject | | subjectCount | 55 | | totalSentences | 61 | | matches | | 0 | "The three deadbolts clicked in" | | 1 | "Aurora Carter stood framed in" | | 2 | "Her straight black hair hung" | | 3 | "Lucien Moreau rested both hands" | | 4 | "His charcoal suit looked out" | | 5 | "She stepped back half a" | | 6 | "The smell of cumin and" | | 7 | "Ptolemy the tabby wound between" | | 8 | "He advanced one measured step" | | 9 | "The cane tapped once against" | | 10 | "Aurora shut the door with" | | 11 | "The three bolts slammed home" | | 12 | "Lucien's gaze moved past her" | | 13 | "Aurora crossed her arms" | | 14 | "The small crescent scar on" | | 15 | "He set the cane against" | | 16 | "She turned away, scooped a" | | 17 | "Lucien remained standing." | | 18 | "The amber eye tracked the" | | 19 | "Aurora's hands froze above a" |
| | ratio | 0.902 | |
| 0.00% | Subordinate conjunction sentence starts | Target: ≥2% sentences starting with a subordinating conjunction | | subConjCount | 0 | | totalSentences | 61 | | matches | (empty) | | ratio | 0 | |
| 100.00% | Technical jargon density | Target: ≤6% sentences with technical-jargon patterns | | analyzedSentences | 24 | | technicalSentenceCount | 1 | | matches | | 0 | "History pressed against her ribs—nights of shared whisky and whispered translations, the sharp ache of walking away, the weeks of silence that followed." |
| |
| 75.00% | Useless dialogue additions | Target: ≤5% dialogue tags with trailing filler fragments | | totalTags | 10 | | uselessAdditionCount | 1 | | matches | | 0 | "She broke, breath hitching" |
| |
| 94.44% | Dialogue tag variety (said vs. fancy) | Target: ≤10% fancy dialogue tags | | totalTags | 2 | | fancyCount | 2 | | fancyTags | | 0 | "Lucien's gaze moved (move)" | | 1 | "He stepped (step)" |
| | dialogueSentences | 36 | | tagDensity | 0.056 | | leniency | 0.111 | | rawRatio | 1 | | effectiveRatio | 0.111 | |