| 100.00% | Adverbs in dialogue tags | Target: ≤10% dialogue tags with adverbs | | totalTags | 1 | | adverbTagCount | 0 | | adverbTags | (empty) | | dialogueSentences | 1 | | tagDensity | 1 | | leniency | 1 | | rawRatio | 0 | | effectiveRatio | 0 | |
| 92.54% | AI-ism adverb frequency | Target: <2% AI-ism adverbs (58 tracked) | | wordCount | 2010 | | totalAiIsmAdverbs | 3 | | found | | | highlights | | |
| 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) | |
| 70.15% | AI-ism word frequency | Target: <2% AI-ism words (290 tracked) | | wordCount | 2010 | | totalAiIsms | 12 | | found | | | highlights | | 0 | "scanned" | | 1 | "weight" | | 2 | "traced" | | 3 | "could feel" | | 4 | "perfect" | | 5 | "database" | | 6 | "reminder" | | 7 | "intensity" |
| |
| 66.67% | Cliché density | Target: ≤1 cliche(s) per 800-word window | | totalCliches | 2 | | maxInWindow | 2 | | found | | 0 | | label | "sent a shiver through" | | count | 2 |
|
| | highlights | | |
| 100.00% | Emotion telling (show vs. tell) | Target: ≤3% sentences with emotion telling | | emotionTells | 0 | | narrationSentences | 62 | | matches | (empty) | |
| 73.73% | Filter word density | Target: ≤3% sentences with filter/hedge words | | filterCount | 2 | | hedgeCount | 1 | | narrationSentences | 62 | | filterMatches | | | hedgeMatches | | |
| 100.00% | Gibberish response detection | Target: ≤1% gibberish-like sentences (hard fail if a sentence exceeds 800 words) | | analyzedSentences | 62 | | gibberishSentences | 0 | | adjustedGibberishSentences | 0 | | longSentenceCount | 0 | | runOnParagraphCount | 0 | | giantParagraphCount | 0 | | wordSaladCount | 0 | | repetitionLoopCount | 0 | | controlTokenCount | 0 | | maxSentenceWordsSeen | 79 | | ratio | 0 | | matches | (empty) | |
| 100.00% | Markdown formatting overuse | Target: ≤5% words in markdown formatting | | markdownSpans | 0 | | markdownWords | 0 | | totalWords | 1980 | | ratio | 0 | | matches | (empty) | |
| 100.00% | Missing dialogue indicators (quotation marks) | Target: ≤10% speech attributions without quotation marks | | totalAttributions | 16 | | unquotedAttributions | 0 | | matches | (empty) | |
| 83.33% | Name drop frequency | Target: ≤1.0 per-name mentions per 100 words | | totalMentions | 104 | | wordCount | 1913 | | uniqueNames | 20 | | maxNameDensity | 1.1 | | worstName | "Lucien" | | maxWindowNameDensity | 2.5 | | worstWindowName | "Eva" | | discoveredNames | | Brendan | 1 | | Eva | 15 | | You | 10 | | Avaros | 8 | | Golden | 2 | | Empress | 2 | | Cardiff | 1 | | Evan | 4 | | London | 2 | | Rory | 20 | | Lucien | 21 | | Soho | 2 | | Hampstead | 1 | | Welsh | 3 | | Covent | 1 | | Garden | 1 | | Met | 2 | | Ptolemy | 6 | | Brick | 1 | | Lane | 1 |
| | persons | | 0 | "Brendan" | | 1 | "Eva" | | 2 | "You" | | 3 | "Evan" | | 4 | "Rory" | | 5 | "Lucien" | | 6 | "Ptolemy" |
| | places | | 0 | "Golden" | | 1 | "Cardiff" | | 2 | "London" | | 3 | "Soho" | | 4 | "Hampstead" | | 5 | "Welsh" | | 6 | "Covent" | | 7 | "Garden" | | 8 | "Met" | | 9 | "Brick" | | 10 | "Lane" |
| | globalScore | 0.951 | | windowScore | 0.833 | |
| 100.00% | Narrator intent-glossing | Target: ≤2% narration sentences with intent-glossing patterns | | analyzedSentences | 57 | | glossingSentenceCount | 1 | | matches | | 0 | "smelled like something other than smoke an" |
| |
| 100.00% | "Not X but Y" pattern overuse | Target: ≤1 "not X but Y" per 1000 words | | totalMatches | 0 | | per1kWords | 0 | | wordCount | 1980 | | matches | (empty) | |
| 0.00% | Overuse of "that" (subordinate clause padding) | Target: ≤2% sentences with "that" clauses | | thatCount | 4 | | totalSentences | 62 | | matches | | 0 | "traced that scar" | | 1 | "use that skill" | | 2 | "keep that promise" | | 3 | "include that detail" |
| |
| 100.00% | Paragraph length variance | Target: CV ≥0.5 for paragraph word counts | | totalParagraphs | 60 | | mean | 33 | | std | 22.7 | | cv | 0.688 | | sampleLengths | | 0 | 72 | | 1 | 79 | | 2 | 7 | | 3 | 66 | | 4 | 15 | | 5 | 73 | | 6 | 19 | | 7 | 61 | | 8 | 24 | | 9 | 55 | | 10 | 5 | | 11 | 68 | | 12 | 30 | | 13 | 65 | | 14 | 17 | | 15 | 51 | | 16 | 18 | | 17 | 33 | | 18 | 6 | | 19 | 42 | | 20 | 14 | | 21 | 73 | | 22 | 6 | | 23 | 44 | | 24 | 34 | | 25 | 66 | | 26 | 8 | | 27 | 51 | | 28 | 3 | | 29 | 40 | | 30 | 6 | | 31 | 47 | | 32 | 16 | | 33 | 33 | | 34 | 6 | | 35 | 40 | | 36 | 6 | | 37 | 58 | | 38 | 34 | | 39 | 31 | | 40 | 19 | | 41 | 27 | | 42 | 27 | | 43 | 51 | | 44 | 14 | | 45 | 44 | | 46 | 7 | | 47 | 17 | | 48 | 2 | | 49 | 15 |
| |
| 88.29% | Passive voice overuse | Target: ≤2% passive sentences | | passiveCount | 3 | | totalSentences | 62 | | matches | | 0 | "been compromised" | | 1 | "was found" | | 2 | "been trapped" |
| |
| 100.00% | Past progressive (was/were + -ing) overuse | Target: ≤2% past progressive verbs | | pastProgressiveCount | 0 | | totalVerbs | 348 | | matches | (empty) | |
| 0.00% | Em-dash & semicolon overuse | Target: ≤2% sentences with em-dashes/semicolons | | emDashCount | 20 | | semicolonCount | 2 | | flaggedSentences | 19 | | totalSentences | 62 | | ratio | 0.306 | | matches | | 0 | "Rory twisted the third deadbolt’s brass knob, her left wrist’s crescent scar stretching as she leaned into the effort—childhood bike crash, Brendan’s fumbling bandages still vivid in her mind." | | 1 | "She’d been sorting Eva’s research scrolls when the rapid, sharp raps hit the door; Eva was out running errands, so she’d assumed a curry house delivery mix-up." | | 2 | "She stepped back, her boot catching the edge of a stack of leather-bound books stacked by the door. The top volume—Eva’s research on Avaros demon hierarchies—slammed to the floor, its pages fanning out to reveal scribbled notes about half-demon bloodlines. Ptolemy, the tabby cat, trotted from the cramped bedroom, his tail flicking as he pressed against her calf, hissing once at the figure in the doorway." | | 3 | "Rory’s fingers tightened around the doorframe, her bright blue eyes narrowing. She’d taken the delivery job to lay low after fleeing Cardiff, Evan’s shouts still ringing in her ears when she’d boarded the train to London. Lucien’s disappearance had come three months later, right after she’d stumbled on one of his fixer jobs—a supernatural debt collection that had left her hiding in a dumpster for four hours, her delivery bag crumpled beside her." | | 4 | "Lucien stepped over the threshold without invitation, his cane’s tip gliding over a scroll that had fallen from the windowsill. He adjusted his suit’s cuff, the movement deliberate, and his heterochromatic eyes scanned the flat—every surface coated in books, scrolls, and Eva’s research notes, the air thick with the smell of stale coffee and curry drifting up from the shop below." | | 5 | "Rory’s breath caught. She’d never known Eva’s flat had been compromised; Eva had installed the three deadbolts after Rory’s arrival, but she’d never mentioned a demon threat. Ptolemy jumped onto a stack of ancient scrolls, his weight making them creak, and stared at Lucien like he could see the demon blood coursing through his veins." | | 6 | "Lucien’s cane tapped the floor again, this time harder. He’d spent the last year tracking the Avaros emissary, learning every detail of their plan to blackmail Rory into working for them—her pre-law training made her a valuable asset for their human-world schemes. He’d spoken four languages to gather intel, bargained with a vampire in Soho, and broken into a witch’s library in Hampstead to find Eva’s current address." | | 7 | "Rory turned away, her straight shoulder-length black hair sweeping over her shoulder as she knelt to pick up the fallen book. Her crescent scar caught the light from the window, and Lucien’s gaze locked on it—he’d traced that scar with his thumb once, on a night they’d hidden in a London park, watching the stars, his demon side quiet for the first time in years." | | 8 | "Ptolemy hissed again, then suddenly trotted over to rub against Lucien’s leg—a sudden shift that made Rory’s eyes widen. She’d never seen the tabby warm up to a stranger, let alone a half-demon." | | 9 | "Rory leaned against the window sill, the cool glass pressing against her back as she stared at him. The flat’s clutter surrounded her—Eva’s research notes on Avaros, her delivery bag by the couch, the stack of books she’d been sorting—and she realized she’d been hiding from more than Evan and the Avaros emissary. She’d been hiding from the feelings she still had for Lucien, the hurt that hadn’t faded, the things left unsaid." | | 10 | "Lucien reached into his suit pocket, pulling out a folded piece of paper—an intelligence report on the Avaros emissary’s next move. He’d typed it in Welsh, knowing it was her mother’s native language, so no one else could read it if it was found." | | 11 | "Rory took the paper, her fingers brushing his. The contact sent a jolt through her—she’d tried to forget the way his hands felt, the way his lips had pressed against hers on that park night, but the memory flooded back. She unfolded the paper, her cool-headed pre-law training kicking in as she scanned the Welsh text, noting the emissary’s weaknesses, the locations of his hidden stashes." | | 12 | "Lucien’s cane shifted, the ivory handle twisting slightly—a subtle sign he was ready to draw the hidden blade if needed. He’d already faced his father’s lieutenants once, taking a knife wound to the side that had left him limping for a month, but he’d do it again to keep Rory safe." | | 13 | "Lucien knelt beside her, his suit’s knee brushing the floor, and grabbed a handful of paper towels from the counter. He dabbed at the coffee stain, his movements careful not to tear the fragile scrolls—he’d handled ancient documents enough in his fixer work to know their value." | | 14 | "Rory went back to blotting the stain, her bright blue eyes focused on the scroll’s inked text—notes about Avaros demon hierarchies, about the way they manipulated human laws to cover their smuggling rings. She’d spent her pre-law years analyzing loopholes, and she realized she could use that skill to take down the emissary without involving the supernatural underworld." | | 15 | "Lucien nodded, his platinum hair catching the light. He’d never thought to use human law enforcement—his fixer work had always relied on supernatural bargains—but Rory’s quick, out-of-the-box thinking made perfect sense." | | 16 | "Eva’s got more notes on his human contacts. We can cross-reference them with the police database—she’s got a friend in the Met who owes her a favor." | | 17 | "Rory pulled her hand away, but not before she squeezed his. She knelt to grab a stack of Eva’s research notes, spreading them out on the table beside the Welsh report. She’d spent so long hiding from her feelings, so long convincing herself she didn’t need anyone, but now she had a plan—one that included Lucien, one that could fix the mess they’d both been trapped in." | | 18 | "Rory studied the map, her cool-headedness kicking in as she noted the warehouse’s proximity to a train station—perfect for the emissary to flee, but also perfect for the police to block all exits. She’d draft the tip to include that detail, to make sure the police were prepared." |
| |
| 100.00% | Purple prose (modifier overload) | Target: <4% adverbs, <2% -ly adverbs, no adj stacking | | wordCount | 86 | | adjectiveStacks | 0 | | stackExamples | (empty) | | adverbCount | 1 | | adverbRatio | 0.011627906976744186 | | lyAdverbCount | 0 | | lyAdverbRatio | 0 | |
| 100.00% | Repeated phrase echo | Target: ≤20% sentences with echoes (window: 2) | | totalSentences | 62 | | echoCount | 0 | | echoWords | (empty) | |
| 100.00% | Sentence length variance | Target: CV ≥0.4 for sentence word counts | | totalSentences | 62 | | mean | 31.94 | | std | 21.87 | | cv | 0.685 | | sampleLengths | | 0 | 29 | | 1 | 27 | | 2 | 16 | | 3 | 79 | | 4 | 7 | | 5 | 66 | | 6 | 15 | | 7 | 73 | | 8 | 19 | | 9 | 61 | | 10 | 24 | | 11 | 55 | | 12 | 5 | | 13 | 68 | | 14 | 30 | | 15 | 65 | | 16 | 17 | | 17 | 51 | | 18 | 18 | | 19 | 33 | | 20 | 6 | | 21 | 42 | | 22 | 14 | | 23 | 73 | | 24 | 6 | | 25 | 44 | | 26 | 34 | | 27 | 66 | | 28 | 8 | | 29 | 51 | | 30 | 3 | | 31 | 40 | | 32 | 6 | | 33 | 47 | | 34 | 16 | | 35 | 33 | | 36 | 6 | | 37 | 40 | | 38 | 6 | | 39 | 58 | | 40 | 34 | | 41 | 31 | | 42 | 19 | | 43 | 27 | | 44 | 27 | | 45 | 51 | | 46 | 14 | | 47 | 44 | | 48 | 7 | | 49 | 17 |
| |
| 50.00% | Sentence opener variety | Target: ≥60% unique sentence openers | | consecutiveRepeats | 0 | | diversityRatio | 0.24193548387096775 | | totalSentences | 62 | | uniqueOpeners | 15 | |
| 0.00% | Adverb-first sentence starts | Target: ≥3% sentences starting with an adverb | | adverbCount | 0 | | totalSentences | 60 | | matches | (empty) | | ratio | 0 | |
| 73.33% | Pronoun-first sentence starts | Target: ≤30% sentences starting with a pronoun | | pronounCount | 22 | | totalSentences | 60 | | matches | | 0 | "She’d been sorting Eva’s research" | | 1 | "You don’t get to turn" | | 2 | "She stepped back, her boot" | | 3 | "You bailed on me when" | | 4 | "I didn’t have a choice." | | 5 | "You never told me that." | | 6 | "I couldn’t. If I’d said" | | 7 | "I thought you’d chosen your" | | 8 | "You were never a job." | | 9 | "He likes you. That’s a" | | 10 | "He’s smarter than most humans." | | 11 | "You risked your father’s wrath" | | 12 | "I’d risk worse." | | 13 | "I’ll replace them. I know" | | 14 | "You don’t have to do" | | 15 | "I want to. It’s a" | | 16 | "I can draft a tip" | | 17 | "I’m sorry I left. I’m" | | 18 | "You have to promise me" | | 19 | "You don’t leave again without" |
| | ratio | 0.367 | |
| 0.00% | Subject-first sentence starts | Target: ≤72% sentences starting with a subject | | subjectCount | 56 | | totalSentences | 60 | | matches | | 0 | "Rory twisted the third deadbolt’s" | | 1 | "She’d been sorting Eva’s research" | | 2 | "The door creaked open an" | | 3 | "Lucien stood on the brick" | | 4 | "You don’t get to turn" | | 5 | "She stepped back, her boot" | | 6 | "The Avaros emissary tracking your" | | 7 | "Rory’s fingers tightened around the" | | 8 | "You bailed on me when" | | 9 | "Lucien stepped over the threshold" | | 10 | "I didn’t have a choice." | | 11 | "Rory’s breath caught. She’d never" | | 12 | "You never told me that." | | 13 | "Lucien’s cane tapped the floor" | | 14 | "I couldn’t. If I’d said" | | 15 | "Rory turned away, her straight" | | 16 | "I thought you’d chosen your" | | 17 | "Lucien stepped closer, his suit" | | 18 | "You were never a job." | | 19 | "Ptolemy hissed again, then suddenly" |
| | ratio | 0.933 | |
| 0.00% | Subordinate conjunction sentence starts | Target: ≥2% sentences starting with a subordinating conjunction | | subConjCount | 0 | | totalSentences | 60 | | matches | (empty) | | ratio | 0 | |
| 0.00% | Technical jargon density | Target: ≤6% sentences with technical-jargon patterns | | analyzedSentences | 48 | | technicalSentenceCount | 15 | | matches | | 0 | "She stepped back, her boot catching the edge of a stack of leather-bound books stacked by the door. The top volume—Eva’s research on Avaros demon hierarchies—sl…" | | 1 | "Rory’s fingers tightened around the doorframe, her bright blue eyes narrowing. She’d taken the delivery job to lay low after fleeing Cardiff, Evan’s shouts stil…" | | 2 | "Lucien stepped over the threshold without invitation, his cane’s tip gliding over a scroll that had fallen from the windowsill. He adjusted his suit’s cuff, the…" | | 3 | "Rory’s breath caught. She’d never known Eva’s flat had been compromised; Eva had installed the three deadbolts after Rory’s arrival, but she’d never mentioned a…" | | 4 | "Lucien stepped closer, his suit brushing against a stack of scrolls that teetered but didn’t fall. He’d forgotten how it felt to be in a space that smelled like…" | | 5 | "Ptolemy hissed again, then suddenly trotted over to rub against Lucien’s leg—a sudden shift that made Rory’s eyes widen. She’d never seen the tabby warm up to a…" | | 6 | "Lucien smiled for the first time, a small, tight curve of his lips that made Rory’s chest ache. He’d forgotten how to smile without a mask, how to feel somethin…" | | 7 | "Rory leaned against the window sill, the cool glass pressing against her back as she stared at him. The flat’s clutter surrounded her—Eva’s research notes on Av…" | | 8 | "Rory took the paper, her fingers brushing his. The contact sent a jolt through her—she’d tried to forget the way his hands felt, the way his lips had pressed ag…" | | 9 | "Lucien’s cane shifted, the ivory handle twisting slightly—a subtle sign he was ready to draw the hidden blade if needed. He’d already faced his father’s lieuten…" | | 10 | "I’ll replace them. I know a book dealer in Covent Garden who trades in Avaros scrolls." | | 11 | "Eva’s got more notes on his human contacts. We can cross-reference them with the police database—she’s got a friend in the Met who owes her a favor." | | 12 | "Lucien stood too, his cane leaning against the table. He reached across to take her hand, his fingers wrapping around hers, his thumb brushing her crescent scar…" | | 13 | "I’ve got a contact who can distract the emissary while the police raid. He’s a werewolf who owes me a favor." | | 14 | "Lucien nodded, his fingers brushing the map’s edge. He’d forgotten how it felt to work with someone who matched his intensity, who could keep up with his quick …" |
| |
| 100.00% | Useless dialogue additions | Target: ≤5% dialogue tags with trailing filler fragments | | totalTags | 1 | | uselessAdditionCount | 0 | | matches | (empty) | |
| 100.00% | Dialogue tag variety (said vs. fancy) | Target: ≤10% fancy dialogue tags | |