| 100.00% | Adverbs in dialogue tags | Target: ≤10% dialogue tags with adverbs | | totalTags | 18 | | adverbTagCount | 3 | | adverbTags | | 0 | "she replied dryly [dryly]" | | 1 | "she admitted quietly [quietly]" | | 2 | "He pulled back [back]" |
| | dialogueSentences | 61 | | tagDensity | 0.295 | | leniency | 0.59 | | rawRatio | 0.167 | | effectiveRatio | 0.098 | |
| 84.90% | AI-ism adverb frequency | Target: <2% AI-ism adverbs (58 tracked) | | wordCount | 1656 | | totalAiIsmAdverbs | 5 | | found | | | highlights | | 0 | "perfectly" | | 1 | "lightly" | | 2 | "slowly" | | 3 | "really" | | 4 | "slightly" |
| |
| 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.73% | AI-ism word frequency | Target: <2% AI-ism words (290 tracked) | | wordCount | 1656 | | totalAiIsms | 14 | | found | | | highlights | | 0 | "familiar" | | 1 | "chill" | | 2 | "warmth" | | 3 | "flicker" | | 4 | "whisper" | | 5 | "traced" | | 6 | "pulse" | | 7 | "silence" | | 8 | "trembled" | | 9 | "stomach" |
| |
| 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 | 123 | | matches | (empty) | |
| 100.00% | Filter word density | Target: ≤3% sentences with filter/hedge words | | filterCount | 0 | | hedgeCount | 1 | | narrationSentences | 123 | | filterMatches | (empty) | | hedgeMatches | | |
| 100.00% | Gibberish response detection | Target: ≤1% gibberish-like sentences (hard fail if a sentence exceeds 800 words) | | analyzedSentences | 166 | | gibberishSentences | 0 | | adjustedGibberishSentences | 0 | | longSentenceCount | 0 | | runOnParagraphCount | 0 | | giantParagraphCount | 0 | | wordSaladCount | 0 | | repetitionLoopCount | 0 | | controlTokenCount | 0 | | maxSentenceWordsSeen | 46 | | ratio | 0 | | matches | (empty) | |
| 100.00% | Markdown formatting overuse | Target: ≤5% words in markdown formatting | | markdownSpans | 3 | | markdownWords | 3 | | totalWords | 1642 | | ratio | 0.002 | | matches | | 0 | "click" | | 1 | "finally" | | 2 | "finally" |
| |
| 100.00% | Missing dialogue indicators (quotation marks) | Target: ≤10% speech attributions without quotation marks | | totalAttributions | 25 | | unquotedAttributions | 0 | | matches | (empty) | |
| 100.00% | Name drop frequency | Target: ≤1.0 per-name mentions per 100 words | | totalMentions | 44 | | wordCount | 1205 | | uniqueNames | 18 | | maxNameDensity | 0.83 | | worstName | "Lucien" | | maxWindowNameDensity | 2 | | worstWindowName | "Lucien" | | discoveredNames | | Carter | 1 | | Eva | 6 | | Rory | 5 | | Tuesday | 1 | | Brick | 3 | | Lane | 3 | | Evan | 3 | | Moreau | 1 | | Soho | 1 | | Marseille | 1 | | French | 1 | | Lucien | 10 | | Eric | 1 | | Borough | 1 | | Market | 1 | | London | 1 | | Thames | 1 | | Piotr | 3 |
| | persons | | 0 | "Carter" | | 1 | "Eva" | | 2 | "Rory" | | 3 | "Evan" | | 4 | "Moreau" | | 5 | "Lucien" | | 6 | "Eric" | | 7 | "Piotr" |
| | places | | 0 | "Brick" | | 1 | "Lane" | | 2 | "Soho" | | 3 | "Marseille" | | 4 | "Borough" | | 5 | "Market" | | 6 | "London" | | 7 | "Thames" |
| | globalScore | 1 | | windowScore | 1 | |
| 100.00% | Narrator intent-glossing | Target: ≤2% narration sentences with intent-glossing patterns | | analyzedSentences | 76 | | glossingSentenceCount | 1 | | matches | | 0 | "something like amusement, or maybe regret" |
| |
| 100.00% | "Not X but Y" pattern overuse | Target: ≤1 "not X but Y" per 1000 words | | totalMatches | 0 | | per1kWords | 0 | | wordCount | 1642 | | matches | (empty) | |
| 100.00% | Overuse of "that" (subordinate clause padding) | Target: ≤2% sentences with "that" clauses | | thatCount | 0 | | totalSentences | 166 | | matches | (empty) | |
| 100.00% | Paragraph length variance | Target: CV ≥0.5 for paragraph word counts | | totalParagraphs | 86 | | mean | 19.09 | | std | 18.68 | | cv | 0.978 | | sampleLengths | | 0 | 83 | | 1 | 49 | | 2 | 52 | | 3 | 70 | | 4 | 3 | | 5 | 20 | | 6 | 12 | | 7 | 44 | | 8 | 10 | | 9 | 13 | | 10 | 72 | | 11 | 9 | | 12 | 3 | | 13 | 18 | | 14 | 7 | | 15 | 13 | | 16 | 14 | | 17 | 5 | | 18 | 6 | | 19 | 40 | | 20 | 25 | | 21 | 36 | | 22 | 28 | | 23 | 33 | | 24 | 8 | | 25 | 26 | | 26 | 3 | | 27 | 75 | | 28 | 13 | | 29 | 7 | | 30 | 1 | | 31 | 1 | | 32 | 14 | | 33 | 22 | | 34 | 5 | | 35 | 2 | | 36 | 27 | | 37 | 25 | | 38 | 19 | | 39 | 6 | | 40 | 3 | | 41 | 3 | | 42 | 3 | | 43 | 13 | | 44 | 15 | | 45 | 12 | | 46 | 13 | | 47 | 19 | | 48 | 41 | | 49 | 3 |
| |
| 100.00% | Passive voice overuse | Target: ≤2% passive sentences | | passiveCount | 1 | | totalSentences | 123 | | matches | | |
| 100.00% | Past progressive (was/were + -ing) overuse | Target: ≤2% past progressive verbs | | pastProgressiveCount | 1 | | totalVerbs | 221 | | matches | | |
| 0.00% | Em-dash & semicolon overuse | Target: ≤2% sentences with em-dashes/semicolons | | emDashCount | 14 | | semicolonCount | 0 | | flaggedSentences | 13 | | totalSentences | 166 | | ratio | 0.078 | | matches | | 0 | "Aurora Carter had been halfway through deciding whether she’d settle for the packet of crisps with the funny little tear on the seal when the knock came—three slow, deliberate raps, not the usual staccato of Eva’s landlord or the over-enthusiastic tattoo artist from downstairs." | | 1 | "The flat smelled of chai, dust, and the faint metallic tang of old blood—just another Tuesday upstairs on Brick Lane." | | 2 | "For a second, she imagined it was Evan, that familiar chill of wrongness before a door even opened, but this knock carried no malice—only hesitation." | | 3 | "A flicker crossed his face—something like amusement, or maybe regret." | | 4 | "The scent of him—bergamot and gunpowder and something wild beneath, like storm-wet earth—drifted over the threshold." | | 5 | "She huffed, rubbed her thumb over the crescent scar on her wrist—the one that had bled beneath Evan’s hold, the one Lucien had once kissed like it could be made whole." | | 6 | "The flat seemed to shrink around him—his presence was gravitational." | | 7 | "Nestled in his palm was the silver locket she’d lost three months ago—the one with the tiny family photo inside, the one Evan had smashed against the sink when she refused to cry." | | 8 | "She looked at the locket—her silence, her grief, her everything, in his hands." | | 9 | "His pulse jumped beneath her fingers—fast, warm, alive." | | 10 | "Their mouths met like two forces colliding—hesitant, hungry, *finally*." | | 11 | "Rory kissed him back with all the fury that had lived inside her since the last morning she woke beside him—his sheets cold, his scent lingering like a ghost." | | 12 | "Outside, Brick Lane carried on—curry, commerce, chaos." |
| |
| 96.40% | Purple prose (modifier overload) | Target: <4% adverbs, <2% -ly adverbs, no adj stacking | | wordCount | 1224 | | adjectiveStacks | 0 | | stackExamples | (empty) | | adverbCount | 54 | | adverbRatio | 0.04411764705882353 | | lyAdverbCount | 16 | | lyAdverbRatio | 0.013071895424836602 | |
| 100.00% | Repeated phrase echo | Target: ≤20% sentences with echoes (window: 2) | | totalSentences | 166 | | echoCount | 0 | | echoWords | (empty) | |
| 100.00% | Sentence length variance | Target: CV ≥0.4 for sentence word counts | | totalSentences | 166 | | mean | 9.89 | | std | 8.45 | | cv | 0.855 | | sampleLengths | | 0 | 44 | | 1 | 7 | | 2 | 23 | | 3 | 9 | | 4 | 29 | | 5 | 20 | | 6 | 10 | | 7 | 25 | | 8 | 17 | | 9 | 28 | | 10 | 20 | | 11 | 22 | | 12 | 3 | | 13 | 15 | | 14 | 5 | | 15 | 7 | | 16 | 5 | | 17 | 19 | | 18 | 7 | | 19 | 5 | | 20 | 7 | | 21 | 6 | | 22 | 7 | | 23 | 3 | | 24 | 10 | | 25 | 3 | | 26 | 16 | | 27 | 5 | | 28 | 4 | | 29 | 10 | | 30 | 37 | | 31 | 4 | | 32 | 5 | | 33 | 3 | | 34 | 18 | | 35 | 3 | | 36 | 4 | | 37 | 13 | | 38 | 5 | | 39 | 9 | | 40 | 5 | | 41 | 6 | | 42 | 31 | | 43 | 9 | | 44 | 8 | | 45 | 7 | | 46 | 10 | | 47 | 8 | | 48 | 10 | | 49 | 18 |
| |
| 52.21% | Sentence opener variety | Target: ≥60% unique sentence openers | | consecutiveRepeats | 10 | | diversityRatio | 0.3493975903614458 | | totalSentences | 166 | | uniqueOpeners | 58 | |
| 89.29% | Adverb-first sentence starts | Target: ≥3% sentences starting with an adverb | | adverbCount | 3 | | totalSentences | 112 | | matches | | 0 | "Instead, she caught his wrist." | | 1 | "Then she pulled him down." | | 2 | "Once, rough and broken." |
| | ratio | 0.027 | |
| 12.86% | Pronoun-first sentence starts | Target: ≤30% sentences starting with a pronoun | | pronounCount | 58 | | totalSentences | 112 | | matches | | 0 | "Her fingers stilled on the" | | 1 | "He blinked at the door," | | 2 | "She wiped her palms on" | | 3 | "She paused at the door," | | 4 | "She exhaled, pushed the cigarette" | | 5 | "His golden eye gleamed with" | | 6 | "His platinum hair looked freshly" | | 7 | "Her breath caught." | | 8 | "he said, voice smooth as" | | 9 | "She tightened her grip on" | | 10 | "He tilted his head just" | | 11 | "she replied dryly" | | 12 | "It should’ve been too much." | | 13 | "It was too much." | | 14 | "It remembered the curve of" | | 15 | "She swallowed, stepped back." | | 16 | "He didn’t move." | | 17 | "she said, but there was" | | 18 | "He still didn’t cross the" | | 19 | "She huffed, rubbed her thumb" |
| | ratio | 0.518 | |
| 53.75% | Subject-first sentence starts | Target: ≤72% sentences starting with a subject | | subjectCount | 91 | | totalSentences | 112 | | matches | | 0 | "Aurora Carter had been halfway" | | 1 | "Her fingers stilled on the" | | 2 | "Piotr, Eva’s ancient tabby, lifted" | | 3 | "He blinked at the door," | | 4 | "She wiped her palms on" | | 5 | "The flat smelled of chai," | | 6 | "She paused at the door," | | 7 | "She exhaled, pushed the cigarette" | | 8 | "Lucien Moreau stood on the" | | 9 | "His golden eye gleamed with" | | 10 | "His platinum hair looked freshly" | | 11 | "Her breath caught." | | 12 | "he said, voice smooth as" | | 13 | "She tightened her grip on" | | 14 | "He tilted his head just" | | 15 | "Memory was a sieve lately." | | 16 | "she replied dryly" | | 17 | "A flicker crossed his face—something" | | 18 | "The scent of him—bergamot and" | | 19 | "It should’ve been too much." |
| | ratio | 0.813 | |
| 44.64% | Subordinate conjunction sentence starts | Target: ≥2% sentences starting with a subordinating conjunction | | subConjCount | 1 | | totalSentences | 112 | | matches | | 0 | "Now returned like a debt." |
| | ratio | 0.009 | |
| 53.57% | Technical jargon density | Target: ≤6% sentences with technical-jargon patterns | | analyzedSentences | 40 | | technicalSentenceCount | 5 | | matches | | 0 | "His platinum hair looked freshly slicked, as if he’d come straight from a GQ photoshoot rather than the supernatural underbelly of Soho." | | 1 | "He reached up, hesitating a second before brushing his thumb over her cheekbone, wiping away something she hadn’t felt fall." | | 2 | "Three months of silence, of longing, of half-remembered kisses in claustrophobic alleys and stolen hours in his penthouse overlooking the Thames broke open like…" | | 3 | "Lucien’s hand threaded into her hair, knocking her beanie off, sending it tumbling to the floor." | | 4 | "Rory kissed him back with all the fury that had lived inside her since the last morning she woke beside him—his sheets cold, his scent lingering like a ghost." |
| |
| 69.44% | Useless dialogue additions | Target: ≤5% dialogue tags with trailing filler fragments | | totalTags | 18 | | uselessAdditionCount | 2 | | matches | | 0 | "she said, voice thin" | | 1 | "he cut in, voice low and rough" |
| |
| 51.64% | Dialogue tag variety (said vs. fancy) | Target: ≤10% fancy dialogue tags | | totalTags | 14 | | fancyCount | 6 | | fancyTags | | 0 | "she admitted (admit)" | | 1 | "she whispered (whisper)" | | 2 | "he continued (continue)" | | 3 | "she admitted quietly (admit)" | | 4 | "He pulled back (pull)" | | 5 | "he confessed (confess)" |
| | dialogueSentences | 61 | | tagDensity | 0.23 | | leniency | 0.459 | | rawRatio | 0.429 | | effectiveRatio | 0.197 | |