| 100.00% | Adverbs in dialogue tags | Target: ≤10% dialogue tags with adverbs | | totalTags | 26 | | adverbTagCount | 3 | | adverbTags | | 0 | "she said finally [finally]" | | 1 | "He turned back [back]" | | 2 | "She pulled back [back]" |
| | dialogueSentences | 61 | | tagDensity | 0.426 | | leniency | 0.852 | | rawRatio | 0.115 | | effectiveRatio | 0.098 | |
| 80.25% | AI-ism adverb frequency | Target: <2% AI-ism adverbs (58 tracked) | | wordCount | 1519 | | totalAiIsmAdverbs | 6 | | found | | 0 | | | 1 | | | 2 | | adverb | "barely above a whisper" | | count | 1 |
| | 3 | | | 4 | | | 5 | |
| | highlights | | 0 | "slightly" | | 1 | "suddenly" | | 2 | "barely above a whisper" | | 3 | "really" | | 4 | "very" | | 5 | "perfectly" |
| |
| 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) | |
| 57.21% | AI-ism word frequency | Target: <2% AI-ism words (290 tracked) | | wordCount | 1519 | | totalAiIsms | 13 | | found | | | highlights | | 0 | "stomach" | | 1 | "familiar" | | 2 | "chaotic" | | 3 | "flicked" | | 4 | "charm" | | 5 | "chill" | | 6 | "tension" | | 7 | "weight" | | 8 | "whisper" | | 9 | "pulse" | | 10 | "tracing" |
| |
| 100.00% | Cliché density | Target: ≤1 cliche(s) per 800-word window | | totalCliches | 2 | | maxInWindow | 1 | | found | | 0 | | label | "stomach dropped/sank" | | count | 1 |
| | 1 | | label | "hung in the air" | | count | 1 |
|
| | highlights | | 0 | "stomach dropped" | | 1 | "hung in the air" |
| |
| 100.00% | Emotion telling (show vs. tell) | Target: ≤3% sentences with emotion telling | | emotionTells | 2 | | narrationSentences | 76 | | matches | | 0 | "g in surprise" | | 1 | "was terrified" |
| |
| 100.00% | Filter word density | Target: ≤3% sentences with filter/hedge words | | filterCount | 0 | | hedgeCount | 1 | | narrationSentences | 76 | | filterMatches | (empty) | | hedgeMatches | | |
| 100.00% | Gibberish response detection | Target: ≤1% gibberish-like sentences (hard fail if a sentence exceeds 800 words) | | analyzedSentences | 109 | | gibberishSentences | 0 | | adjustedGibberishSentences | 0 | | longSentenceCount | 0 | | runOnParagraphCount | 0 | | giantParagraphCount | 0 | | wordSaladCount | 0 | | repetitionLoopCount | 0 | | controlTokenCount | 0 | | maxSentenceWordsSeen | 54 | | ratio | 0 | | matches | (empty) | |
| 100.00% | Markdown formatting overuse | Target: ≤5% words in markdown formatting | | markdownSpans | 0 | | markdownWords | 0 | | totalWords | 1504 | | ratio | 0 | | matches | (empty) | |
| 100.00% | Missing dialogue indicators (quotation marks) | Target: ≤10% speech attributions without quotation marks | | totalAttributions | 27 | | unquotedAttributions | 0 | | matches | (empty) | |
| 62.82% | Name drop frequency | Target: ≤1.0 per-name mentions per 100 words | | totalMentions | 49 | | wordCount | 975 | | uniqueNames | 15 | | maxNameDensity | 1.74 | | worstName | "Aurora" | | maxWindowNameDensity | 2.5 | | worstWindowName | "Aurora" | | discoveredNames | | Aurora | 17 | | Eva | 8 | | Three | 1 | | Lucien | 9 | | Moreau | 1 | | Golden | 1 | | Empress | 1 | | Bermondsey | 1 | | Brick | 1 | | Lane | 1 | | Heat | 1 | | French | 1 | | English | 1 | | Ptolemy | 4 | | London | 1 |
| | persons | | 0 | "Aurora" | | 1 | "Eva" | | 2 | "Lucien" | | 3 | "Moreau" | | 4 | "Heat" | | 5 | "Ptolemy" |
| | places | | 0 | "Golden" | | 1 | "Bermondsey" | | 2 | "Brick" | | 3 | "Lane" | | 4 | "French" | | 5 | "London" |
| | globalScore | 0.628 | | windowScore | 0.833 | |
| 100.00% | Narrator intent-glossing | Target: ≤2% narration sentences with intent-glossing patterns | | analyzedSentences | 59 | | glossingSentenceCount | 1 | | matches | | 0 | "as if testing whether she would disappear" |
| |
| 100.00% | "Not X but Y" pattern overuse | Target: ≤1 "not X but Y" per 1000 words | | totalMatches | 1 | | per1kWords | 0.665 | | wordCount | 1504 | | matches | | 0 | "not Eva's familiar face, but Lucien Moreau's mismatched eyes" |
| |
| 100.00% | Overuse of "that" (subordinate clause padding) | Target: ≤2% sentences with "that" clauses | | thatCount | 2 | | totalSentences | 109 | | matches | | 0 | "replayed that night" | | 1 | "was that she" |
| |
| 100.00% | Paragraph length variance | Target: CV ≥0.5 for paragraph word counts | | totalParagraphs | 55 | | mean | 27.35 | | std | 17.56 | | cv | 0.642 | | sampleLengths | | 0 | 52 | | 1 | 8 | | 2 | 15 | | 3 | 49 | | 4 | 67 | | 5 | 24 | | 6 | 7 | | 7 | 65 | | 8 | 11 | | 9 | 26 | | 10 | 17 | | 11 | 26 | | 12 | 16 | | 13 | 54 | | 14 | 21 | | 15 | 49 | | 16 | 42 | | 17 | 15 | | 18 | 27 | | 19 | 21 | | 20 | 1 | | 21 | 49 | | 22 | 1 | | 23 | 13 | | 24 | 55 | | 25 | 34 | | 26 | 11 | | 27 | 21 | | 28 | 23 | | 29 | 48 | | 30 | 13 | | 31 | 45 | | 32 | 29 | | 33 | 5 | | 34 | 30 | | 35 | 40 | | 36 | 18 | | 37 | 2 | | 38 | 41 | | 39 | 55 | | 40 | 21 | | 41 | 37 | | 42 | 29 | | 43 | 12 | | 44 | 11 | | 45 | 63 | | 46 | 21 | | 47 | 20 | | 48 | 41 | | 49 | 19 |
| |
| 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 | 0 | | totalVerbs | 176 | | matches | (empty) | |
| 0.00% | Em-dash & semicolon overuse | Target: ≤2% sentences with em-dashes/semicolons | | emDashCount | 13 | | semicolonCount | 0 | | flaggedSentences | 10 | | totalSentences | 109 | | ratio | 0.092 | | matches | | 0 | "The deadbolts clicked one by one, and Aurora's stomach dropped when Eva's voice called through the door, \"Just leave it on the mat, thanks.\" Three more seconds of fumbling with locks, then the door swung open to reveal not Eva's familiar face, but Lucien Moreau's mismatched eyes—one amber, one black—widening in surprise." | | 1 | "Aurora pushed past him into the cramped flat, needing distance from his cologne—something expensive that reminded her of late nights in shadowy clubs and conversations that meant too much." | | 2 | "A smile ghosted across his lips—the same smile that had once made her forget her own name." | | 3 | "Aurora felt the familiar chill that came with supernatural problems—the kind that usually ended with someone bleeding." | | 4 | "She'd replayed that night a thousand times—his hands in her hair, the desperate way he'd kissed her, the words whispered against her throat in French and English and something that might have been demonic." | | 5 | "Lucien's good hand—not the one gripping his cane—reached up to cup her cheek." | | 6 | "Aurora looked around Eva's flat—at the books and research notes, at Ptolemy watching them with knowing green eyes, at the late afternoon light filtering through windows that had witnessed a thousand supernatural secrets." | | 7 | "But looking at him now—older, wearier, but still achingly familiar—she realized that wasn't quite true." | | 8 | "Outside, London carried on—traffic humming, people calling to each other in a dozen languages, the eternal pulse of a city that had seen stranger things than a half-demon and a human woman standing in a cramped flat above a curry house, finally admitting what they'd both known all along." | | 9 | "Aurora pulled back just enough to meet his mismatched eyes—one amber, one black, both looking at her like she was the answer to a question he'd forgotten how to ask." |
| |
| 84.85% | Purple prose (modifier overload) | Target: <4% adverbs, <2% -ly adverbs, no adj stacking | | wordCount | 991 | | adjectiveStacks | 1 | | stackExamples | | | adverbCount | 50 | | adverbRatio | 0.050454086781029264 | | lyAdverbCount | 13 | | lyAdverbRatio | 0.013118062563067608 | |
| 100.00% | Repeated phrase echo | Target: ≤20% sentences with echoes (window: 2) | | totalSentences | 109 | | echoCount | 0 | | echoWords | (empty) | |
| 100.00% | Sentence length variance | Target: CV ≥0.4 for sentence word counts | | totalSentences | 109 | | mean | 13.8 | | std | 9.52 | | cv | 0.69 | | sampleLengths | | 0 | 52 | | 1 | 8 | | 2 | 13 | | 3 | 2 | | 4 | 10 | | 5 | 18 | | 6 | 13 | | 7 | 8 | | 8 | 4 | | 9 | 29 | | 10 | 14 | | 11 | 20 | | 12 | 17 | | 13 | 7 | | 14 | 7 | | 15 | 7 | | 16 | 23 | | 17 | 35 | | 18 | 6 | | 19 | 5 | | 20 | 11 | | 21 | 4 | | 22 | 11 | | 23 | 9 | | 24 | 8 | | 25 | 17 | | 26 | 9 | | 27 | 8 | | 28 | 8 | | 29 | 13 | | 30 | 19 | | 31 | 22 | | 32 | 17 | | 33 | 4 | | 34 | 30 | | 35 | 19 | | 36 | 3 | | 37 | 12 | | 38 | 23 | | 39 | 4 | | 40 | 15 | | 41 | 7 | | 42 | 16 | | 43 | 4 | | 44 | 6 | | 45 | 15 | | 46 | 1 | | 47 | 9 | | 48 | 18 | | 49 | 22 |
| |
| 62.08% | Sentence opener variety | Target: ≥60% unique sentence openers | | consecutiveRepeats | 9 | | diversityRatio | 0.42201834862385323 | | totalSentences | 109 | | uniqueOpeners | 46 | |
| 100.00% | Adverb-first sentence starts | Target: ≥3% sentences starting with an adverb | | adverbCount | 5 | | totalSentences | 73 | | matches | | 0 | "Even caught off-guard, he looked" | | 1 | "Instead, she found herself moving" | | 2 | "Instead, she found herself trapped" | | 3 | "Finally, he asked," | | 4 | "Instead of speaking, he kissed" |
| | ratio | 0.068 | |
| 93.97% | Pronoun-first sentence starts | Target: ≤30% sentences starting with a pronoun | | pronounCount | 23 | | totalSentences | 73 | | matches | | 0 | "He paused, studying her face" | | 1 | "It wasn't a question." | | 2 | "she said finally" | | 3 | "It was honest, at least." | | 4 | "His expression shifted, the practiced" | | 5 | "He moved to the window," | | 6 | "He turned back to her," | | 7 | "She should leave." | | 8 | "He laughed, but there was" | | 9 | "He took a step closer," | | 10 | "She cut herself off, shaking" | | 11 | "His voice was gentle now," | | 12 | "She'd replayed that night a" | | 13 | "he continued, his voice barely" | | 14 | "His thumb brushed across her" | | 15 | "he breathed, and when she" | | 16 | "She pulled back, creating space" | | 17 | "She met his eyes again" | | 18 | "He caught himself, the endearment" | | 19 | "she finished, the words barely" |
| | ratio | 0.315 | |
| 28.49% | Subject-first sentence starts | Target: ≤72% sentences starting with a subject | | subjectCount | 63 | | totalSentences | 73 | | matches | | 0 | "The deadbolts clicked one by" | | 1 | "The word escaped him like" | | 2 | "Aurora's hand tightened on the" | | 3 | "Lucien stepped back, his ivory-handled" | | 4 | "He paused, studying her face" | | 5 | "It wasn't a question." | | 6 | "Aurora pushed past him into" | | 7 | "Books and scrolls covered every" | | 8 | "Ptolemy, Eva's tabby cat, looked" | | 9 | "Aurora set the bag on" | | 10 | "The question hung between them" | | 11 | "Aurora turned to face him," | | 12 | "The last time she'd seen" | | 13 | "she said finally" | | 14 | "It was honest, at least." | | 15 | "Lucien closed the door, each" | | 16 | "The sound felt final." | | 17 | "Aurora crossed her arms" | | 18 | "A smile ghosted across his" | | 19 | "The word came out sharper" |
| | ratio | 0.863 | |
| 0.00% | Subordinate conjunction sentence starts | Target: ≥2% sentences starting with a subordinating conjunction | | subConjCount | 0 | | totalSentences | 73 | | matches | (empty) | | ratio | 0 | |
| 0.00% | Technical jargon density | Target: ≤6% sentences with technical-jargon patterns | | analyzedSentences | 35 | | technicalSentenceCount | 7 | | matches | | 0 | "Aurora pushed past him into the cramped flat, needing distance from his cologne—something expensive that reminded her of late nights in shadowy clubs and conver…" | | 1 | "Aurora felt the familiar chill that came with supernatural problems—the kind that usually ended with someone bleeding." | | 2 | "She'd replayed that night a thousand times—his hands in her hair, the desperate way he'd kissed her, the words whispered against her throat in French and Englis…" | | 3 | "Aurora looked around Eva's flat—at the books and research notes, at Ptolemy watching them with knowing green eyes, at the late afternoon light filtering through…" | | 4 | "Outside, London carried on—traffic humming, people calling to each other in a dozen languages, the eternal pulse of a city that had seen stranger things than a …" | | 5 | "Soft at first, tentative, as if testing whether she would disappear." | | 6 | "When she kissed him back, her hands fisting in his perfectly tailored jacket, he deepened it, pouring two years of longing into the contact." |
| |
| 48.08% | Useless dialogue additions | Target: ≤5% dialogue tags with trailing filler fragments | | totalTags | 26 | | uselessAdditionCount | 4 | | matches | | 0 | "he continued, his voice barely above a whisper" | | 1 | "He caught, the endearment dying on his lips" | | 2 | "she finished, the words barely audible" | | 3 | "Lucien agreed, his thumb tracing the line of her jaw" |
| |
| 51.64% | Dialogue tag variety (said vs. fancy) | Target: ≤10% fancy dialogue tags | | totalTags | 10 | | fancyCount | 6 | | fancyTags | | 0 | "she whispered (whisper)" | | 1 | "he continued (continue)" | | 2 | "he breathed (breathe)" | | 3 | "she admitted (admit)" | | 4 | "she whispered (whisper)" | | 5 | "Lucien agreed (agree)" |
| | dialogueSentences | 61 | | tagDensity | 0.164 | | leniency | 0.328 | | rawRatio | 0.6 | | effectiveRatio | 0.197 | |