| 82.35% | Adverbs in dialogue tags | Target: ≤10% dialogue tags with adverbs | | totalTags | 15 | | adverbTagCount | 2 | | adverbTags | | 0 | "Rory said finally [finally]" | | 1 | "Cass gestured vaguely [vaguely]" |
| | dialogueSentences | 34 | | tagDensity | 0.441 | | leniency | 0.882 | | rawRatio | 0.133 | | effectiveRatio | 0.118 | |
| 81.46% | AI-ism adverb frequency | Target: <2% AI-ism adverbs (58 tracked) | | wordCount | 1079 | | totalAiIsmAdverbs | 4 | | found | | 0 | | | 1 | | | 2 | | adverb | "deliberately" | | count | 1 |
| | 3 | |
| | highlights | | 0 | "precisely" | | 1 | "slowly" | | 2 | "deliberately" | | 3 | "really" |
| |
| 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) | |
| 76.83% | AI-ism word frequency | Target: <2% AI-ism words (290 tracked) | | wordCount | 1079 | | totalAiIsms | 5 | | found | | | highlights | | 0 | "shattered" | | 1 | "silence" | | 2 | "weight" | | 3 | "scanning" |
| |
| 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 | 1 | | narrationSentences | 74 | | matches | | |
| 100.00% | Filter word density | Target: ≤3% sentences with filter/hedge words | | filterCount | 1 | | hedgeCount | 1 | | narrationSentences | 74 | | filterMatches | | | hedgeMatches | | |
| 100.00% | Gibberish response detection | Target: ≤1% gibberish-like sentences (hard fail if a sentence exceeds 800 words) | | analyzedSentences | 92 | | gibberishSentences | 0 | | adjustedGibberishSentences | 0 | | longSentenceCount | 0 | | runOnParagraphCount | 0 | | giantParagraphCount | 0 | | wordSaladCount | 0 | | repetitionLoopCount | 0 | | controlTokenCount | 0 | | maxSentenceWordsSeen | 54 | | ratio | 0 | | matches | (empty) | |
| 100.00% | Markdown formatting overuse | Target: ≤5% words in markdown formatting | | markdownSpans | 0 | | markdownWords | 0 | | totalWords | 1075 | | ratio | 0 | | matches | (empty) | |
| 100.00% | Missing dialogue indicators (quotation marks) | Target: ≤10% speech attributions without quotation marks | | totalAttributions | 17 | | unquotedAttributions | 0 | | matches | (empty) | |
| 33.33% | Name drop frequency | Target: ≤1.0 per-name mentions per 100 words | | totalMentions | 49 | | wordCount | 914 | | uniqueNames | 13 | | maxNameDensity | 2.08 | | worstName | "Cass" | | maxWindowNameDensity | 4 | | worstWindowName | "Cass" | | discoveredNames | | Rory | 15 | | London | 2 | | Soho | 1 | | Raven | 1 | | Nest | 1 | | Tuesdays | 1 | | Cardiff | 2 | | Cass | 19 | | Morgan | 1 | | Prague | 1 | | Silas | 3 | | Carter | 1 | | Eva | 1 |
| | persons | | 0 | "Rory" | | 1 | "Raven" | | 2 | "Cass" | | 3 | "Morgan" | | 4 | "Silas" | | 5 | "Carter" | | 6 | "Eva" |
| | places | | 0 | "London" | | 1 | "Soho" | | 2 | "Cardiff" | | 3 | "Prague" |
| | globalScore | 0.461 | | windowScore | 0.333 | |
| 91.86% | Narrator intent-glossing | Target: ≤2% narration sentences with intent-glossing patterns | | analyzedSentences | 43 | | glossingSentenceCount | 1 | | matches | | |
| 100.00% | "Not X but Y" pattern overuse | Target: ≤1 "not X but Y" per 1000 words | | totalMatches | 1 | | per1kWords | 0.93 | | wordCount | 1075 | | matches | | 0 | "not exactly, but it had a texture to it" |
| |
| 100.00% | Overuse of "that" (subordinate clause padding) | Target: ≤2% sentences with "that" clauses | | thatCount | 1 | | totalSentences | 92 | | matches | | |
| 100.00% | Paragraph length variance | Target: CV ≥0.5 for paragraph word counts | | totalParagraphs | 51 | | mean | 21.08 | | std | 21.27 | | cv | 1.009 | | sampleLengths | | 0 | 11 | | 1 | 61 | | 2 | 3 | | 3 | 5 | | 4 | 34 | | 5 | 84 | | 6 | 37 | | 7 | 3 | | 8 | 51 | | 9 | 62 | | 10 | 7 | | 11 | 9 | | 12 | 42 | | 13 | 6 | | 14 | 8 | | 15 | 52 | | 16 | 6 | | 17 | 3 | | 18 | 7 | | 19 | 9 | | 20 | 41 | | 21 | 6 | | 22 | 4 | | 23 | 4 | | 24 | 25 | | 25 | 2 | | 26 | 26 | | 27 | 15 | | 28 | 4 | | 29 | 50 | | 30 | 9 | | 31 | 2 | | 32 | 7 | | 33 | 24 | | 34 | 62 | | 35 | 20 | | 36 | 6 | | 37 | 2 | | 38 | 5 | | 39 | 28 | | 40 | 4 | | 41 | 44 | | 42 | 12 | | 43 | 4 | | 44 | 2 | | 45 | 15 | | 46 | 24 | | 47 | 12 | | 48 | 58 | | 49 | 4 |
| |
| 91.04% | Passive voice overuse | Target: ≤2% passive sentences | | passiveCount | 3 | | totalSentences | 74 | | matches | | 0 | "been paved" | | 1 | "been, lopsided" | | 2 | "been pulled" |
| |
| 100.00% | Past progressive (was/were + -ing) overuse | Target: ≤2% past progressive verbs | | pastProgressiveCount | 1 | | totalVerbs | 169 | | matches | | |
| 100.00% | Em-dash & semicolon overuse | Target: ≤2% sentences with em-dashes/semicolons | | emDashCount | 0 | | semicolonCount | 0 | | flaggedSentences | 0 | | totalSentences | 92 | | ratio | 0 | | matches | (empty) | |
| 92.78% | Purple prose (modifier overload) | Target: <4% adverbs, <2% -ly adverbs, no adj stacking | | wordCount | 918 | | adjectiveStacks | 1 | | stackExamples | | 0 | "low, sea-coloured light." |
| | adverbCount | 38 | | adverbRatio | 0.04139433551198257 | | lyAdverbCount | 11 | | lyAdverbRatio | 0.011982570806100218 | |
| 100.00% | Repeated phrase echo | Target: ≤20% sentences with echoes (window: 2) | | totalSentences | 92 | | echoCount | 0 | | echoWords | (empty) | |
| 100.00% | Sentence length variance | Target: CV ≥0.4 for sentence word counts | | totalSentences | 92 | | mean | 11.68 | | std | 10.93 | | cv | 0.936 | | sampleLengths | | 0 | 11 | | 1 | 4 | | 2 | 38 | | 3 | 19 | | 4 | 3 | | 5 | 5 | | 6 | 34 | | 7 | 7 | | 8 | 34 | | 9 | 17 | | 10 | 26 | | 11 | 37 | | 12 | 3 | | 13 | 4 | | 14 | 19 | | 15 | 28 | | 16 | 4 | | 17 | 4 | | 18 | 16 | | 19 | 32 | | 20 | 6 | | 21 | 3 | | 22 | 4 | | 23 | 9 | | 24 | 10 | | 25 | 32 | | 26 | 6 | | 27 | 8 | | 28 | 25 | | 29 | 27 | | 30 | 6 | | 31 | 3 | | 32 | 7 | | 33 | 9 | | 34 | 7 | | 35 | 14 | | 36 | 10 | | 37 | 10 | | 38 | 6 | | 39 | 4 | | 40 | 4 | | 41 | 16 | | 42 | 9 | | 43 | 2 | | 44 | 5 | | 45 | 21 | | 46 | 8 | | 47 | 7 | | 48 | 4 | | 49 | 3 |
| |
| 78.99% | Sentence opener variety | Target: ≥60% unique sentence openers | | consecutiveRepeats | 4 | | diversityRatio | 0.5 | | totalSentences | 92 | | uniqueOpeners | 46 | |
| 52.91% | Adverb-first sentence starts | Target: ≥3% sentences starting with an adverb | | adverbCount | 1 | | totalSentences | 63 | | matches | | 0 | "Then, slowly, a grin spread" |
| | ratio | 0.016 | |
| 100.00% | Pronoun-first sentence starts | Target: ≤30% sentences starting with a pronoun | | pronounCount | 11 | | totalSentences | 63 | | matches | | 0 | "She'd been reaching for it" | | 1 | "He gave her a look" | | 2 | "She almost missed it." | | 3 | "he asked Rory" | | 4 | "It wasn't uncomfortable, not exactly," | | 5 | "She did, sometimes." | | 6 | "It was one of the" | | 7 | "It wasn't wrong." | | 8 | "She'd come to London and" | | 9 | "She pulled it back, set" | | 10 | "She'd seen that posture before." |
| | ratio | 0.175 | |
| 55.24% | Subject-first sentence starts | Target: ≤72% sentences starting with a subject | | subjectCount | 51 | | totalSentences | 63 | | matches | | 0 | "The glass slipped from Rory's" | | 1 | "She'd been reaching for it" | | 2 | "Silas appeared from nowhere, as" | | 3 | "He gave her a look" | | 4 | "The Raven's Nest was quiet" | | 5 | "A couple in the far" | | 6 | "A man at the end" | | 7 | "The green neon from the" | | 8 | "Rory turned her glass in" | | 9 | "The door opened." | | 10 | "She almost missed it." | | 11 | "A habit is only useful" | | 12 | "The hair was different, cut" | | 13 | "The leather jacket was new," | | 14 | "This one was clean, structured," | | 15 | "Nobody changed their walk." | | 16 | "Rory said, to no one" | | 17 | "Cass Morgan stopped three steps" | | 18 | "Cass dropped onto the stool" | | 19 | "Silas appeared again, materialising with" |
| | ratio | 0.81 | |
| 0.00% | Subordinate conjunction sentence starts | Target: ≥2% sentences starting with a subordinating conjunction | | subConjCount | 0 | | totalSentences | 63 | | matches | (empty) | | ratio | 0 | |
| 0.00% | Technical jargon density | Target: ≤6% sentences with technical-jargon patterns | | analyzedSentences | 32 | | technicalSentenceCount | 10 | | matches | | 0 | "She'd been reaching for it without looking, her attention caught on the map behind the counter, an old yellowing thing framed in cracked wood that showed London…" | | 1 | "He gave her a look that suggested the tab was becoming something of a myth, a legend passed down between bar owners, and set a fresh glass in front of her witho…" | | 2 | "A couple in the far corner nursed matching glasses of red wine and avoided eye contact with each other in that particular way that meant they were either deeply…" | | 3 | "The leather jacket was new, or at least not the one she knew, not the battered brown one with the broken zip that had smelled of motor oil and too much confiden…" | | 4 | "Then, slowly, a grin spread across her face, the same grin it had always been, lopsided and unguarded, the one grin that had never changed in twenty-two years o…" | | 5 | "Silas appeared again, materialising with the quiet efficiency of a man who'd once tailed arms dealers through Prague and now considered reading the room a profe…" | | 6 | "After Cardiff, after everything that had swallowed the last year before she left, she hadn't been sure she'd wanted anyone to." | | 7 | "She'd come to London and deliberately made herself difficult to find, and the people who'd found her anyway, Eva, eventually, had done so because they knew her …" | | 8 | "Rory looked at her, really looked, past the haircut and the clean jacket, at the faint shadows under Cass's eyes and the way she held her shoulders, tighter tha…" | | 9 | "Cass opened her mouth, and the bar door swung open again, hard enough to crack against the wall, and a man Rory had never seen before stepped through it, breath…" |
| |
| 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 | 11 | | fancyCount | 0 | | fancyTags | (empty) | | dialogueSentences | 34 | | tagDensity | 0.324 | | leniency | 0.647 | | rawRatio | 0 | | effectiveRatio | 0 | |