| 90.00% | Adverbs in dialogue tags | Target: ≤10% dialogue tags with adverbs | | totalTags | 17 | | adverbTagCount | 3 | | adverbTags | | 0 | "he said finally [finally]" | | 1 | "he said slowly [slowly]" | | 2 | "she said quietly [quietly]" |
| | dialogueSentences | 50 | | tagDensity | 0.34 | | leniency | 0.68 | | rawRatio | 0.176 | | effectiveRatio | 0.12 | |
| 76.26% | AI-ism adverb frequency | Target: <2% AI-ism adverbs (58 tracked) | | wordCount | 1474 | | totalAiIsmAdverbs | 7 | | found | | | highlights | | 0 | "suddenly" | | 1 | "really" | | 2 | "slowly" | | 3 | "softly" | | 4 | "slightly" |
| |
| 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) | |
| 49.12% | AI-ism word frequency | Target: <2% AI-ism words (290 tracked) | | wordCount | 1474 | | totalAiIsms | 15 | | found | | | highlights | | 0 | "familiar" | | 1 | "intensity" | | 2 | "velvet" | | 3 | "aftermath" | | 4 | "silence" | | 5 | "weight" | | 6 | "flicker" | | 7 | "tension" | | 8 | "perfect" | | 9 | "fluttered" |
| |
| 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 | 77 | | matches | (empty) | |
| 87.20% | Filter word density | Target: ≤3% sentences with filter/hedge words | | filterCount | 1 | | hedgeCount | 2 | | narrationSentences | 77 | | filterMatches | | | hedgeMatches | | |
| 100.00% | Gibberish response detection | Target: ≤1% gibberish-like sentences (hard fail if a sentence exceeds 800 words) | | analyzedSentences | 110 | | gibberishSentences | 0 | | adjustedGibberishSentences | 0 | | longSentenceCount | 0 | | runOnParagraphCount | 0 | | giantParagraphCount | 0 | | wordSaladCount | 0 | | repetitionLoopCount | 0 | | controlTokenCount | 0 | | maxSentenceWordsSeen | 67 | | ratio | 0 | | matches | (empty) | |
| 100.00% | Markdown formatting overuse | Target: ≤5% words in markdown formatting | | markdownSpans | 0 | | markdownWords | 0 | | totalWords | 1485 | | ratio | 0 | | matches | (empty) | |
| 100.00% | Missing dialogue indicators (quotation marks) | Target: ≤10% speech attributions without quotation marks | | totalAttributions | 13 | | unquotedAttributions | 0 | | matches | (empty) | |
| 100.00% | Name drop frequency | Target: ≤1.0 per-name mentions per 100 words | | totalMentions | 29 | | wordCount | 1043 | | uniqueNames | 12 | | maxNameDensity | 0.58 | | worstName | "Lucien" | | maxWindowNameDensity | 1.5 | | worstWindowName | "Lucien" | | discoveredNames | | Ptolemy | 2 | | Eva | 3 | | East | 1 | | London | 3 | | Ashworth | 1 | | Moreau | 1 | | Aurora | 5 | | Lucien | 6 | | Cardiff | 2 | | Evan | 3 | | Fine | 1 | | Defeated | 1 |
| | persons | | 0 | "Ptolemy" | | 1 | "Eva" | | 2 | "Moreau" | | 3 | "Aurora" | | 4 | "Lucien" | | 5 | "Evan" |
| | places | | 0 | "East" | | 1 | "London" | | 2 | "Cardiff" |
| | globalScore | 1 | | windowScore | 1 | |
| 100.00% | Narrator intent-glossing | Target: ≤2% narration sentences with intent-glossing patterns | | analyzedSentences | 54 | | glossingSentenceCount | 1 | | matches | | 0 | "looked like he hadn't slept in weeks" |
| |
| 100.00% | "Not X but Y" pattern overuse | Target: ≤1 "not X but Y" per 1000 words | | totalMatches | 0 | | per1kWords | 0 | | wordCount | 1485 | | matches | (empty) | |
| 100.00% | Overuse of "that" (subordinate clause padding) | Target: ≤2% sentences with "that" clauses | | thatCount | 0 | | totalSentences | 110 | | matches | (empty) | |
| 100.00% | Paragraph length variance | Target: CV ≥0.5 for paragraph word counts | | totalParagraphs | 53 | | mean | 28.02 | | std | 25.61 | | cv | 0.914 | | sampleLengths | | 0 | 65 | | 1 | 10 | | 2 | 70 | | 3 | 1 | | 4 | 30 | | 5 | 5 | | 6 | 4 | | 7 | 67 | | 8 | 29 | | 9 | 37 | | 10 | 19 | | 11 | 8 | | 12 | 3 | | 13 | 39 | | 14 | 5 | | 15 | 32 | | 16 | 14 | | 17 | 50 | | 18 | 2 | | 19 | 3 | | 20 | 64 | | 21 | 5 | | 22 | 5 | | 23 | 2 | | 24 | 4 | | 25 | 41 | | 26 | 76 | | 27 | 10 | | 28 | 57 | | 29 | 11 | | 30 | 24 | | 31 | 3 | | 32 | 24 | | 33 | 67 | | 34 | 3 | | 35 | 60 | | 36 | 29 | | 37 | 4 | | 38 | 69 | | 39 | 4 | | 40 | 5 | | 41 | 57 | | 42 | 59 | | 43 | 52 | | 44 | 11 | | 45 | 38 | | 46 | 5 | | 47 | 88 | | 48 | 3 | | 49 | 58 |
| |
| 100.00% | Passive voice overuse | Target: ≤2% passive sentences | | passiveCount | 1 | | totalSentences | 77 | | matches | | |
| 87.64% | Past progressive (was/were + -ing) overuse | Target: ≤2% past progressive verbs | | pastProgressiveCount | 3 | | totalVerbs | 178 | | matches | | 0 | "weren't standing" | | 1 | "was preparing" | | 2 | "was shaking" |
| |
| 0.00% | Em-dash & semicolon overuse | Target: ≤2% sentences with em-dashes/semicolons | | emDashCount | 13 | | semicolonCount | 0 | | flaggedSentences | 11 | | totalSentences | 110 | | ratio | 0.1 | | matches | | 0 | "The knock came at half past ten — too late for deliveries, too early for neighbours with complaints." | | 1 | "But it was his eyes that stopped her breath — the amber one catching the warm light from the corridor, the black one fixed on her with an intensity that hadn't dimmed." | | 2 | "Lucien Moreau had survived demon courts and human politics and whatever complicated thing he was — half of something most people didn't believe existed." | | 3 | "\"I decided to find out by showing up.\" He shifted his weight, and for the first time, she saw the flicker of uncertainty in him — a slight tension in his jaw, a microscopic relaxation of his shoulders that meant he was preparing for rejection." | | 4 | "She hated it — the way her eyes burned, the way her throat tightened." | | 5 | "In the silence, she heard the muffled sounds of the curry house below — pots clattering, the distant murmur of customers." | | 6 | "She hadn't heard it spoken aloud in months — had spent years building walls between herself and the memory of his hands, his voice, the slow suffocation of loving someone who treated her like property." | | 7 | "Lucien looked at her — really looked, with both eyes, the amber and the black — and for a moment, the mask slipped." | | 8 | "When he opened them again, there was something raw in his expression — something that made him look less like the impeccably dressed fixer and more like a man standing in a doorway, hoping." | | 9 | "Aurora looked at him — at the man she'd been trying to forget, the man who'd kissed her like she mattered and then vanished like she didn't, the man who'd just travelled across London to tell her that her past had found her again." | | 10 | "And then his mouth was on hers, and the four months of silence collapsed into nothing, and she decided — just for tonight — to stop asking questions and start believing in the possibility of something other than running." |
| |
| 99.03% | Purple prose (modifier overload) | Target: <4% adverbs, <2% -ly adverbs, no adj stacking | | wordCount | 1046 | | adjectiveStacks | 0 | | stackExamples | (empty) | | adverbCount | 43 | | adverbRatio | 0.04110898661567878 | | lyAdverbCount | 12 | | lyAdverbRatio | 0.011472275334608031 | |
| 100.00% | Repeated phrase echo | Target: ≤20% sentences with echoes (window: 2) | | totalSentences | 110 | | echoCount | 0 | | echoWords | (empty) | |
| 100.00% | Sentence length variance | Target: CV ≥0.4 for sentence word counts | | totalSentences | 110 | | mean | 13.5 | | std | 12.68 | | cv | 0.94 | | sampleLengths | | 0 | 18 | | 1 | 22 | | 2 | 2 | | 3 | 23 | | 4 | 10 | | 5 | 24 | | 6 | 14 | | 7 | 32 | | 8 | 1 | | 9 | 16 | | 10 | 7 | | 11 | 7 | | 12 | 5 | | 13 | 4 | | 14 | 67 | | 15 | 9 | | 16 | 8 | | 17 | 12 | | 18 | 3 | | 19 | 4 | | 20 | 24 | | 21 | 6 | | 22 | 16 | | 23 | 3 | | 24 | 8 | | 25 | 3 | | 26 | 6 | | 27 | 23 | | 28 | 5 | | 29 | 5 | | 30 | 5 | | 31 | 12 | | 32 | 20 | | 33 | 14 | | 34 | 45 | | 35 | 5 | | 36 | 2 | | 37 | 3 | | 38 | 9 | | 39 | 54 | | 40 | 1 | | 41 | 5 | | 42 | 5 | | 43 | 2 | | 44 | 4 | | 45 | 25 | | 46 | 16 | | 47 | 4 | | 48 | 14 | | 49 | 30 |
| |
| 43.64% | Sentence opener variety | Target: ≥60% unique sentence openers | | consecutiveRepeats | 17 | | diversityRatio | 0.35454545454545455 | | totalSentences | 110 | | uniqueOpeners | 39 | |
| 45.66% | Adverb-first sentence starts | Target: ≥3% sentences starting with an adverb | | adverbCount | 1 | | totalSentences | 73 | | matches | | | ratio | 0.014 | |
| 28.22% | Pronoun-first sentence starts | Target: ≤30% sentences starting with a pronoun | | pronounCount | 35 | | totalSentences | 73 | | matches | | 0 | "She undid them one by" | | 1 | "His platinum hair was slicked" | | 2 | "Her name in his voice," | | 3 | "She hadn't heard it in" | | 4 | "She'd told herself she didn't" | | 5 | "He didn't flinch." | | 6 | "He tilted his head, and" | | 7 | "She hadn't dressed for visitors." | | 8 | "She hadn't dressed for him." | | 9 | "he said, as if that" | | 10 | "He shifted his weight, and" | | 11 | "She gestured at him, at" | | 12 | "He shook his head slowly" | | 13 | "She hated it — the" | | 14 | "She knew she wouldn't." | | 15 | "he said finally" | | 16 | "He paused, and his black" | | 17 | "She hadn't heard it spoken" | | 18 | "She'd left Cardiff because of" | | 19 | "She'd fled to London because" |
| | ratio | 0.479 | |
| 42.19% | Subject-first sentence starts | Target: ≤72% sentences starting with a subject | | subjectCount | 61 | | totalSentences | 73 | | matches | | 0 | "The knock came at half" | | 1 | "Aurora set down her coffee" | | 2 | "She undid them one by" | | 3 | "The door swung open, and" | | 4 | "Lucien stood in the hallway" | | 5 | "His platinum hair was slicked" | | 6 | "Her name in his voice," | | 7 | "She hadn't heard it in" | | 8 | "She'd told herself she didn't" | | 9 | "The question was polite, controlled," | | 10 | "The word came out sharper" | | 11 | "He didn't flinch." | | 12 | "Lucien Moreau had survived demon" | | 13 | "A refusal was nothing to" | | 14 | "He tilted his head, and" | | 15 | "The compliment landed like a" | | 16 | "Aurora stepped back, arms crossing" | | 17 | "She hadn't dressed for visitors." | | 18 | "She hadn't dressed for him." | | 19 | "he said, as if that" |
| | ratio | 0.836 | |
| 0.00% | Subordinate conjunction sentence starts | Target: ≥2% sentences starting with a subordinating conjunction | | subConjCount | 0 | | totalSentences | 73 | | matches | (empty) | | ratio | 0 | |
| 44.33% | Technical jargon density | Target: ≤6% sentences with technical-jargon patterns | | analyzedSentences | 29 | | technicalSentenceCount | 4 | | matches | | 0 | "But it was his eyes that stopped her breath — the amber one catching the warm light from the corridor, the black one fixed on her with an intensity that hadn't …" | | 1 | "She hadn't heard it spoken aloud in months — had spent years building walls between herself and the memory of his hands, his voice, the slow suffocation of lovi…" | | 2 | "When he opened them again, there was something raw in his expression — something that made him look less like the impeccably dressed fixer and more like a man s…" | | 3 | "The door closed behind him, and she reached up to touch his face without thinking, her thumb brushing the sharp line of his cheekbone." |
| |
| 36.76% | Useless dialogue additions | Target: ≤5% dialogue tags with trailing filler fragments | | totalTags | 17 | | uselessAdditionCount | 3 | | matches | | 0 | "the last time she'd, as if he hadn't kissed her in the alley behind Silas' bar and then vanished for weeks until the silence became its own answer" | | 1 | "he said, as if that explained anything" | | 2 | "Lucien stopped, his jaw tightening" |
| |
| 100.00% | Dialogue tag variety (said vs. fancy) | Target: ≤10% fancy dialogue tags | | totalTags | 5 | | fancyCount | 1 | | fancyTags | | 0 | "she whispered (whisper)" |
| | dialogueSentences | 50 | | tagDensity | 0.1 | | leniency | 0.2 | | rawRatio | 0.2 | | effectiveRatio | 0.04 | |