| 96.10% | Adverbs in dialogue tags | Target: ≤10% dialogue tags with adverbs | | totalTags | 29 | | adverbTagCount | 4 | | adverbTags | | 0 | "Rory said quietly [quietly]" | | 1 | "he said lightly [lightly]" | | 2 | "he said quietly [quietly]" | | 3 | "Rory said suddenly [suddenly]" |
| | dialogueSentences | 77 | | tagDensity | 0.377 | | leniency | 0.753 | | rawRatio | 0.138 | | effectiveRatio | 0.104 | |
| 92.91% | AI-ism adverb frequency | Target: <2% AI-ism adverbs (58 tracked) | | wordCount | 2115 | | totalAiIsmAdverbs | 3 | | found | | | highlights | | 0 | "really" | | 1 | "lightly" | | 2 | "suddenly" |
| |
| 80.00% | AI-ism character names | Target: 0 AI-default names (17 tracked, −20% each) | | codexExemptions | (empty) | | found | | |
| 100.00% | AI-ism location names | Target: 0 AI-default location names (33 tracked, −20% each) | | codexExemptions | (empty) | | found | (empty) | |
| 64.54% | AI-ism word frequency | Target: <2% AI-ism words (290 tracked) | | wordCount | 2115 | | totalAiIsms | 15 | | found | | | highlights | | 0 | "unreadable" | | 1 | "pulse" | | 2 | "flicked" | | 3 | "tracing" | | 4 | "dance" | | 5 | "could feel" | | 6 | "perfect" | | 7 | "standard" | | 8 | "silence" | | 9 | "familiar" |
| |
| 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 | 183 | | matches | (empty) | |
| 100.00% | Filter word density | Target: ≤3% sentences with filter/hedge words | | filterCount | 0 | | hedgeCount | 0 | | narrationSentences | 183 | | filterMatches | (empty) | | hedgeMatches | (empty) | |
| 100.00% | Gibberish response detection | Target: ≤1% gibberish-like sentences (hard fail if a sentence exceeds 800 words) | | analyzedSentences | 228 | | gibberishSentences | 0 | | adjustedGibberishSentences | 0 | | longSentenceCount | 0 | | runOnParagraphCount | 0 | | giantParagraphCount | 0 | | wordSaladCount | 0 | | repetitionLoopCount | 0 | | controlTokenCount | 0 | | maxSentenceWordsSeen | 53 | | ratio | 0 | | matches | (empty) | |
| 100.00% | Markdown formatting overuse | Target: ≤5% words in markdown formatting | | markdownSpans | 6 | | markdownWords | 16 | | totalWords | 2095 | | ratio | 0.008 | | matches | | 0 | "thud" | | 1 | "A Brief History of Welsh Mythology" | | 2 | "r" | | 3 | "Standard" | | 4 | "DISTRICT ATTORNY LINKED TO UNDERWORLD DEALS" | | 5 | "know" |
| |
| 100.00% | Missing dialogue indicators (quotation marks) | Target: ≤10% speech attributions without quotation marks | | totalAttributions | 35 | | unquotedAttributions | 0 | | matches | (empty) | |
| 66.67% | Name drop frequency | Target: ≤1.0 per-name mentions per 100 words | | totalMentions | 65 | | wordCount | 1577 | | uniqueNames | 19 | | maxNameDensity | 1.27 | | worstName | "Rory" | | maxWindowNameDensity | 3 | | worstWindowName | "Rory" | | discoveredNames | | Rory | 20 | | Eva | 9 | | Moreau | 1 | | Lucien | 11 | | Brief | 1 | | History | 1 | | Welsh | 1 | | London | 1 | | Lily | 4 | | Evan | 2 | | French | 1 | | Ptolemy | 5 | | Carter | 1 | | Brendan | 2 | | Sharpie | 1 | | Cardiff | 1 | | Brick | 1 | | Lane | 1 | | Calm | 1 |
| | persons | | 0 | "Rory" | | 1 | "Eva" | | 2 | "Moreau" | | 3 | "Lucien" | | 4 | "Lily" | | 5 | "Evan" | | 6 | "Ptolemy" | | 7 | "Carter" | | 8 | "Brendan" |
| | places | | 0 | "London" | | 1 | "Cardiff" | | 2 | "Brick" | | 3 | "Lane" |
| | globalScore | 0.866 | | windowScore | 0.667 | |
| 100.00% | Narrator intent-glossing | Target: ≤2% narration sentences with intent-glossing patterns | | analyzedSentences | 93 | | glossingSentenceCount | 0 | | matches | (empty) | |
| 100.00% | "Not X but Y" pattern overuse | Target: ≤1 "not X but Y" per 1000 words | | totalMatches | 1 | | per1kWords | 0.477 | | wordCount | 2095 | | matches | | 0 | "not bitter exactly, but with an edge" |
| |
| 100.00% | Overuse of "that" (subordinate clause padding) | Target: ≤2% sentences with "that" clauses | | thatCount | 0 | | totalSentences | 228 | | matches | (empty) | |
| 100.00% | Paragraph length variance | Target: CV ≥0.5 for paragraph word counts | | totalParagraphs | 114 | | mean | 18.38 | | std | 18.08 | | cv | 0.984 | | sampleLengths | | 0 | 87 | | 1 | 1 | | 2 | 25 | | 3 | 57 | | 4 | 68 | | 5 | 6 | | 6 | 19 | | 7 | 30 | | 8 | 36 | | 9 | 12 | | 10 | 101 | | 11 | 19 | | 12 | 29 | | 13 | 5 | | 14 | 32 | | 15 | 47 | | 16 | 11 | | 17 | 36 | | 18 | 4 | | 19 | 54 | | 20 | 9 | | 21 | 2 | | 22 | 18 | | 23 | 36 | | 24 | 23 | | 25 | 15 | | 26 | 2 | | 27 | 4 | | 28 | 30 | | 29 | 9 | | 30 | 30 | | 31 | 5 | | 32 | 2 | | 33 | 4 | | 34 | 6 | | 35 | 19 | | 36 | 30 | | 37 | 4 | | 38 | 49 | | 39 | 10 | | 40 | 6 | | 41 | 31 | | 42 | 23 | | 43 | 8 | | 44 | 4 | | 45 | 11 | | 46 | 6 | | 47 | 3 | | 48 | 12 | | 49 | 50 |
| |
| 97.59% | Passive voice overuse | Target: ≤2% passive sentences | | passiveCount | 4 | | totalSentences | 183 | | matches | | 0 | "being asked" | | 1 | "been airbrushed" | | 2 | "been tangled" | | 3 | "was scribbled" |
| |
| 100.00% | Past progressive (was/were + -ing) overuse | Target: ≤2% past progressive verbs | | pastProgressiveCount | 3 | | totalVerbs | 296 | | matches | | 0 | "was preparing" | | 1 | "was already reaching" | | 2 | "wasn’t falling" |
| |
| 0.00% | Em-dash & semicolon overuse | Target: ≤2% sentences with em-dashes/semicolons | | emDashCount | 19 | | semicolonCount | 0 | | flaggedSentences | 13 | | totalSentences | 228 | | ratio | 0.057 | | matches | | 0 | "She didn’t need to turn around to know who it was—she felt the shift in the air before the scent reached her, bergamot and gunpowder, sharp and unexpected against the usual incense and curry-fat that clung to Eva’s flat." | | 1 | "Like aged whiskey left too long in the glass—not bitter exactly, but with an edge that lingered." | | 2 | "His eyes—one amber, one black—locked onto hers, unreadable." | | 3 | "Ptolemy, the tabby, lifted his head from the armchair—Eva’s chair, the one draped with a too-large cardigan—and fixed Lucien with a slow, skeptical stare." | | 4 | "Rory closed the book—*A Brief History of Welsh Mythology*—and set it on the stack beside the armchair." | | 5 | "Notes in Eva’s meticulous handwriting—now Rory’s too, for better or worse—pinned to the walls with tea-stained tacks." | | 6 | "The flat smelled of old paper, cloves, and the faintest undercurrent of something sour—Eva’s failed attempt at biryani last week." | | 7 | "That damned cane—it was more than decoration, and they both knew it." | | 8 | "The one she’d never really grieved properly because grief had been tangled up in other things—Lily’s warnings about Evan, the way her sister’s phone had gone dead that night, the body that never showed the right injuries." | | 9 | "Brendan Carter wasn’t perfect—few barristers were—but corrupt?" | | 10 | "But they found the tender scar beneath her ribs—the one from Lily, from Evan, from the night she’d left Cardiff in a stolen car with nothing but her passport and a knife hidden in her boot." | | 11 | "Her reflection stared back—a woman with wide, red-rimmed eyes, hair falling like a dark curtain." | | 12 | "As he shrugged into his coat and turned to leave, Rory caught one last glimpse of him—the half-demon in the tailored suit, the fixer with the cursed cane, the man who’d loved her sister in silence—before the door closed behind him with its familiar sequence of deadbolts clicking into place." |
| |
| 89.67% | Purple prose (modifier overload) | Target: <4% adverbs, <2% -ly adverbs, no adj stacking | | wordCount | 1602 | | adjectiveStacks | 1 | | stackExamples | | 0 | "wide, red-rimmed eyes," |
| | adverbCount | 72 | | adverbRatio | 0.0449438202247191 | | lyAdverbCount | 14 | | lyAdverbRatio | 0.008739076154806492 | |
| 100.00% | Repeated phrase echo | Target: ≤20% sentences with echoes (window: 2) | | totalSentences | 228 | | echoCount | 0 | | echoWords | (empty) | |
| 100.00% | Sentence length variance | Target: CV ≥0.4 for sentence word counts | | totalSentences | 228 | | mean | 9.19 | | std | 8.34 | | cv | 0.908 | | sampleLengths | | 0 | 25 | | 1 | 39 | | 2 | 23 | | 3 | 1 | | 4 | 7 | | 5 | 1 | | 6 | 17 | | 7 | 5 | | 8 | 9 | | 9 | 17 | | 10 | 1 | | 11 | 25 | | 12 | 27 | | 13 | 33 | | 14 | 8 | | 15 | 6 | | 16 | 19 | | 17 | 13 | | 18 | 5 | | 19 | 5 | | 20 | 4 | | 21 | 3 | | 22 | 24 | | 23 | 12 | | 24 | 12 | | 25 | 17 | | 26 | 6 | | 27 | 13 | | 28 | 13 | | 29 | 17 | | 30 | 15 | | 31 | 20 | | 32 | 8 | | 33 | 3 | | 34 | 8 | | 35 | 13 | | 36 | 10 | | 37 | 6 | | 38 | 5 | | 39 | 6 | | 40 | 17 | | 41 | 9 | | 42 | 5 | | 43 | 4 | | 44 | 2 | | 45 | 15 | | 46 | 12 | | 47 | 5 | | 48 | 4 | | 49 | 6 |
| |
| 43.86% | Sentence opener variety | Target: ≥60% unique sentence openers | | consecutiveRepeats | 14 | | diversityRatio | 0.2631578947368421 | | totalSentences | 228 | | uniqueOpeners | 60 | |
| 100.00% | Adverb-first sentence starts | Target: ≥3% sentences starting with an adverb | | adverbCount | 6 | | totalSentences | 150 | | matches | | 0 | "Maybe more than her flat" | | 1 | "Just enough to make the" | | 2 | "Then, from behind her:" | | 3 | "Somewhere, a kettle screamed." | | 4 | "Almost a smile." | | 5 | "Just to feel the fabric," |
| | ratio | 0.04 | |
| 60.00% | Pronoun-first sentence starts | Target: ≤30% sentences starting with a pronoun | | pronounCount | 60 | | totalSentences | 150 | | matches | | 0 | "She didn’t need to turn" | | 1 | "Her fingers stilled on the" | | 2 | "His voice was lower than" | | 3 | "She turned anyway, slow, deliberate." | | 4 | "His eyes—one amber, one black—locked" | | 5 | "She hated how her pulse" | | 6 | "she said, voice tighter than" | | 7 | "He stepped inside, the door" | | 8 | "He hadn’t come to stay." | | 9 | "She couldn’t tell." | | 10 | "Her fingers lingered on the" | | 11 | "They both knew the rules" | | 12 | "She watched as he draped" | | 13 | "He didn’t look at her" | | 14 | "His attention was on the" | | 15 | "It wasn’t just a prop." | | 16 | "It was a promise." | | 17 | "He finally turned, leaning against" | | 18 | "She turned away, busying herself" | | 19 | "She could feel his gaze" |
| | ratio | 0.4 | |
| 43.33% | Subject-first sentence starts | Target: ≤72% sentences starting with a subject | | subjectCount | 125 | | totalSentences | 150 | | matches | | 0 | "The door didn’t so much" | | 1 | "She didn’t need to turn" | | 2 | "Her fingers stilled on the" | | 3 | "His voice was lower than" | | 4 | "She turned anyway, slow, deliberate." | | 5 | "Here, in this cluttered fortress" | | 6 | "Lucien Moreau stood framed in" | | 7 | "Platinum blond hair caught the" | | 8 | "His eyes—one amber, one black—locked" | | 9 | "She hated how her pulse" | | 10 | "she said, voice tighter than" | | 11 | "He stepped inside, the door" | | 12 | "The deadbolts weren’t engaged again." | | 13 | "He hadn’t come to stay." | | 14 | "She couldn’t tell." | | 15 | "Ptolemy, the tabby, lifted his" | | 16 | "The cat’s tail flicked once," | | 17 | "Lucien replied, as if that" | | 18 | "Rory closed the book—*A Brief" | | 19 | "Her fingers lingered on the" |
| | ratio | 0.833 | |
| 33.33% | Subordinate conjunction sentence starts | Target: ≥2% sentences starting with a subordinating conjunction | | subConjCount | 1 | | totalSentences | 150 | | matches | | 0 | "Because if she moved too" |
| | ratio | 0.007 | |
| 89.95% | Technical jargon density | Target: ≤6% sentences with technical-jargon patterns | | analyzedSentences | 54 | | technicalSentenceCount | 4 | | matches | | 0 | "The door didn’t so much open as unfold, the three deadbolts retracting in sequence with a series of dry clicks that made Rory’s shoulders twitch." | | 1 | "She didn’t need to turn around to know who it was—she felt the shift in the air before the scent reached her, bergamot and gunpowder, sharp and unexpected again…" | | 2 | "Her fingers stilled on the spine of the book she’d been pretending to read, thumb pressed too hard against paper that wouldn’t bend." | | 3 | "As he shrugged into his coat and turned to leave, Rory caught one last glimpse of him—the half-demon in the tailored suit, the fixer with the cursed cane, the m…" |
| |
| 21.55% | Useless dialogue additions | Target: ≤5% dialogue tags with trailing filler fragments | | totalTags | 29 | | uselessAdditionCount | 6 | | matches | | 0 | "she said, voice tighter than she wanted" | | 1 | "Lucien replied, as if that answered anything" | | 2 | "he said lightly, as if they were at some bloody garden party instead of this claustrophobic den of half-solved mysteries" | | 3 | "she asked, voice small" | | 4 | "she said, voice shaking just enough to betray her" | | 5 | "she said, voice raw" |
| |
| 46.10% | Dialogue tag variety (said vs. fancy) | Target: ≤10% fancy dialogue tags | | totalTags | 23 | | fancyCount | 8 | | fancyTags | | 0 | "he confirmed (confirm)" | | 1 | "she whispered (whisper)" | | 2 | "she whispered (whisper)" | | 3 | "she spat (spit)" | | 4 | "he admitted (admit)" | | 5 | "she whispered (whisper)" | | 6 | "he murmured (murmur)" | | 7 | "she whispered (whisper)" |
| | dialogueSentences | 77 | | tagDensity | 0.299 | | leniency | 0.597 | | rawRatio | 0.348 | | effectiveRatio | 0.208 | |