| 100.00% | Adverbs in dialogue tags | Target: ≤10% dialogue tags with adverbs | | totalTags | 22 | | adverbTagCount | 3 | | adverbTags | | 0 | "he said quietly [quietly]" | | 1 | "She’d always [always]" | | 2 | "he said simply [simply]" |
| | dialogueSentences | 61 | | tagDensity | 0.361 | | leniency | 0.721 | | rawRatio | 0.136 | | effectiveRatio | 0.098 | |
| 85.87% | AI-ism adverb frequency | Target: <2% AI-ism adverbs (58 tracked) | | wordCount | 2123 | | totalAiIsmAdverbs | 6 | | found | | | highlights | | 0 | "completely" | | 1 | "lightly" | | 2 | "really" | | 3 | "carefully" | | 4 | "sharply" |
| |
| 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) | |
| 69.38% | AI-ism word frequency | Target: <2% AI-ism words (290 tracked) | | wordCount | 2123 | | totalAiIsms | 13 | | found | | | highlights | | 0 | "unreadable" | | 1 | "eyebrow" | | 2 | "pulse" | | 3 | "crystal" | | 4 | "flickered" | | 5 | "silence" | | 6 | "fluttered" | | 7 | "electric" | | 8 | "perfect" | | 9 | "footsteps" |
| |
| 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 | 129 | | matches | (empty) | |
| 100.00% | Filter word density | Target: ≤3% sentences with filter/hedge words | | filterCount | 0 | | hedgeCount | 0 | | narrationSentences | 129 | | filterMatches | (empty) | | hedgeMatches | (empty) | |
| 100.00% | Gibberish response detection | Target: ≤1% gibberish-like sentences (hard fail if a sentence exceeds 800 words) | | analyzedSentences | 167 | | gibberishSentences | 0 | | adjustedGibberishSentences | 0 | | longSentenceCount | 0 | | runOnParagraphCount | 0 | | giantParagraphCount | 0 | | wordSaladCount | 0 | | repetitionLoopCount | 0 | | controlTokenCount | 0 | | repeatedSegmentCount | 0 | | maxSentenceWordsSeen | 66 | | ratio | 0 | | matches | (empty) | |
| 100.00% | Markdown formatting overuse | Target: ≤5% words in markdown formatting | | markdownSpans | 0 | | markdownWords | 0 | | totalWords | 2104 | | ratio | 0 | | matches | (empty) | |
| 100.00% | Missing dialogue indicators (quotation marks) | Target: ≤10% speech attributions without quotation marks | | totalAttributions | 26 | | unquotedAttributions | 0 | | matches | (empty) | |
| 100.00% | Name drop frequency | Target: ≤1.0 per-name mentions per 100 words | | totalMentions | 53 | | wordCount | 1522 | | uniqueNames | 19 | | maxNameDensity | 0.99 | | worstName | "Rory" | | maxWindowNameDensity | 1.5 | | worstWindowName | "Rory" | | discoveredNames | | Rory | 15 | | Moreau | 2 | | Marseille-edged | 1 | | Lucien | 12 | | Brick | 2 | | Lane | 2 | | Overground | 1 | | Eva | 3 | | Sumerian | 1 | | Golden | 1 | | Empress | 1 | | Cool-headed | 2 | | Better | 1 | | Ptolemy | 4 | | Cardiff | 1 | | Barely | 1 | | Earth | 1 | | French | 1 | | London | 1 |
| | persons | | 0 | "Rory" | | 1 | "Moreau" | | 2 | "Lucien" | | 3 | "Eva" | | 4 | "Ptolemy" |
| | places | | 0 | "Brick" | | 1 | "Lane" | | 2 | "Golden" | | 3 | "French" | | 4 | "London" |
| | globalScore | 1 | | windowScore | 1 | |
| 0.00% | Narrator intent-glossing | Target: ≤2% narration sentences with intent-glossing patterns | | analyzedSentences | 83 | | glossingSentenceCount | 6 | | matches | | 0 | "smelled like expensive cologne and rain an" | | 1 | "sounded like a warning" | | 2 | "not quite a smile" | | 3 | "smelled like night rain on pavement and th" | | 4 | "tasted like mint and something darker, li" | | 5 | "something like pride" |
| |
| 100.00% | "Not X but Y" pattern overuse | Target: ≤1 "not X but Y" per 1000 words | | totalMatches | 0 | | per1kWords | 0 | | wordCount | 2104 | | matches | (empty) | |
| 66.87% | Overuse of "that" (subordinate clause padding) | Target: ≤2% sentences with "that" clauses | | thatCount | 5 | | totalSentences | 167 | | matches | | 0 | "spoken that way" | | 1 | "yelling that she" | | 2 | "hated that he" | | 3 | "Hated that Brick" | | 4 | "hated that her" |
| |
| 100.00% | Paragraph length variance | Target: CV ≥0.5 for paragraph word counts | | totalParagraphs | 75 | | mean | 28.05 | | std | 22.46 | | cv | 0.801 | | sampleLengths | | 0 | 19 | | 1 | 55 | | 2 | 1 | | 3 | 37 | | 4 | 67 | | 5 | 39 | | 6 | 1 | | 7 | 7 | | 8 | 46 | | 9 | 6 | | 10 | 62 | | 11 | 81 | | 12 | 8 | | 13 | 58 | | 14 | 11 | | 15 | 17 | | 16 | 3 | | 17 | 28 | | 18 | 21 | | 19 | 6 | | 20 | 11 | | 21 | 21 | | 22 | 39 | | 23 | 8 | | 24 | 6 | | 25 | 4 | | 26 | 47 | | 27 | 35 | | 28 | 4 | | 29 | 37 | | 30 | 59 | | 31 | 28 | | 32 | 38 | | 33 | 6 | | 34 | 39 | | 35 | 10 | | 36 | 8 | | 37 | 33 | | 38 | 69 | | 39 | 12 | | 40 | 4 | | 41 | 3 | | 42 | 52 | | 43 | 60 | | 44 | 25 | | 45 | 4 | | 46 | 46 | | 47 | 7 | | 48 | 4 | | 49 | 22 |
| |
| 100.00% | Passive voice overuse | Target: ≤2% passive sentences | | passiveCount | 1 | | totalSentences | 129 | | matches | | |
| 100.00% | Past progressive (was/were + -ing) overuse | Target: ≤2% past progressive verbs | | pastProgressiveCount | 2 | | totalVerbs | 255 | | matches | | 0 | "was counting" | | 1 | "was already trying" |
| |
| 0.00% | Em-dash & semicolon overuse | Target: ≤2% sentences with em-dashes/semicolons | | emDashCount | 19 | | semicolonCount | 3 | | flaggedSentences | 17 | | totalSentences | 167 | | ratio | 0.102 | | matches | | 0 | "Lucien Moreau stood on the landing as if he’d been carved out of the dim hallway light—charcoal suit immaculate, ivory-handled cane planted beside one polished shoe, platinum hair slicked back like he’d stepped straight from some underworld boardroom." | | 1 | "Behind her, the flat smelled of old paper, dust, and the curry house two floors down—cumin, turmeric, something frying." | | 2 | "Hated that Brick Lane traffic drifted in through the open door—horns, laughter, the metallic shriek of the Overground." | | 3 | "His presence filled the cramped space too completely; Rory felt the walls draw closer, the ceiling lower." | | 4 | "His gaze moved over the flat—over the crescent-shaped scar on Rory’s left wrist when she crossed her arms, over the delivery uniform polo she still wore from the lunch shift at Golden Empress, over the way her shoulder-length black hair needed a wash." | | 5 | "“The kind of information that doesn’t sit on shelves.” His amber eye caught the light from the streetlamp outside the grimy window; the black one stayed bottomless." | | 6 | "She laughed—short, sharp, nothing like humour." | | 7 | "She ignored the cat and the question and the way Lucien’s hands—long-fingered, careful, one of them still resting lightly on the ivory cane handle—flexed once before stilling." | | 8 | "He’d taught her some of it; the rest she’d learned after." | | 9 | "Instead he lifted one hand—slow, telegraphing—and tucked a strand of her black hair behind her ear." | | 10 | "Lucien’s mouth curved—not quite a smile." | | 11 | "The air between them had always thrummed with it—attraction coiled tight around caution, around the knowledge that he was half something ancient and dangerous and she was a Cardiff girl who sometimes delivered lo mein for a living." | | 12 | "For a moment she thought he might retreat—become again the distant broker who dealt in other people’s desperations." | | 13 | "His free hand slid into her hair, angling her head so the kiss could deepen, and Rory made a sound she hated—soft, startled, wanting." | | 14 | "There was only the press of him and the way his breath shuddered when she nipped his lower lip, the low rough curse he swore against her mouth in French, the way her blue eyes stayed open just long enough to see both of his—amber dark with want, black empty of everything except her." | | 15 | "He opened the door for her—chivalry and necessity both—and the three deadbolts stayed undone as they stepped out into the Brick Lane night." | | 16 | "And after that—after the danger and the half-truths and the city that never quite stopped watching—Rory suspected they would still stand in some doorway somewhere, two people who had parted on complicated terms and kept walking back toward each other anyway." |
| |
| 86.91% | Purple prose (modifier overload) | Target: <4% adverbs, <2% -ly adverbs, no adj stacking | | wordCount | 1559 | | adjectiveStacks | 1 | | stackExamples | | 0 | "low, Marseille-edged voice" |
| | adverbCount | 75 | | adverbRatio | 0.04810776138550353 | | lyAdverbCount | 16 | | lyAdverbRatio | 0.010262989095574085 | |
| 100.00% | Repeated phrase echo | Target: ≤20% sentences with echoes (window: 2) | | totalSentences | 167 | | echoCount | 0 | | echoWords | (empty) | |
| 100.00% | Sentence length variance | Target: CV ≥0.4 for sentence word counts | | totalSentences | 167 | | mean | 12.6 | | std | 11.3 | | cv | 0.897 | | sampleLengths | | 0 | 19 | | 1 | 38 | | 2 | 17 | | 3 | 1 | | 4 | 17 | | 5 | 15 | | 6 | 5 | | 7 | 14 | | 8 | 8 | | 9 | 19 | | 10 | 26 | | 11 | 39 | | 12 | 1 | | 13 | 2 | | 14 | 5 | | 15 | 12 | | 16 | 18 | | 17 | 16 | | 18 | 6 | | 19 | 3 | | 20 | 25 | | 21 | 17 | | 22 | 17 | | 23 | 18 | | 24 | 3 | | 25 | 43 | | 26 | 17 | | 27 | 5 | | 28 | 3 | | 29 | 20 | | 30 | 1 | | 31 | 1 | | 32 | 33 | | 33 | 3 | | 34 | 6 | | 35 | 5 | | 36 | 5 | | 37 | 12 | | 38 | 3 | | 39 | 27 | | 40 | 1 | | 41 | 8 | | 42 | 9 | | 43 | 4 | | 44 | 6 | | 45 | 11 | | 46 | 6 | | 47 | 15 | | 48 | 5 | | 49 | 24 |
| |
| 57.68% | Sentence opener variety | Target: ≥60% unique sentence openers | | consecutiveRepeats | 12 | | diversityRatio | 0.38922155688622756 | | totalSentences | 167 | | uniqueOpeners | 65 | |
| 90.91% | Adverb-first sentence starts | Target: ≥3% sentences starting with an adverb | | adverbCount | 3 | | totalSentences | 110 | | matches | | 0 | "Instead he lifted one hand—slow," | | 1 | "Instead he leaned in until" | | 2 | "Instead she fisted her hand" |
| | ratio | 0.027 | |
| 49.09% | Pronoun-first sentence starts | Target: ≤30% sentences starting with a pronoun | | pronounCount | 47 | | totalSentences | 110 | | matches | | 0 | "Her name in that low," | | 1 | "She hadn’t heard it spoken" | | 2 | "she said, but she didn’t" | | 3 | "he asked, as if the" | | 4 | "She hated that he knew" | | 5 | "She stepped aside." | | 6 | "He crossed the threshold like" | | 7 | "His presence filled the cramped" | | 8 | "She shut the door, threw" | | 9 | "He didn’t sit." | | 10 | "His gaze moved over the" | | 11 | "He looked at everything except" | | 12 | "He took half a step" | | 13 | "His amber eye caught the" | | 14 | "She’d taken it the night" | | 15 | "She laughed—short, sharp, nothing like" | | 16 | "he said quietly" | | 17 | "She ignored the cat and" | | 18 | "His gaze sharpened." | | 19 | "She’d always been good at" |
| | ratio | 0.427 | |
| 50.91% | Subject-first sentence starts | Target: ≤72% sentences starting with a subject | | subjectCount | 90 | | totalSentences | 110 | | matches | | 0 | "The door swung inward on" | | 1 | "Lucien Moreau stood on the" | | 2 | "The heterochromatic eyes caught hers" | | 3 | "Her name in that low," | | 4 | "She hadn’t heard it spoken" | | 5 | "she said, but she didn’t" | | 6 | "The three deadbolts hung open" | | 7 | "Ptolemy the tabby pad-padded across" | | 8 | "he asked, as if the" | | 9 | "She hated that he knew" | | 10 | "She stepped aside." | | 11 | "He crossed the threshold like" | | 12 | "His presence filled the cramped" | | 13 | "She shut the door, threw" | | 14 | "Lucien set the cane against" | | 15 | "He didn’t sit." | | 16 | "His gaze moved over the" | | 17 | "He looked at everything except" | | 18 | "Rory kept her voice flat" | | 19 | "The version of herself that" |
| | ratio | 0.818 | |
| 0.00% | Subordinate conjunction sentence starts | Target: ≥2% sentences starting with a subordinating conjunction | | subConjCount | 0 | | totalSentences | 110 | | matches | (empty) | | ratio | 0 | |
| 38.96% | Technical jargon density | Target: ≤6% sentences with technical-jargon patterns | | analyzedSentences | 55 | | technicalSentenceCount | 8 | | matches | | 0 | "Lucien Moreau stood on the landing as if he’d been carved out of the dim hallway light—charcoal suit immaculate, ivory-handled cane planted beside one polished …" | | 1 | "He crossed the threshold like he owned every square foot of carpet that wasn’t buried under Eva’s books and scrolls and half-translated Sumerian tablet rubbings…" | | 2 | "Lucien set the cane against the arm of the threadbare sofa that doubled as Eva’s research dumping ground." | | 3 | "The version of herself that didn’t want to ask why he smelled like expensive cologne and rain and something darker, older, that always clung to his skin no matt…" | | 4 | "For a half-demon who made his living as a fixer and information broker, Lucien Moreau had always been shit at hiding things from her." | | 5 | "He tasted like mint and something darker, like smoke from a realm that wasn’t Earth." | | 6 | "His free hand slid into her hair, angling her head so the kiss could deepen, and Rory made a sound she hated—soft, startled, wanting." | | 7 | "And after that—after the danger and the half-truths and the city that never quite stopped watching—Rory suspected they would still stand in some doorway somewhe…" |
| |
| 56.82% | Useless dialogue additions | Target: ≤5% dialogue tags with trailing filler fragments | | totalTags | 22 | | uselessAdditionCount | 3 | | matches | | 0 | "he asked, as if the last time they’d stood this close hadn’t ended with her yelling that she never wanted to see his face again and him walking out into the rain without looking back" | | 1 | "he said, voice roughened" | | 2 | "He stopped, jaw tightening" |
| |
| 100.00% | Dialogue tag variety (said vs. fancy) | Target: ≤10% fancy dialogue tags | | totalTags | 14 | | fancyCount | 3 | | fancyTags | | 0 | "he observed (observe)" | | 1 | "he murmured (murmur)" | | 2 | "she agreed (agree)" |
| | dialogueSentences | 61 | | tagDensity | 0.23 | | leniency | 0.459 | | rawRatio | 0.214 | | effectiveRatio | 0.098 | |