| 100.00% | Adverbs in dialogue tags | Target: ≤10% dialogue tags with adverbs | | totalTags | 19 | | adverbTagCount | 1 | | adverbTags | | 0 | "he said quietly [quietly]" |
| | dialogueSentences | 80 | | tagDensity | 0.238 | | leniency | 0.475 | | rawRatio | 0.053 | | effectiveRatio | 0.025 | |
| 73.99% | AI-ism adverb frequency | Target: <2% AI-ism adverbs (58 tracked) | | wordCount | 1730 | | totalAiIsmAdverbs | 9 | | found | | | highlights | | 0 | "very" | | 1 | "carefully" | | 2 | "slowly" | | 3 | "precisely" | | 4 | "really" |
| |
| 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) | |
| 62.43% | AI-ism word frequency | Target: <2% AI-ism words (290 tracked) | | wordCount | 1730 | | totalAiIsms | 13 | | found | | | highlights | | 0 | "navigating" | | 1 | "silk" | | 2 | "trembled" | | 3 | "depths" | | 4 | "flickered" | | 5 | "weight" | | 6 | "traced" | | 7 | "constructed" | | 8 | "pulse" | | 9 | "tracing" | | 10 | "familiar" | | 11 | "implication" | | 12 | "footsteps" |
| |
| 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 | 104 | | matches | (empty) | |
| 100.00% | Filter word density | Target: ≤3% sentences with filter/hedge words | | filterCount | 2 | | hedgeCount | 0 | | narrationSentences | 104 | | filterMatches | | | hedgeMatches | (empty) | |
| 100.00% | Gibberish response detection | Target: ≤1% gibberish-like sentences (hard fail if a sentence exceeds 800 words) | | analyzedSentences | 163 | | gibberishSentences | 0 | | adjustedGibberishSentences | 0 | | longSentenceCount | 0 | | runOnParagraphCount | 0 | | giantParagraphCount | 0 | | wordSaladCount | 0 | | repetitionLoopCount | 0 | | controlTokenCount | 0 | | maxSentenceWordsSeen | 50 | | ratio | 0 | | matches | (empty) | |
| 100.00% | Markdown formatting overuse | Target: ≤5% words in markdown formatting | | markdownSpans | 0 | | markdownWords | 0 | | totalWords | 1723 | | ratio | 0 | | matches | (empty) | |
| 100.00% | Missing dialogue indicators (quotation marks) | Target: ≤10% speech attributions without quotation marks | | totalAttributions | 15 | | unquotedAttributions | 0 | | matches | (empty) | |
| 100.00% | Name drop frequency | Target: ≤1.0 per-name mentions per 100 words | | totalMentions | 31 | | wordCount | 1136 | | uniqueNames | 13 | | maxNameDensity | 0.62 | | worstName | "Eva" | | maxWindowNameDensity | 2 | | worstWindowName | "Eva" | | discoveredNames | | Bristol | 1 | | Eva | 7 | | Rory | 5 | | London | 1 | | Cardiff | 1 | | French | 1 | | English | 1 | | Lucien | 6 | | Ptolemy | 4 | | Bit | 1 | | Close | 1 | | Avaros | 1 | | Vulnerable | 1 |
| | persons | | 0 | "Eva" | | 1 | "Rory" | | 2 | "Lucien" | | 3 | "Ptolemy" |
| | places | | 0 | "Bristol" | | 1 | "London" | | 2 | "Cardiff" |
| | globalScore | 1 | | windowScore | 1 | |
| 100.00% | Narrator intent-glossing | Target: ≤2% narration sentences with intent-glossing patterns | | analyzedSentences | 66 | | glossingSentenceCount | 1 | | matches | | 0 | "seemed excessive when Rory first arrived in London, fleeing Cardiff and everything she'd left bleeding in her wake" |
| |
| 100.00% | "Not X but Y" pattern overuse | Target: ≤1 "not X but Y" per 1000 words | | totalMatches | 1 | | per1kWords | 0.58 | | wordCount | 1723 | | matches | | 0 | "Not for himself, but for her" |
| |
| 100.00% | Overuse of "that" (subordinate clause padding) | Target: ≤2% sentences with "that" clauses | | thatCount | 2 | | totalSentences | 163 | | matches | | 0 | "chose that moment" | | 1 | "proof that this" |
| |
| 100.00% | Paragraph length variance | Target: CV ≥0.5 for paragraph word counts | | totalParagraphs | 89 | | mean | 19.36 | | std | 17.04 | | cv | 0.88 | | sampleLengths | | 0 | 22 | | 1 | 38 | | 2 | 49 | | 3 | 35 | | 4 | 12 | | 5 | 5 | | 6 | 23 | | 7 | 1 | | 8 | 20 | | 9 | 9 | | 10 | 54 | | 11 | 28 | | 12 | 3 | | 13 | 17 | | 14 | 24 | | 15 | 3 | | 16 | 31 | | 17 | 39 | | 18 | 3 | | 19 | 40 | | 20 | 9 | | 21 | 5 | | 22 | 37 | | 23 | 4 | | 24 | 6 | | 25 | 5 | | 26 | 24 | | 27 | 16 | | 28 | 5 | | 29 | 27 | | 30 | 25 | | 31 | 39 | | 32 | 3 | | 33 | 47 | | 34 | 58 | | 35 | 48 | | 36 | 6 | | 37 | 2 | | 38 | 6 | | 39 | 2 | | 40 | 40 | | 41 | 4 | | 42 | 20 | | 43 | 30 | | 44 | 21 | | 45 | 34 | | 46 | 10 | | 47 | 25 | | 48 | 3 | | 49 | 1 |
| |
| 100.00% | Passive voice overuse | Target: ≤2% passive sentences | | passiveCount | 1 | | totalSentences | 104 | | matches | | |
| 95.83% | Past progressive (was/were + -ing) overuse | Target: ≤2% past progressive verbs | | pastProgressiveCount | 3 | | totalVerbs | 192 | | matches | | 0 | "was building" | | 1 | "was standing" | | 2 | "was trying" |
| |
| 100.00% | Em-dash & semicolon overuse | Target: ≤2% sentences with em-dashes/semicolons | | emDashCount | 1 | | semicolonCount | 0 | | flaggedSentences | 1 | | totalSentences | 163 | | ratio | 0.006 | | matches | | |
| 92.93% | Purple prose (modifier overload) | Target: <4% adverbs, <2% -ly adverbs, no adj stacking | | wordCount | 1140 | | adjectiveStacks | 1 | | stackExamples | | 0 | "ridiculous ivory-handled cane" |
| | adverbCount | 47 | | adverbRatio | 0.0412280701754386 | | lyAdverbCount | 12 | | lyAdverbRatio | 0.010526315789473684 | |
| 100.00% | Repeated phrase echo | Target: ≤20% sentences with echoes (window: 2) | | totalSentences | 163 | | echoCount | 0 | | echoWords | (empty) | |
| 100.00% | Sentence length variance | Target: CV ≥0.4 for sentence word counts | | totalSentences | 163 | | mean | 10.57 | | std | 9.52 | | cv | 0.9 | | sampleLengths | | 0 | 22 | | 1 | 13 | | 2 | 12 | | 3 | 10 | | 4 | 3 | | 5 | 28 | | 6 | 21 | | 7 | 2 | | 8 | 21 | | 9 | 3 | | 10 | 9 | | 11 | 6 | | 12 | 2 | | 13 | 4 | | 14 | 5 | | 15 | 2 | | 16 | 14 | | 17 | 7 | | 18 | 1 | | 19 | 20 | | 20 | 9 | | 21 | 24 | | 22 | 10 | | 23 | 20 | | 24 | 4 | | 25 | 4 | | 26 | 16 | | 27 | 4 | | 28 | 3 | | 29 | 12 | | 30 | 5 | | 31 | 19 | | 32 | 5 | | 33 | 3 | | 34 | 31 | | 35 | 4 | | 36 | 35 | | 37 | 3 | | 38 | 12 | | 39 | 15 | | 40 | 13 | | 41 | 9 | | 42 | 5 | | 43 | 25 | | 44 | 6 | | 45 | 1 | | 46 | 5 | | 47 | 4 | | 48 | 6 | | 49 | 5 |
| |
| 65.85% | Sentence opener variety | Target: ≥60% unique sentence openers | | consecutiveRepeats | 11 | | diversityRatio | 0.43558282208588955 | | totalSentences | 163 | | uniqueOpeners | 71 | |
| 0.00% | Adverb-first sentence starts | Target: ≥3% sentences starting with an adverb | | adverbCount | 0 | | totalSentences | 91 | | matches | (empty) | | ratio | 0 | |
| 39.78% | Pronoun-first sentence starts | Target: ≤30% sentences starting with a pronoun | | pronounCount | 41 | | totalSentences | 91 | | matches | | 0 | "She crossed the cramped space" | | 1 | "She slid back the first" | | 2 | "Her hand trembled on the" | | 3 | "She threw the bolt and" | | 4 | "He stood in the narrow" | | 5 | "His eyes found hers." | | 6 | "She'd spent hours studying those" | | 7 | "She didn't move from the" | | 8 | "He smiled, that crooked half-smile" | | 9 | "She should say no." | | 10 | "She stepped aside." | | 11 | "He surveyed the chaos of" | | 12 | "He turned to face her," | | 13 | "He looked thinner than she" | | 14 | "Her name in his mouth," | | 15 | "He set his cane against" | | 16 | "She laughed, and the sound" | | 17 | "She crossed her arms over" | | 18 | "She remembered those shoulders." | | 19 | "He straightened slowly." |
| | ratio | 0.451 | |
| 86.37% | Subject-first sentence starts | Target: ≤72% sentences starting with a subject | | subjectCount | 68 | | totalSentences | 91 | | matches | | 0 | "The knock came at half" | | 1 | "Rory set down her mug" | | 2 | "Eva was in Bristol chasing" | | 3 | "She crossed the cramped space" | | 4 | "Ptolemy lifted his head from" | | 5 | "Eva's paranoia had seemed excessive" | | 6 | "Some things couldn't be kept" | | 7 | "She slid back the first" | | 8 | "Honey and gravel, French consonants" | | 9 | "Her hand trembled on the" | | 10 | "She threw the bolt and" | | 11 | "He stood in the narrow" | | 12 | "Platinum hair slicked back, not" | | 13 | "That ridiculous ivory-handled cane in" | | 14 | "His eyes found hers." | | 15 | "She'd spent hours studying those" | | 16 | "She didn't move from the" | | 17 | "He smiled, that crooked half-smile" | | 18 | "She should say no." | | 19 | "She stepped aside." |
| | ratio | 0.747 | |
| 54.95% | Subordinate conjunction sentence starts | Target: ≥2% sentences starting with a subordinating conjunction | | subConjCount | 1 | | totalSentences | 91 | | matches | | | ratio | 0.011 | |
| 0.00% | Technical jargon density | Target: ≤6% sentences with technical-jargon patterns | | analyzedSentences | 39 | | technicalSentenceCount | 8 | | matches | | 0 | "The knock came at half past eleven, three sharp raps that cut through the curry-scented air drifting up from the restaurant below." | | 1 | "Sandalwood and something darker, something that made her think of incense burning in empty churches." | | 2 | "He set his cane against Eva's cluttered desk, carefully, as if the motion required all his concentration." | | 3 | "Ptolemy chose that moment to leap from his perch, landing on the floor with a soft thump before winding between Lucien's ankles." | | 4 | "The cat had always liked him, even when Rory had screamed at her own reflection in Eva's bathroom mirror, promising herself she was done with men who kept secre…" | | 5 | "Close enough that she could see the tiny lines at the corners of his eyes, the ones that appeared when he smiled or when he was exhausted or when he was about t…" | | 6 | "Remembered them tracing the crescent-shaped scar on her wrist, asking about it, listening when she told him about the childhood accident that had marked her." | | 7 | "Moving slow and deliberate, like hunters who knew their prey had nowhere left to run." |
| |
| 72.37% | Useless dialogue additions | Target: ≤5% dialogue tags with trailing filler fragments | | totalTags | 19 | | uselessAdditionCount | 2 | | matches | | 0 | "He turned, and the lamplight caught the hard angles of his jaw, the faint shadow beneath his cheekbones" | | 1 | "Lucien's thumb moved, a gesture so achingly familiar that her throat constricted" |
| |
| 100.00% | Dialogue tag variety (said vs. fancy) | Target: ≤10% fancy dialogue tags | | totalTags | 5 | | fancyCount | 3 | | fancyTags | | 0 | "She laughed (laugh)" | | 1 | "She pressed (press)" | | 2 | "he murmured (murmur)" |
| | dialogueSentences | 80 | | tagDensity | 0.063 | | leniency | 0.125 | | rawRatio | 0.6 | | effectiveRatio | 0.075 | |