| 100.00% | Adverbs in dialogue tags | Target: ≤10% dialogue tags with adverbs | | totalTags | 26 | | adverbTagCount | 3 | | adverbTags | | 0 | "she said quietly [quietly]" | | 1 | "she asked again [again]" | | 2 | "Rory said softly [softly]" |
| | dialogueSentences | 69 | | tagDensity | 0.377 | | leniency | 0.754 | | rawRatio | 0.115 | | effectiveRatio | 0.087 | |
| 78.25% | AI-ism adverb frequency | Target: <2% AI-ism adverbs (58 tracked) | | wordCount | 1839 | | totalAiIsmAdverbs | 8 | | found | | | highlights | | 0 | "suddenly" | | 1 | "slightly" | | 2 | "carefully" | | 3 | "completely" | | 4 | "quickly" | | 5 | "truly" | | 6 | "softly" |
| |
| 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) | |
| 61.94% | AI-ism word frequency | Target: <2% AI-ism words (290 tracked) | | wordCount | 1839 | | totalAiIsms | 14 | | found | | | highlights | | 0 | "silence" | | 1 | "cataloged" | | 2 | "electric" | | 3 | "measured" | | 4 | "flickered" | | 5 | "tracing" | | 6 | "fluttered" | | 7 | "perfect" | | 8 | "unravel" | | 9 | "familiar" | | 10 | "tension" | | 11 | "flicker" |
| |
| 66.67% | Cliché density | Target: ≤1 cliche(s) per 800-word window | | totalCliches | 2 | | maxInWindow | 2 | | found | | 0 | | label | "without second thought" | | count | 1 |
| | 1 | | label | "hung in the air" | | count | 1 |
|
| | highlights | | 0 | "without a second thought" | | 1 | "hung in the air" |
| |
| 100.00% | Emotion telling (show vs. tell) | Target: ≤3% sentences with emotion telling | | emotionTells | 0 | | narrationSentences | 91 | | matches | (empty) | |
| 64.36% | Filter word density | Target: ≤3% sentences with filter/hedge words | | filterCount | 2 | | hedgeCount | 3 | | narrationSentences | 91 | | filterMatches | | | hedgeMatches | | |
| 100.00% | Gibberish response detection | Target: ≤1% gibberish-like sentences (hard fail if a sentence exceeds 800 words) | | analyzedSentences | 131 | | gibberishSentences | 0 | | adjustedGibberishSentences | 0 | | longSentenceCount | 0 | | runOnParagraphCount | 0 | | giantParagraphCount | 0 | | wordSaladCount | 0 | | repetitionLoopCount | 0 | | controlTokenCount | 0 | | maxSentenceWordsSeen | 70 | | ratio | 0 | | matches | (empty) | |
| 100.00% | Markdown formatting overuse | Target: ≤5% words in markdown formatting | | markdownSpans | 0 | | markdownWords | 0 | | totalWords | 1826 | | ratio | 0 | | matches | (empty) | |
| 100.00% | Missing dialogue indicators (quotation marks) | Target: ≤10% speech attributions without quotation marks | | totalAttributions | 31 | | unquotedAttributions | 0 | | matches | (empty) | |
| 83.33% | Name drop frequency | Target: ≤1.0 per-name mentions per 100 words | | totalMentions | 46 | | wordCount | 1214 | | uniqueNames | 16 | | maxNameDensity | 1.32 | | worstName | "Lucien" | | maxWindowNameDensity | 2.5 | | worstWindowName | "Lucien" | | discoveredNames | | Rory | 9 | | Moreau | 2 | | Like | 1 | | Golden | 1 | | Empress | 1 | | Lucien | 16 | | Ptolemy | 2 | | Distance | 1 | | Welsh | 1 | | Eva | 4 | | Silas | 1 | | Shoreditch | 1 | | Evan | 3 | | London | 1 | | Brick | 1 | | Lane | 1 |
| | persons | | 0 | "Rory" | | 1 | "Moreau" | | 2 | "Lucien" | | 3 | "Ptolemy" | | 4 | "Eva" | | 5 | "Silas" | | 6 | "Evan" |
| | places | | 0 | "Distance" | | 1 | "London" | | 2 | "Brick" | | 3 | "Lane" |
| | globalScore | 0.841 | | windowScore | 0.833 | |
| 100.00% | Narrator intent-glossing | Target: ≤2% narration sentences with intent-glossing patterns | | analyzedSentences | 66 | | glossingSentenceCount | 1 | | matches | | 0 | "looked like he'd stepped out of a magazin" |
| |
| 100.00% | "Not X but Y" pattern overuse | Target: ≤1 "not X but Y" per 1000 words | | totalMatches | 0 | | per1kWords | 0 | | wordCount | 1826 | | matches | (empty) | |
| 90.33% | Overuse of "that" (subordinate clause padding) | Target: ≤2% sentences with "that" clauses | | thatCount | 3 | | totalSentences | 131 | | matches | | 0 | "brushed that errant" | | 1 | "hurt that she'd" | | 2 | "chose that moment" |
| |
| 100.00% | Paragraph length variance | Target: CV ≥0.5 for paragraph word counts | | totalParagraphs | 67 | | mean | 27.25 | | std | 24.41 | | cv | 0.895 | | sampleLengths | | 0 | 86 | | 1 | 14 | | 2 | 23 | | 3 | 13 | | 4 | 73 | | 5 | 6 | | 6 | 12 | | 7 | 49 | | 8 | 70 | | 9 | 32 | | 10 | 4 | | 11 | 9 | | 12 | 41 | | 13 | 1 | | 14 | 33 | | 15 | 33 | | 16 | 25 | | 17 | 5 | | 18 | 27 | | 19 | 27 | | 20 | 6 | | 21 | 69 | | 22 | 26 | | 23 | 8 | | 24 | 75 | | 25 | 10 | | 26 | 20 | | 27 | 4 | | 28 | 5 | | 29 | 45 | | 30 | 6 | | 31 | 8 | | 32 | 66 | | 33 | 13 | | 34 | 51 | | 35 | 93 | | 36 | 64 | | 37 | 16 | | 38 | 21 | | 39 | 90 | | 40 | 9 | | 41 | 3 | | 42 | 13 | | 43 | 24 | | 44 | 1 | | 45 | 4 | | 46 | 29 | | 47 | 27 | | 48 | 62 | | 49 | 37 |
| |
| 100.00% | Passive voice overuse | Target: ≤2% passive sentences | | passiveCount | 0 | | totalSentences | 91 | | matches | (empty) | |
| 100.00% | Past progressive (was/were + -ing) overuse | Target: ≤2% past progressive verbs | | pastProgressiveCount | 3 | | totalVerbs | 226 | | matches | | 0 | "was, filling" | | 1 | "was already crossing" | | 2 | "was doing" |
| |
| 0.00% | Em-dash & semicolon overuse | Target: ≤2% sentences with em-dashes/semicolons | | emDashCount | 13 | | semicolonCount | 0 | | flaggedSentences | 9 | | totalSentences | 131 | | ratio | 0.069 | | matches | | 0 | "His mismatched eyes—amber and black, always unsettling, always beautiful—widened for just a fraction of a second before his expression smoothed into something carefully neutral." | | 1 | "Rory became acutely aware of what she must look like—her black hair scraped back in a messy ponytail, still wearing the Golden Empress polo from her shift, probably smelling faintly of garlic sauce." | | 2 | "Eva's flat swallowed them both in its chaos—towers of occult texts threatening to topple from every surface, Ptolemy's orange tabby fur coating the threadbare couch, three deadbolts now hanging uselessly open behind them." | | 3 | "\"Tea?\" The offer came out reflexively—her mother's voice in her head, the Welsh compulsion to offer hospitality even to people who'd carved holes in your chest." | | 4 | "\"It's what you told me.\" She could still hear it, four months and two weeks and three days ago, standing in the alley behind Silas's bar while Lucien explained, in that infuriatingly measured voice, why this—whatever this was—couldn't continue." | | 5 | "Rory's fingers found the small crescent-shaped scar on her left wrist, tracing it without thinking—an old habit, a grounding mechanism from childhood that had taken on new meaning in recent years." | | 6 | "He stopped just short of touching her, close enough that she could smell his cologne—sandalwood and something darker underneath, something that reminded her of incense and old churches and the particular sulfuric tang of the demonic realm he'd never fully escaped." | | 7 | "When he looked at her, she felt seen—truly seen—in a way that was terrifying and exhilarating in equal measure." | | 8 | "And when Lucien kissed her—finally, finally kissed her, gentle and desperate and full of all the words they hadn't yet said—she let herself believe, for the first time in four months, that maybe some broken things could be put back together." |
| |
| 72.73% | Purple prose (modifier overload) | Target: <4% adverbs, <2% -ly adverbs, no adj stacking | | wordCount | 1230 | | adjectiveStacks | 1 | | stackExamples | | 0 | "small crescent-shaped scar" |
| | adverbCount | 73 | | adverbRatio | 0.05934959349593496 | | lyAdverbCount | 31 | | lyAdverbRatio | 0.025203252032520326 | |
| 100.00% | Repeated phrase echo | Target: ≤20% sentences with echoes (window: 2) | | totalSentences | 131 | | echoCount | 0 | | echoWords | (empty) | |
| 100.00% | Sentence length variance | Target: CV ≥0.4 for sentence word counts | | totalSentences | 131 | | mean | 13.94 | | std | 12.06 | | cv | 0.865 | | sampleLengths | | 0 | 34 | | 1 | 28 | | 2 | 24 | | 3 | 10 | | 4 | 4 | | 5 | 11 | | 6 | 12 | | 7 | 8 | | 8 | 5 | | 9 | 21 | | 10 | 33 | | 11 | 19 | | 12 | 6 | | 13 | 9 | | 14 | 3 | | 15 | 8 | | 16 | 12 | | 17 | 29 | | 18 | 33 | | 19 | 17 | | 20 | 20 | | 21 | 11 | | 22 | 1 | | 23 | 3 | | 24 | 17 | | 25 | 4 | | 26 | 3 | | 27 | 6 | | 28 | 26 | | 29 | 15 | | 30 | 1 | | 31 | 4 | | 32 | 29 | | 33 | 7 | | 34 | 26 | | 35 | 3 | | 36 | 18 | | 37 | 4 | | 38 | 5 | | 39 | 18 | | 40 | 9 | | 41 | 7 | | 42 | 20 | | 43 | 6 | | 44 | 39 | | 45 | 11 | | 46 | 19 | | 47 | 6 | | 48 | 18 | | 49 | 2 |
| |
| 60.56% | Sentence opener variety | Target: ≥60% unique sentence openers | | consecutiveRepeats | 14 | | diversityRatio | 0.42748091603053434 | | totalSentences | 131 | | uniqueOpeners | 56 | |
| 100.00% | Adverb-first sentence starts | Target: ≥3% sentences starting with an adverb | | adverbCount | 3 | | totalSentences | 81 | | matches | | 0 | "Meanwhile, Lucien looked like he'd" | | 1 | "Instead, she'd watched him walk" | | 2 | "Instead, she reached up and" |
| | ratio | 0.037 | |
| 47.16% | Pronoun-first sentence starts | Target: ≤30% sentences starting with a pronoun | | pronounCount | 35 | | totalSentences | 81 | | matches | | 0 | "His mismatched eyes—amber and black," | | 1 | "Her full name, the way" | | 2 | "He didn't move from the" | | 3 | "She stepped back from the" | | 4 | "she said, moving toward the" | | 5 | "She needed distance." | | 6 | "She didn't reply." | | 7 | "They both knew she wouldn't" | | 8 | "She filled the electric kettle" | | 9 | "He'd only called her that" | | 10 | "She turned, leaning against the" | | 11 | "He set the cane against" | | 12 | "She could still hear it," | | 13 | "She'd wanted to scream at" | | 14 | "she said quietly" | | 15 | "She closed her eyes." | | 16 | "He saw too much, understood" | | 17 | "she asked again, opening her" | | 18 | "He stopped just short of" | | 19 | "His voice was low, almost" |
| | ratio | 0.432 | |
| 52.59% | Subject-first sentence starts | Target: ≤72% sentences starting with a subject | | subjectCount | 66 | | totalSentences | 81 | | matches | | 0 | "The door swung open before" | | 1 | "Lucien Moreau, in a charcoal" | | 2 | "His mismatched eyes—amber and black," | | 3 | "Her full name, the way" | | 4 | "The words came out flatter" | | 5 | "He didn't move from the" | | 6 | "The curry house below them" | | 7 | "Rory became acutely aware of" | | 8 | "Something twisted in her chest," | | 9 | "She stepped back from the" | | 10 | "Eva's flat swallowed them both" | | 11 | "Rory watched Lucien take in" | | 12 | "The way it had cataloged" | | 13 | "she said, moving toward the" | | 14 | "She needed distance." | | 15 | "She didn't reply." | | 16 | "They both knew she wouldn't" | | 17 | "The offer came out reflexively—her" | | 18 | "She filled the electric kettle" | | 19 | "The nickname stopped her." |
| | ratio | 0.815 | |
| 61.73% | Subordinate conjunction sentence starts | Target: ≥2% sentences starting with a subordinating conjunction | | subConjCount | 1 | | totalSentences | 81 | | matches | | 0 | "Now he smiled, slow and" |
| | ratio | 0.012 | |
| 55.75% | Technical jargon density | Target: ≤6% sentences with technical-jargon patterns | | analyzedSentences | 41 | | technicalSentenceCount | 5 | | matches | | 0 | "She filled the electric kettle without waiting for his response, keeping her back to him." | | 1 | "Rory's fingers found the small crescent-shaped scar on her left wrist, tracing it without thinking—an old habit, a grounding mechanism from childhood that had t…" | | 2 | "He stopped just short of touching her, close enough that she could smell his cologne—sandalwood and something darker underneath, something that reminded her of …" | | 3 | "She should remember all the nights she'd spent staring at her ceiling, replaying their last conversation, cataloging all the ways she'd let herself be vulnerabl…" | | 4 | "When he looked at her, she felt seen—truly seen—in a way that was terrifying and exhilarating in equal measure." |
| |
| 48.08% | Useless dialogue additions | Target: ≤5% dialogue tags with trailing filler fragments | | totalTags | 26 | | uselessAdditionCount | 4 | | matches | | 0 | "He set, as if he needed both hands free for this" | | 1 | "His hand came up, thumb brushing her cheekbone with devastating gentleness" | | 2 | "He leaned, and the gesture was so familiar, so achingly familiar, that her breath caught" | | 3 | "He caught, and his skin was warm, almost hot, the demon blood running through his veins making itself known" |
| |
| 100.00% | Dialogue tag variety (said vs. fancy) | Target: ≤10% fancy dialogue tags | | totalTags | 11 | | fancyCount | 2 | | fancyTags | | 0 | "Rory laughed (laugh)" | | 1 | "Rory whispered (whisper)" |
| | dialogueSentences | 69 | | tagDensity | 0.159 | | leniency | 0.319 | | rawRatio | 0.182 | | effectiveRatio | 0.058 | |