| 100.00% | Adverbs in dialogue tags | Target: ≤10% dialogue tags with adverbs | | totalTags | 20 | | adverbTagCount | 4 | | adverbTags | | 0 | "She shifts uncomfortably [uncomfortably]" | | 1 | "He steps further [further]" | | 2 | "He smiles then [then]" | | 3 | "she says softly [softly]" |
| | dialogueSentences | 85 | | tagDensity | 0.235 | | leniency | 0.471 | | rawRatio | 0.2 | | effectiveRatio | 0.094 | |
| 60.29% | AI-ism adverb frequency | Target: <2% AI-ism adverbs (58 tracked) | | wordCount | 1637 | | totalAiIsmAdverbs | 13 | | found | | 0 | | | 1 | | | 2 | | | 3 | | | 4 | | | 5 | | adverb | "reluctantly" | | count | 1 |
| | 6 | | | 7 | | adverb | "barely above a whisper" | | count | 1 |
| | 8 | |
| | highlights | | 0 | "carefully" | | 1 | "really" | | 2 | "slightly" | | 3 | "sharply" | | 4 | "suddenly" | | 5 | "reluctantly" | | 6 | "utterly" | | 7 | "barely above a whisper" | | 8 | "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) | |
| 48.08% | AI-ism word frequency | Target: <2% AI-ism words (290 tracked) | | wordCount | 1637 | | totalAiIsms | 17 | | found | | | highlights | | 0 | "constructed" | | 1 | "intensity" | | 2 | "weight" | | 3 | "familiar" | | 4 | "dance" | | 5 | "pulse" | | 6 | "race" | | 7 | "silence" | | 8 | "unspoken" | | 9 | "unreadable" | | 10 | "etched" | | 11 | "whisper" |
| |
| 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 | 76 | | matches | (empty) | |
| 100.00% | Filter word density | Target: ≤3% sentences with filter/hedge words | | filterCount | 0 | | hedgeCount | 0 | | narrationSentences | 76 | | filterMatches | (empty) | | hedgeMatches | (empty) | |
| 100.00% | Gibberish response detection | Target: ≤1% gibberish-like sentences (hard fail if a sentence exceeds 800 words) | | analyzedSentences | 140 | | gibberishSentences | 0 | | adjustedGibberishSentences | 0 | | longSentenceCount | 0 | | runOnParagraphCount | 0 | | giantParagraphCount | 0 | | wordSaladCount | 0 | | repetitionLoopCount | 0 | | controlTokenCount | 0 | | repeatedSegmentCount | 0 | | maxSentenceWordsSeen | 46 | | ratio | 0 | | matches | (empty) | |
| 100.00% | Markdown formatting overuse | Target: ≤5% words in markdown formatting | | markdownSpans | 0 | | markdownWords | 0 | | totalWords | 1649 | | ratio | 0 | | matches | (empty) | |
| 100.00% | Missing dialogue indicators (quotation marks) | Target: ≤10% speech attributions without quotation marks | | totalAttributions | 18 | | unquotedAttributions | 0 | | matches | (empty) | |
| 100.00% | Name drop frequency | Target: ≤1.0 per-name mentions per 100 words | | totalMentions | 14 | | wordCount | 1183 | | uniqueNames | 10 | | maxNameDensity | 0.25 | | worstName | "Lucien" | | maxWindowNameDensity | 1 | | worstWindowName | "Lucien" | | discoveredNames | | Lucien | 3 | | Moreau | 1 | | Tuesday | 1 | | Three | 2 | | Kovalenko | 1 | | British | 1 | | Museum | 1 | | Viktor | 2 | | Evan | 1 | | London | 1 |
| | persons | | 0 | "Lucien" | | 1 | "Moreau" | | 2 | "Kovalenko" | | 3 | "Viktor" | | 4 | "Evan" |
| | places | | 0 | "British" | | 1 | "Museum" | | 2 | "London" |
| | globalScore | 1 | | windowScore | 1 | |
| 100.00% | Narrator intent-glossing | Target: ≤2% narration sentences with intent-glossing patterns | | analyzedSentences | 65 | | glossingSentenceCount | 1 | | matches | | 0 | "as if handling something fragile" |
| |
| 100.00% | "Not X but Y" pattern overuse | Target: ≤1 "not X but Y" per 1000 words | | totalMatches | 0 | | per1kWords | 0 | | wordCount | 1649 | | matches | (empty) | |
| 71.43% | Overuse of "that" (subordinate clause padding) | Target: ≤2% sentences with "that" clauses | | thatCount | 4 | | totalSentences | 140 | | matches | | 0 | "heard that voice" | | 1 | "out that she'shappened that night" | | 2 | "believe that whatever" |
| |
| 100.00% | Paragraph length variance | Target: CV ≥0.5 for paragraph word counts | | totalParagraphs | 88 | | mean | 18.74 | | std | 16.68 | | cv | 0.89 | | sampleLengths | | 0 | 45 | | 1 | 1 | | 2 | 37 | | 3 | 35 | | 4 | 5 | | 5 | 48 | | 6 | 19 | | 7 | 3 | | 8 | 4 | | 9 | 37 | | 10 | 23 | | 11 | 6 | | 12 | 1 | | 13 | 8 | | 14 | 8 | | 15 | 52 | | 16 | 21 | | 17 | 22 | | 18 | 23 | | 19 | 3 | | 20 | 2 | | 21 | 4 | | 22 | 22 | | 23 | 10 | | 24 | 28 | | 25 | 22 | | 26 | 3 | | 27 | 17 | | 28 | 32 | | 29 | 7 | | 30 | 20 | | 31 | 22 | | 32 | 69 | | 33 | 6 | | 34 | 8 | | 35 | 1 | | 36 | 56 | | 37 | 51 | | 38 | 24 | | 39 | 3 | | 40 | 22 | | 41 | 5 | | 42 | 40 | | 43 | 27 | | 44 | 3 | | 45 | 2 | | 46 | 36 | | 47 | 31 | | 48 | 4 | | 49 | 25 |
| |
| 100.00% | Passive voice overuse | Target: ≤2% passive sentences | | passiveCount | 1 | | totalSentences | 76 | | matches | | |
| 100.00% | Past progressive (was/were + -ing) overuse | Target: ≤2% past progressive verbs | | pastProgressiveCount | 3 | | totalVerbs | 223 | | matches | | 0 | "was trying" | | 1 | "was trying" | | 2 | "was trying" |
| |
| 0.00% | Em-dash & semicolon overuse | Target: ≤2% sentences with em-dashes/semicolons | | emDashCount | 12 | | semicolonCount | 0 | | flaggedSentences | 11 | | totalSentences | 140 | | ratio | 0.079 | | matches | | 0 | "Three years since she last heard that voice, since she last saw those heterochromatic eyes — amber and black, like molten gold and obsidian swirling together." | | 1 | "The flat smells different now — less incense and old books, more curry from the restaurant downstairs and the lingering scent of someone else's shampoo in the bathroom." | | 2 | "She doesn't correct him — doesn't point out that she's holding the door open because she's curious, because part of her has spent three years wondering what really happened that night, wondering if she meant more to him than just another job gone wrong." | | 3 | "His jaw tightens — the only sign that he's affected by her words." | | 4 | "He looks up sharply, and for a moment she sees something raw beneath the polished exterior — something that reminds her why she'd fallen for him in the first place." | | 5 | "It's grainy, taken in haste, but she knows exactly what she's looking at — herself, standing outside the museum the night everything went wrong, tears streaking through the dirt on her face." | | 6 | "But all she sees is truth — raw, unfiltered, and achingly familiar." | | 7 | "\"Then we dance with demons again.\" He smiles then, and it's the same smile that used to make her pulse race — crooked, dangerous, and utterly irresistible." | | 8 | "Because he's right — part of her does want to trust him, wants to believe that whatever magic they'd had could survive the wreckage of their past." | | 9 | "But as his arms wrap around her waist and pull her closer, as his lips deepen against hers and she feels the familiar spark of recognition, she knows — some things really don't change at all." | | 10 | "He smiles — the same crooked, dangerous smile — and picks up the package from the table." |
| |
| 95.98% | Purple prose (modifier overload) | Target: <4% adverbs, <2% -ly adverbs, no adj stacking | | wordCount | 1174 | | adjectiveStacks | 0 | | stackExamples | (empty) | | adverbCount | 49 | | adverbRatio | 0.041737649063032366 | | lyAdverbCount | 27 | | lyAdverbRatio | 0.022998296422487224 | |
| 100.00% | Repeated phrase echo | Target: ≤20% sentences with echoes (window: 2) | | totalSentences | 140 | | echoCount | 0 | | echoWords | (empty) | |
| 100.00% | Sentence length variance | Target: CV ≥0.4 for sentence word counts | | totalSentences | 140 | | mean | 11.78 | | std | 8.99 | | cv | 0.763 | | sampleLengths | | 0 | 45 | | 1 | 1 | | 2 | 12 | | 3 | 25 | | 4 | 7 | | 5 | 2 | | 6 | 26 | | 7 | 5 | | 8 | 20 | | 9 | 28 | | 10 | 14 | | 11 | 5 | | 12 | 3 | | 13 | 4 | | 14 | 8 | | 15 | 21 | | 16 | 8 | | 17 | 18 | | 18 | 5 | | 19 | 6 | | 20 | 1 | | 21 | 8 | | 22 | 8 | | 23 | 8 | | 24 | 44 | | 25 | 17 | | 26 | 4 | | 27 | 11 | | 28 | 11 | | 29 | 20 | | 30 | 3 | | 31 | 3 | | 32 | 2 | | 33 | 4 | | 34 | 16 | | 35 | 6 | | 36 | 10 | | 37 | 12 | | 38 | 12 | | 39 | 4 | | 40 | 12 | | 41 | 10 | | 42 | 3 | | 43 | 12 | | 44 | 5 | | 45 | 13 | | 46 | 19 | | 47 | 7 | | 48 | 6 | | 49 | 14 |
| |
| 48.10% | Sentence opener variety | Target: ≥60% unique sentence openers | | consecutiveRepeats | 16 | | diversityRatio | 0.35714285714285715 | | totalSentences | 140 | | uniqueOpeners | 50 | |
| 100.00% | Adverb-first sentence starts | Target: ≥3% sentences starting with an adverb | | adverbCount | 4 | | totalSentences | 75 | | matches | | 0 | "Too late for the innocent" | | 1 | "Too late for Lucien, who'd" | | 2 | "Brutally, devastatingly honest." | | 3 | "Instead, he reaches across the" |
| | ratio | 0.053 | |
| 0.00% | Pronoun-first sentence starts | Target: ≤30% sentences starting with a pronoun | | pronounCount | 44 | | totalSentences | 75 | | matches | | 0 | "She freezes in the hallway," | | 1 | "He steps inside without waiting" | | 2 | "She shifts uncomfortably, the paper" | | 3 | "She's always been able to" | | 4 | "He removes his glove with" | | 5 | "She doesn't correct him —" | | 6 | "He steps further into the" | | 7 | "She crosses her arms, trying" | | 8 | "He tilts his head, studying" | | 9 | "He pockets the glove and" | | 10 | "He unwraps the container with" | | 11 | "She watches him out of" | | 12 | "She stops, the words catching" | | 13 | "She turns to face him" | | 14 | "His jaw tightens — the" | | 15 | "She remembers this look, the" | | 16 | "He sets the container down" | | 17 | "She knows who he means." | | 18 | "He looks up sharply, and" | | 19 | "He reaches into his portfolio" |
| | ratio | 0.587 | |
| 66.67% | Subject-first sentence starts | Target: ≤72% sentences starting with a subject | | subjectCount | 59 | | totalSentences | 75 | | matches | | 0 | "The door swings open before" | | 1 | "The name rolls off his" | | 2 | "She freezes in the hallway," | | 3 | "The word catches in her" | | 4 | "He steps inside without waiting" | | 5 | "The flat smells different now" | | 6 | "She shifts uncomfortably, the paper" | | 7 | "The question hangs between them," | | 8 | "She's always been able to" | | 9 | "He removes his glove with" | | 10 | "The admission hangs in the" | | 11 | "She doesn't correct him —" | | 12 | "He steps further into the" | | 13 | "She crosses her arms, trying" | | 14 | "He tilts his head, studying" | | 15 | "He pockets the glove and" | | 16 | "He unwraps the container with" | | 17 | "The steam rises between them," | | 18 | "She watches him out of" | | 19 | "She stops, the words catching" |
| | ratio | 0.787 | |
| 100.00% | Subordinate conjunction sentence starts | Target: ≥2% sentences starting with a subordinating conjunction | | subConjCount | 2 | | totalSentences | 75 | | matches | | 0 | "Even when he was trying" | | 1 | "Because he's right — part" |
| | ratio | 0.027 | |
| 6.80% | Technical jargon density | Target: ≤6% sentences with technical-jargon patterns | | analyzedSentences | 42 | | technicalSentenceCount | 8 | | matches | | 0 | "The door swings open before she's even registered the third-floor landing, and Lucien Moreau stands there in his tailored charcoal suit, one gloved hand resting…" | | 1 | "He steps inside without waiting for an invitation, closing the door behind him with a soft click that sounds deliberate." | | 2 | "He unwraps the container with surprising gentleness, as if handling something fragile." | | 3 | "Viktor Kovalenko, the demon lord who'd hired them both to retrieve an artefact from the British Museum." | | 4 | "Too late for the innocent bystander who'd gotten caught in the crossfire." | | 5 | "He looks up sharply, and for a moment she sees something raw beneath the polished exterior — something that reminds her why she'd fallen for him in the first pl…" | | 6 | "She studies his face, searching for lies, for deception, for the man who'd once lied to her about everything." | | 7 | "She closes the distance between them, her lips barely grazing his in a kiss that's tentative at first, testing boundaries, relearning rhythms." |
| |
| 0.00% | Useless dialogue additions | Target: ≤5% dialogue tags with trailing filler fragments | | totalTags | 20 | | uselessAdditionCount | 7 | | matches | | 0 | "She shifts uncomfortably, the paper bags crinkling" | | 1 | "He steps further, his polished shoes clicking against the worn floorboards" | | 2 | "She crosses, trying to keep her voice steady" | | 3 | "She stops, the words catching" | | 4 | "He sets, the wood creaking under its weight" | | 5 | "He leans, his chair scraping against the floorboards" | | 6 | "He turns, his expression unreadable" |
| |
| 100.00% | Dialogue tag variety (said vs. fancy) | Target: ≤10% fancy dialogue tags | | totalTags | 1 | | fancyCount | 0 | | fancyTags | (empty) | | dialogueSentences | 85 | | tagDensity | 0.012 | | leniency | 0.024 | | rawRatio | 0 | | effectiveRatio | 0 | |