| 46.15% | Adverbs in dialogue tags | Target: ≤10% dialogue tags with adverbs | | totalTags | 17 | | adverbTagCount | 3 | | adverbTags | | 0 | "he said quietly [quietly]" | | 1 | "The lie tasted like [like]" | | 2 | "he said softly [softly]" |
| | dialogueSentences | 39 | | tagDensity | 0.436 | | leniency | 0.872 | | rawRatio | 0.176 | | effectiveRatio | 0.154 | |
| 87.31% | AI-ism adverb frequency | Target: <2% AI-ism adverbs (58 tracked) | | wordCount | 1576 | | totalAiIsmAdverbs | 4 | | found | | 0 | | | 1 | | adverb | "barely above a whisper" | | count | 1 |
| | 2 | | | 3 | |
| | highlights | | 0 | "very" | | 1 | "barely above a whisper" | | 2 | "softly" | | 3 | "truly" |
| |
| 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) | |
| 71.45% | AI-ism word frequency | Target: <2% AI-ism words (290 tracked) | | wordCount | 1576 | | totalAiIsms | 9 | | found | | 0 | | | 1 | | | 2 | | word | "the last thing" | | count | 1 |
| | 3 | | | 4 | | | 5 | | | 6 | | | 7 | |
| | highlights | | 0 | "flickered" | | 1 | "charm" | | 2 | "the last thing" | | 3 | "whisper" | | 4 | "traced" | | 5 | "velvet" | | 6 | "restrained" | | 7 | "silence" |
| |
| 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 | 77 | | matches | (empty) | |
| 100.00% | Filter word density | Target: ≤3% sentences with filter/hedge words | | filterCount | 0 | | hedgeCount | 1 | | narrationSentences | 77 | | filterMatches | (empty) | | hedgeMatches | | |
| 100.00% | Gibberish response detection | Target: ≤1% gibberish-like sentences (hard fail if a sentence exceeds 800 words) | | analyzedSentences | 97 | | gibberishSentences | 0 | | adjustedGibberishSentences | 0 | | longSentenceCount | 0 | | runOnParagraphCount | 0 | | giantParagraphCount | 0 | | wordSaladCount | 0 | | repetitionLoopCount | 0 | | controlTokenCount | 0 | | repeatedSegmentCount | 0 | | maxSentenceWordsSeen | 50 | | ratio | 0 | | matches | (empty) | |
| 100.00% | Markdown formatting overuse | Target: ≤5% words in markdown formatting | | markdownSpans | 4 | | markdownWords | 4 | | totalWords | 1556 | | ratio | 0.003 | | matches | | 0 | "wanted" | | 1 | "chérie" | | 2 | "chérie" | | 3 | "worried" |
| |
| 100.00% | Missing dialogue indicators (quotation marks) | Target: ≤10% speech attributions without quotation marks | | totalAttributions | 15 | | unquotedAttributions | 1 | | matches | | 0 | "The ache in her chest was not pain, she told herself." |
| |
| 100.00% | Name drop frequency | Target: ≤1.0 per-name mentions per 100 words | | totalMentions | 22 | | wordCount | 1072 | | uniqueNames | 10 | | maxNameDensity | 0.47 | | worstName | "Ptolemy" | | maxWindowNameDensity | 1 | | worstWindowName | "Ptolemy" | | discoveredNames | | Ptolemy | 5 | | Eva | 3 | | Thames | 2 | | Evan | 1 | | London | 2 | | French | 1 | | Moreau | 1 | | Silas | 1 | | Rory | 3 | | Lucien | 3 |
| | persons | | 0 | "Ptolemy" | | 1 | "Eva" | | 2 | "Evan" | | 3 | "Moreau" | | 4 | "Silas" | | 5 | "Rory" | | 6 | "Lucien" |
| | places | | | globalScore | 1 | | windowScore | 1 | |
| 0.00% | Narrator intent-glossing | Target: ≤2% narration sentences with intent-glossing patterns | | analyzedSentences | 56 | | glossingSentenceCount | 4 | | matches | | 0 | "felt like a small act of defiance again" | | 1 | "quite suppress" | | 2 | "something like smoke and old leather, filled" | | 3 | "something like wonder crossed his face" |
| |
| 100.00% | "Not X but Y" pattern overuse | Target: ≤1 "not X but Y" per 1000 words | | totalMatches | 1 | | per1kWords | 0.643 | | wordCount | 1556 | | matches | | 0 | "not from him, but from the possibility" |
| |
| 100.00% | Overuse of "that" (subordinate clause padding) | Target: ≤2% sentences with "that" clauses | | thatCount | 0 | | totalSentences | 97 | | matches | (empty) | |
| 100.00% | Paragraph length variance | Target: CV ≥0.5 for paragraph word counts | | totalParagraphs | 45 | | mean | 34.58 | | std | 24.48 | | cv | 0.708 | | sampleLengths | | 0 | 89 | | 1 | 53 | | 2 | 16 | | 3 | 58 | | 4 | 17 | | 5 | 21 | | 6 | 22 | | 7 | 50 | | 8 | 40 | | 9 | 16 | | 10 | 88 | | 11 | 2 | | 12 | 36 | | 13 | 25 | | 14 | 24 | | 15 | 93 | | 16 | 36 | | 17 | 8 | | 18 | 9 | | 19 | 71 | | 20 | 42 | | 21 | 10 | | 22 | 7 | | 23 | 63 | | 24 | 55 | | 25 | 25 | | 26 | 6 | | 27 | 78 | | 28 | 41 | | 29 | 11 | | 30 | 23 | | 31 | 3 | | 32 | 35 | | 33 | 8 | | 34 | 63 | | 35 | 43 | | 36 | 24 | | 37 | 10 | | 38 | 35 | | 39 | 48 | | 40 | 11 | | 41 | 56 | | 42 | 38 | | 43 | 37 | | 44 | 10 |
| |
| 82.48% | Passive voice overuse | Target: ≤2% passive sentences | | passiveCount | 5 | | totalSentences | 77 | | matches | | 0 | "was draped" | | 1 | "being cocked" | | 2 | "was soaked" | | 3 | "was plastered" | | 4 | "been—found" |
| |
| 100.00% | Past progressive (was/were + -ing) overuse | Target: ≤2% past progressive verbs | | pastProgressiveCount | 1 | | totalVerbs | 175 | | matches | | |
| 0.00% | Em-dash & semicolon overuse | Target: ≤2% sentences with em-dashes/semicolons | | emDashCount | 17 | | semicolonCount | 0 | | flaggedSentences | 14 | | totalSentences | 97 | | ratio | 0.144 | | matches | | 0 | "The curry house below had long since closed, its grease and spice still clinging to the wallpaper, and the flat's other inhabitants—Ptolemy, who was draped across a stack of Eva's research notes like a furry paperweight—had been the only source of movement for hours." | | 1 | "That voice—smooth as poured honey, with its faint French curl that turned her name into something with three syllables and a history." | | 2 | "Lucien Moreau stood in the dim hallway light, and the sight of him was a physical thing—a sharp intake of breath she couldn't quite suppress." | | 3 | "And his eyes—one amber, one black, mismatched as they'd always been—found hers and held." | | 4 | "A reference to something else entirely—the last time they'd spoken, the last time she'd seen him." | | 5 | "Lucien's gaze flickered past her, taking in the chaos of the cramped flat—the towers of books, the scroll cases propped against the radiator, the half-drunk cup of tea that had gone cold hours ago." | | 6 | "\"—then I wanted to see you. Is that so difficult to believe?\"" | | 7 | "The movement was not surrender—she would never call it that—but her hand came away from the doorframe and she let him pass." | | 8 | "Ptolemy had followed him and was now rubbing against his wet trouser leg—a show of feline approval that made Rory want to scold him." | | 9 | "\"That's not what I meant.\" He turned to face her, and there it was again—that vulnerability, that raw thing he normally kept buried under six layers of tailored charm." | | 10 | "\"I don't know what happened. That's the whole point.\" Her voice cracked, and she hated it, hated the way he could still do this to her—after months of careful distance, of telling herself she was better off without the complications of a half-demon with more secrets than suits." | | 11 | "His amber eye burned in the low light, and she remembered the first time she'd seen him—at the bar, nursing a whiskey, looking like a man made of knives and velvet." | | 12 | "Lucien reached out, and she flinched—not from him, but from the possibility." | | 13 | "Rory looked at him—at his mismatched eyes, at the wet ruin of his expensive suit, at the man who kept knives in his cane and secrets in his chest, and realized the truth she'd been running from." |
| |
| 100.00% | Purple prose (modifier overload) | Target: <4% adverbs, <2% -ly adverbs, no adj stacking | | wordCount | 895 | | adjectiveStacks | 0 | | stackExamples | (empty) | | adverbCount | 28 | | adverbRatio | 0.03128491620111732 | | lyAdverbCount | 7 | | lyAdverbRatio | 0.00782122905027933 | |
| 100.00% | Repeated phrase echo | Target: ≤20% sentences with echoes (window: 2) | | totalSentences | 97 | | echoCount | 0 | | echoWords | (empty) | |
| 100.00% | Sentence length variance | Target: CV ≥0.4 for sentence word counts | | totalSentences | 97 | | mean | 16.04 | | std | 11.83 | | cv | 0.737 | | sampleLengths | | 0 | 12 | | 1 | 44 | | 2 | 33 | | 3 | 2 | | 4 | 14 | | 5 | 1 | | 6 | 1 | | 7 | 1 | | 8 | 34 | | 9 | 12 | | 10 | 4 | | 11 | 4 | | 12 | 22 | | 13 | 7 | | 14 | 25 | | 15 | 17 | | 16 | 19 | | 17 | 2 | | 18 | 12 | | 19 | 10 | | 20 | 2 | | 21 | 13 | | 22 | 35 | | 23 | 4 | | 24 | 11 | | 25 | 19 | | 26 | 3 | | 27 | 3 | | 28 | 12 | | 29 | 4 | | 30 | 25 | | 31 | 18 | | 32 | 23 | | 33 | 8 | | 34 | 14 | | 35 | 2 | | 36 | 11 | | 37 | 16 | | 38 | 9 | | 39 | 10 | | 40 | 15 | | 41 | 14 | | 42 | 10 | | 43 | 34 | | 44 | 17 | | 45 | 30 | | 46 | 12 | | 47 | 10 | | 48 | 26 | | 49 | 8 |
| |
| 43.64% | Sentence opener variety | Target: ≥60% unique sentence openers | | consecutiveRepeats | 11 | | diversityRatio | 0.32989690721649484 | | totalSentences | 97 | | uniqueOpeners | 32 | |
| 48.31% | Adverb-first sentence starts | Target: ≥3% sentences starting with an adverb | | adverbCount | 1 | | totalSentences | 69 | | matches | | 0 | "Then his voice came through" |
| | ratio | 0.014 | |
| 22.90% | Pronoun-first sentence starts | Target: ≤30% sentences starting with a pronoun | | pronounCount | 34 | | totalSentences | 69 | | matches | | 0 | "She'd gotten into the habit" | | 1 | "Her fingers went still." | | 2 | "She hadn't heard it in" | | 3 | "She hadn't meant to answer" | | 4 | "She closed her eyes." | | 5 | "It was the stale curry" | | 6 | "It was exhaustion." | | 7 | "She opened the door." | | 8 | "His charcoal suit was soaked" | | 9 | "His platinum hair, usually slicked" | | 10 | "His mouth curved, a smile" | | 11 | "She kept her body in" | | 12 | "He paused, and something shifted" | | 13 | "She heard her own voice," | | 14 | "She stepped aside." | | 15 | "He moved past her into" | | 16 | "He carried the smell of" | | 17 | "He stopped in the middle" | | 18 | "he said quietly" | | 19 | "He turned to face her," |
| | ratio | 0.493 | |
| 0.00% | Subject-first sentence starts | Target: ≤72% sentences starting with a subject | | subjectCount | 66 | | totalSentences | 69 | | matches | | 0 | "The knock came at half" | | 1 | "The curry house below had" | | 2 | "Rory had been reading by" | | 3 | "She'd gotten into the habit" | | 4 | "Each click of the key" | | 5 | "The fourth knock came while" | | 6 | "Her fingers went still." | | 7 | "That voice—smooth as poured honey," | | 8 | "She hadn't heard it in" | | 9 | "Ptolemy had indeed abandoned his" | | 10 | "She hadn't meant to answer" | | 11 | "The words came out like" | | 12 | "She closed her eyes." | | 13 | "The ache in her chest" | | 14 | "It was the stale curry" | | 15 | "It was exhaustion." | | 16 | "That was all." | | 17 | "The bolt slid back with" | | 18 | "She opened the door." | | 19 | "Lucien Moreau stood in the" |
| | ratio | 0.957 | |
| 0.00% | Subordinate conjunction sentence starts | Target: ≥2% sentences starting with a subordinating conjunction | | subConjCount | 0 | | totalSentences | 69 | | matches | (empty) | | ratio | 0 | |
| 0.00% | Technical jargon density | Target: ≤6% sentences with technical-jargon patterns | | analyzedSentences | 38 | | technicalSentenceCount | 8 | | matches | | 0 | "The curry house below had long since closed, its grease and spice still clinging to the wallpaper, and the flat's other inhabitants—Ptolemy, who was draped acro…" | | 1 | "Each click of the key felt like a small act of defiance against the world outside, against Evan, against everything that had driven her to London with nothing b…" | | 2 | "That voice—smooth as poured honey, with its faint French curl that turned her name into something with three syllables and a history." | | 3 | "It was the stale curry air, the long day of deliveries through streets that turned her calves to stone." | | 4 | "His platinum hair, usually slicked back with the precision of a man who controlled everything, was plastered to his forehead in damp strands." | | 5 | "His mouth curved, a smile that didn't reach his eyes." | | 6 | "Lucien's gaze flickered past her, taking in the chaos of the cramped flat—the towers of books, the scroll cases propped against the radiator, the half-drunk cup…" | | 7 | "Rory looked at him—at his mismatched eyes, at the wet ruin of his expensive suit, at the man who kept knives in his cane and secrets in his chest, and realized …" |
| |
| 95.59% | Useless dialogue additions | Target: ≤5% dialogue tags with trailing filler fragments | | totalTags | 17 | | uselessAdditionCount | 1 | | matches | | 0 | "She stopped, the words catching in her throat" |
| |
| 100.00% | Dialogue tag variety (said vs. fancy) | Target: ≤10% fancy dialogue tags | | totalTags | 3 | | fancyCount | 0 | | fancyTags | (empty) | | dialogueSentences | 39 | | tagDensity | 0.077 | | leniency | 0.154 | | rawRatio | 0 | | effectiveRatio | 0 | |