| 100.00% | Adverbs in dialogue tags | Target: ≤10% dialogue tags with adverbs | | totalTags | 15 | | adverbTagCount | 2 | | adverbTags | | 0 | "Silas said finally [finally]" | | 1 | "he said quietly [quietly]" |
| | dialogueSentences | 50 | | tagDensity | 0.3 | | leniency | 0.6 | | rawRatio | 0.133 | | effectiveRatio | 0.08 | |
| 86.47% | AI-ism adverb frequency | Target: <2% AI-ism adverbs (58 tracked) | | wordCount | 1848 | | totalAiIsmAdverbs | 5 | | found | | | highlights | | 0 | "slightly" | | 1 | "carefully" | | 2 | "slowly" |
| |
| 100.00% | AI-ism character names | Target: 0 AI-default names (16 tracked, −20% each) | | codexExemptions | | | found | (empty) | |
| 100.00% | AI-ism location names | Target: 0 AI-default location names (33 tracked, −20% each) | | codexExemptions | (empty) | | found | (empty) | |
| 70.24% | AI-ism word frequency | Target: <2% AI-ism words (290 tracked) | | wordCount | 1848 | | totalAiIsms | 11 | | found | | | highlights | | 0 | "pulse" | | 1 | "familiar" | | 2 | "weight" | | 3 | "could feel" | | 4 | "silence" | | 5 | "velvet" | | 6 | "flicker" |
| |
| 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 | 96 | | matches | (empty) | |
| 100.00% | Filter word density | Target: ≤3% sentences with filter/hedge words | | filterCount | 0 | | hedgeCount | 0 | | narrationSentences | 96 | | filterMatches | (empty) | | hedgeMatches | (empty) | |
| 100.00% | Gibberish response detection | Target: ≤1% gibberish-like sentences (hard fail if a sentence exceeds 800 words) | | analyzedSentences | 131 | | gibberishSentences | 0 | | adjustedGibberishSentences | 0 | | longSentenceCount | 0 | | runOnParagraphCount | 0 | | giantParagraphCount | 0 | | wordSaladCount | 0 | | repetitionLoopCount | 0 | | controlTokenCount | 0 | | maxSentenceWordsSeen | 71 | | ratio | 0 | | matches | (empty) | |
| 100.00% | Markdown formatting overuse | Target: ≤5% words in markdown formatting | | markdownSpans | 0 | | markdownWords | 0 | | totalWords | 1857 | | ratio | 0 | | matches | (empty) | |
| 100.00% | Missing dialogue indicators (quotation marks) | Target: ≤10% speech attributions without quotation marks | | totalAttributions | 28 | | unquotedAttributions | 0 | | matches | (empty) | |
| 100.00% | Name drop frequency | Target: ≤1.0 per-name mentions per 100 words | | totalMentions | 27 | | wordCount | 1529 | | uniqueNames | 7 | | maxNameDensity | 0.72 | | worstName | "Silas" | | maxWindowNameDensity | 2 | | worstWindowName | "Silas" | | discoveredNames | | Soho | 2 | | Eva | 2 | | London | 1 | | Blitz | 1 | | Silas | 11 | | Rory | 8 | | Evan | 2 |
| | persons | | 0 | "Eva" | | 1 | "Silas" | | 2 | "Rory" | | 3 | "Evan" |
| | places | | | globalScore | 1 | | windowScore | 1 | |
| 25.00% | Narrator intent-glossing | Target: ≤2% narration sentences with intent-glossing patterns | | analyzedSentences | 60 | | glossingSentenceCount | 3 | | matches | | 0 | "Not quite a smile, but the ghost of one, the way sunlight moves across a wall when a cloud passes" | | 1 | "not quite a smile, but the space where a smile might grow" | | 2 | "quite recognize, but it was real, and it was hers, and for the first time since she'd walked through that sticking door, she felt something loosen in her chest" |
| |
| 92.30% | "Not X but Y" pattern overuse | Target: ≤1 "not X but Y" per 1000 words | | totalMatches | 2 | | per1kWords | 1.077 | | wordCount | 1857 | | matches | | 0 | "Not quite a smile, but the ghost of one, the way sunlight moves across a wall" | | 1 | "not quite a smile, but the space" |
| |
| 100.00% | Overuse of "that" (subordinate clause padding) | Target: ≤2% sentences with "that" clauses | | thatCount | 1 | | totalSentences | 131 | | matches | | |
| 100.00% | Paragraph length variance | Target: CV ≥0.5 for paragraph word counts | | totalParagraphs | 67 | | mean | 27.72 | | std | 28.65 | | cv | 1.034 | | sampleLengths | | 0 | 87 | | 1 | 15 | | 2 | 4 | | 3 | 76 | | 4 | 51 | | 5 | 81 | | 6 | 5 | | 7 | 69 | | 8 | 33 | | 9 | 8 | | 10 | 3 | | 11 | 69 | | 12 | 1 | | 13 | 92 | | 14 | 5 | | 15 | 1 | | 16 | 27 | | 17 | 76 | | 18 | 4 | | 19 | 6 | | 20 | 2 | | 21 | 49 | | 22 | 8 | | 23 | 14 | | 24 | 11 | | 25 | 6 | | 26 | 99 | | 27 | 6 | | 28 | 2 | | 29 | 6 | | 30 | 43 | | 31 | 49 | | 32 | 6 | | 33 | 6 | | 34 | 12 | | 35 | 25 | | 36 | 4 | | 37 | 3 | | 38 | 15 | | 39 | 79 | | 40 | 11 | | 41 | 3 | | 42 | 56 | | 43 | 13 | | 44 | 19 | | 45 | 3 | | 46 | 2 | | 47 | 71 | | 48 | 8 | | 49 | 60 |
| |
| 100.00% | Passive voice overuse | Target: ≤2% passive sentences | | passiveCount | 1 | | totalSentences | 96 | | matches | | |
| 27.16% | Past progressive (was/were + -ing) overuse | Target: ≤2% past progressive verbs | | pastProgressiveCount | 7 | | totalVerbs | 270 | | matches | | 0 | "was doing" | | 1 | "wasn't saying" | | 2 | "was doing" | | 3 | "wasn't saying" | | 4 | "was choosing" | | 5 | "was shaking" | | 6 | "was asking" |
| |
| 12.00% | Em-dash & semicolon overuse | Target: ≤2% sentences with em-dashes/semicolons | | emDashCount | 9 | | semicolonCount | 0 | | flaggedSentences | 6 | | totalSentences | 131 | | ratio | 0.046 | | matches | | 0 | "She shouldered through it and the smell hit her first — old wood, spilled beer, the particular mustiness of buildings that had survived the Blitz." | | 1 | "His gaze swept the bar the way it always had — checking exits, assessing threats, cataloguing faces — and when it landed on her, it stopped." | | 2 | "His hazel eyes held hers, and she saw him taking inventory the way he always did — the new lines around her mouth, the way she held her shoulders differently, the things she was and wasn't saying in the set of her jaw." | | 3 | "He wasn't angry — Silas never got angry, not in the way other people did — but there was something there, something that hadn't been there before she'd left." | | 4 | "Rory looked at him — at the grey in his hair and the lines around his eyes and the way he held himself like a man who'd been waiting for something he didn't think would come — and she felt the weight of all those months she'd spent in this bar, learning its rhythms, learning its secrets, learning to be someone other than the girl who'd let Evan break her into pieces." | | 5 | "When he met her eyes again, something had shifted in his face — not quite a smile, but the space where a smile might grow." |
| |
| 99.91% | Purple prose (modifier overload) | Target: <4% adverbs, <2% -ly adverbs, no adj stacking | | wordCount | 1521 | | adjectiveStacks | 0 | | stackExamples | (empty) | | adverbCount | 61 | | adverbRatio | 0.040105193951347796 | | lyAdverbCount | 13 | | lyAdverbRatio | 0.008547008547008548 | |
| 100.00% | Repeated phrase echo | Target: ≤20% sentences with echoes (window: 2) | | totalSentences | 131 | | echoCount | 0 | | echoWords | (empty) | |
| 100.00% | Sentence length variance | Target: CV ≥0.4 for sentence word counts | | totalSentences | 131 | | mean | 14.18 | | std | 13.99 | | cv | 0.987 | | sampleLengths | | 0 | 11 | | 1 | 22 | | 2 | 2 | | 3 | 18 | | 4 | 34 | | 5 | 4 | | 6 | 4 | | 7 | 7 | | 8 | 4 | | 9 | 17 | | 10 | 25 | | 11 | 34 | | 12 | 5 | | 13 | 14 | | 14 | 11 | | 15 | 21 | | 16 | 3 | | 17 | 16 | | 18 | 32 | | 19 | 30 | | 20 | 5 | | 21 | 23 | | 22 | 29 | | 23 | 17 | | 24 | 7 | | 25 | 26 | | 26 | 8 | | 27 | 3 | | 28 | 6 | | 29 | 2 | | 30 | 25 | | 31 | 1 | | 32 | 35 | | 33 | 1 | | 34 | 8 | | 35 | 22 | | 36 | 19 | | 37 | 43 | | 38 | 5 | | 39 | 1 | | 40 | 5 | | 41 | 20 | | 42 | 2 | | 43 | 26 | | 44 | 17 | | 45 | 33 | | 46 | 4 | | 47 | 6 | | 48 | 2 | | 49 | 5 |
| |
| 55.73% | Sentence opener variety | Target: ≥60% unique sentence openers | | consecutiveRepeats | 7 | | diversityRatio | 0.366412213740458 | | totalSentences | 131 | | uniqueOpeners | 48 | |
| 85.47% | Adverb-first sentence starts | Target: ≥3% sentences starting with an adverb | | adverbCount | 2 | | totalSentences | 78 | | matches | | 0 | "Then the low light, amber" | | 1 | "Then he poured one for" |
| | ratio | 0.026 | |
| 91.79% | Pronoun-first sentence starts | Target: ≤30% sentences starting with a pronoun | | pronounCount | 25 | | totalSentences | 78 | | matches | | 0 | "She counted them out in" | | 1 | "She hadn't looked back." | | 2 | "She shouldered through it and" | | 3 | "He'd gotten thinner." | | 4 | "His hair had gone more" | | 5 | "He moved with that same" | | 6 | "He hadn't seen her yet." | | 7 | "Her heart was doing something" | | 8 | "She pressed her thumb against" | | 9 | "His gaze swept the bar" | | 10 | "He came around the end" | | 11 | "His hazel eyes held hers," | | 12 | "He reached under the bar" | | 13 | "He poured two fingers and" | | 14 | "She could feel him watching" | | 15 | "He wasn't angry — Silas" | | 16 | "He was quiet for a" | | 17 | "He looked at her, and" | | 18 | "he said quietly" | | 19 | "Her hand was shaking now," |
| | ratio | 0.321 | |
| 88.21% | Subject-first sentence starts | Target: ≤72% sentences starting with a subject | | subjectCount | 58 | | totalSentences | 78 | | matches | | 0 | "The green neon buzzed like" | | 1 | "Rory stood on the pavement" | | 2 | "She counted them out in" | | 3 | "She hadn't looked back." | | 4 | "That was the point." | | 5 | "That was the whole point" | | 6 | "The door stuck the way" | | 7 | "She shouldered through it and" | | 8 | "The bar was nearly empty." | | 9 | "A man in a canvas" | | 10 | "He'd gotten thinner." | | 11 | "That was the first thing" | | 12 | "His hair had gone more" | | 13 | "He moved with that same" | | 14 | "He hadn't seen her yet." | | 15 | "Rory slid onto a stool" | | 16 | "Her heart was doing something" | | 17 | "She pressed her thumb against" | | 18 | "Silas set the bottle down" | | 19 | "His gaze swept the bar" |
| | ratio | 0.744 | |
| 0.00% | Subordinate conjunction sentence starts | Target: ≥2% sentences starting with a subordinating conjunction | | subConjCount | 0 | | totalSentences | 78 | | matches | (empty) | | ratio | 0 | |
| 16.81% | Technical jargon density | Target: ≤6% sentences with technical-jargon patterns | | analyzedSentences | 51 | | technicalSentenceCount | 9 | | matches | | 0 | "She shouldered through it and the smell hit her first — old wood, spilled beer, the particular mustiness of buildings that had survived the Blitz." | | 1 | "The way he'd said it when they'd first met, when she was still raw and flinching and trying to figure out how to exist in a world that didn't have his hands aro…" | | 2 | "He wasn't angry — Silas never got angry, not in the way other people did — but there was something there, something that hadn't been there before she'd left." | | 3 | "A distance that hadn't existed in all those months when she'd been the broken thing he'd found living in Eva's spare room, when he'd given her a job and a place…" | | 4 | "The words came out sharper than she'd intended, and she saw them land, saw the flicker of something behind his eyes that might have been hurt or might have been…" | | 5 | "Carrying something that hadn't been there before, or maybe had been there all along and she'd been too wrapped up in her own damage to notice." | | 6 | "Silas studied her face, and she felt seen in a way that made her want to run, made her want to pick up the duffel bag that wasn't there this time and walk back …" | | 7 | "The maps on the walls watched her with their faded borders and their careful lines, territories that didn't exist anymore, places that had changed names and bou…" | | 8 | "Rory looked at him — at the grey in his hair and the lines around his eyes and the way he held himself like a man who'd been waiting for something he didn't thi…" |
| |
| 100.00% | Useless dialogue additions | Target: ≤5% dialogue tags with trailing filler fragments | | totalTags | 15 | | uselessAdditionCount | 0 | | matches | (empty) | |
| 100.00% | Dialogue tag variety (said vs. fancy) | Target: ≤10% fancy dialogue tags | | totalTags | 14 | | fancyCount | 0 | | fancyTags | (empty) | | dialogueSentences | 50 | | tagDensity | 0.28 | | leniency | 0.56 | | rawRatio | 0 | | effectiveRatio | 0 | |