| 100.00% | Adverbs in dialogue tags | Target: ≤10% dialogue tags with adverbs | | totalTags | 23 | | adverbTagCount | 2 | | adverbTags | | 0 | "Lucien said slowly [slowly]" | | 1 | "Rory said finally [finally]" |
| | dialogueSentences | 48 | | tagDensity | 0.479 | | leniency | 0.958 | | rawRatio | 0.087 | | effectiveRatio | 0.083 | |
| 73.03% | AI-ism adverb frequency | Target: <2% AI-ism adverbs (58 tracked) | | wordCount | 1483 | | totalAiIsmAdverbs | 8 | | found | | | highlights | | 0 | "very" | | 1 | "softly" | | 2 | "slowly" |
| |
| 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) | |
| 93.26% | AI-ism word frequency | Target: <2% AI-ism words (290 tracked) | | wordCount | 1483 | | totalAiIsms | 2 | | found | | | highlights | | |
| 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 | 77 | | matches | (empty) | |
| 87.20% | Filter word density | Target: ≤3% sentences with filter/hedge words | | filterCount | 2 | | hedgeCount | 1 | | narrationSentences | 77 | | filterMatches | | | hedgeMatches | | |
| 100.00% | Gibberish response detection | Target: ≤1% gibberish-like sentences (hard fail if a sentence exceeds 800 words) | | analyzedSentences | 102 | | gibberishSentences | 0 | | adjustedGibberishSentences | 0 | | longSentenceCount | 0 | | runOnParagraphCount | 0 | | giantParagraphCount | 0 | | wordSaladCount | 0 | | repetitionLoopCount | 0 | | controlTokenCount | 0 | | repeatedSegmentCount | 0 | | maxSentenceWordsSeen | 86 | | ratio | 0 | | matches | (empty) | |
| 100.00% | Markdown formatting overuse | Target: ≤5% words in markdown formatting | | markdownSpans | 2 | | markdownWords | 10 | | totalWords | 1492 | | ratio | 0.007 | | matches | | 0 | "this is not something I can give you, chérie" | | 1 | "wait" |
| |
| 100.00% | Missing dialogue indicators (quotation marks) | Target: ≤10% speech attributions without quotation marks | | totalAttributions | 23 | | unquotedAttributions | 0 | | matches | (empty) | |
| 100.00% | Name drop frequency | Target: ≤1.0 per-name mentions per 100 words | | totalMentions | 27 | | wordCount | 1068 | | uniqueNames | 7 | | maxNameDensity | 0.75 | | worstName | "Rory" | | maxWindowNameDensity | 2 | | worstWindowName | "Rory" | | discoveredNames | | Eva | 7 | | Greek | 1 | | Moreau | 3 | | Water | 1 | | Lucien | 6 | | Rory | 8 | | Bermondsey | 1 |
| | persons | | 0 | "Eva" | | 1 | "Moreau" | | 2 | "Water" | | 3 | "Lucien" | | 4 | "Rory" |
| | places | | | globalScore | 1 | | windowScore | 1 | |
| 100.00% | Narrator intent-glossing | Target: ≤2% narration sentences with intent-glossing patterns | | analyzedSentences | 44 | | glossingSentenceCount | 0 | | matches | (empty) | |
| 100.00% | "Not X but Y" pattern overuse | Target: ≤1 "not X but Y" per 1000 words | | totalMatches | 0 | | per1kWords | 0 | | wordCount | 1492 | | matches | (empty) | |
| 100.00% | Overuse of "that" (subordinate clause padding) | Target: ≤2% sentences with "that" clauses | | thatCount | 2 | | totalSentences | 102 | | matches | | 0 | "knew that knock" | | 1 | "was that he" |
| |
| 100.00% | Paragraph length variance | Target: CV ≥0.5 for paragraph word counts | | totalParagraphs | 57 | | mean | 26.18 | | std | 27.55 | | cv | 1.053 | | sampleLengths | | 0 | 29 | | 1 | 23 | | 2 | 20 | | 3 | 4 | | 4 | 56 | | 5 | 47 | | 6 | 4 | | 7 | 77 | | 8 | 33 | | 9 | 29 | | 10 | 7 | | 11 | 33 | | 12 | 3 | | 13 | 15 | | 14 | 100 | | 15 | 5 | | 16 | 8 | | 17 | 4 | | 18 | 68 | | 19 | 14 | | 20 | 52 | | 21 | 5 | | 22 | 22 | | 23 | 3 | | 24 | 3 | | 25 | 67 | | 26 | 2 | | 27 | 1 | | 28 | 20 | | 29 | 61 | | 30 | 49 | | 31 | 3 | | 32 | 5 | | 33 | 1 | | 34 | 26 | | 35 | 78 | | 36 | 1 | | 37 | 1 | | 38 | 3 | | 39 | 36 | | 40 | 16 | | 41 | 22 | | 42 | 128 | | 43 | 5 | | 44 | 17 | | 45 | 18 | | 46 | 3 | | 47 | 9 | | 48 | 48 | | 49 | 38 |
| |
| 91.59% | Passive voice overuse | Target: ≤2% passive sentences | | passiveCount | 3 | | totalSentences | 77 | | matches | | 0 | "was slicked" | | 1 | "were pressed" | | 2 | "was tired" | | 3 | "was ruined" |
| |
| 100.00% | Past progressive (was/were + -ing) overuse | Target: ≤2% past progressive verbs | | pastProgressiveCount | 1 | | totalVerbs | 192 | | matches | | |
| 0.00% | Em-dash & semicolon overuse | Target: ≤2% sentences with em-dashes/semicolons | | emDashCount | 9 | | semicolonCount | 1 | | flaggedSentences | 8 | | totalSentences | 102 | | ratio | 0.078 | | matches | | 0 | "The knock came in threes — three sharp raps, evenly spaced, the sound of someone who had never in his life had to wonder whether he'd be let in." | | 1 | "Instead she crossed the cramped front room, stepping over three towers of Eva's research — a stack of water-swollen paperbacks, a nest of photocopied scrolls, a legal pad covered in Eva's spidery Greek — and worked the deadbolts." | | 2 | "The accent came through more when he was tired; the vowels went soft and long." | | 3 | "Rory stood in the doorway with her hand on the frame, and the cold came off him in a sheet, and she thought about the last time she'd seen him — the back room of Silas' bar, three in the morning, the way he'd said *this is not something I can give you, chérie* with the perfect steady courtesy of a man declining a canapé." | | 4 | "She locked the deadbolts behind him — one, two, three, automatic — and turned to find him standing very still in the middle of the room, the ivory handle of his cane cupped in both hands, taking in the chaos of Eva's flat as though he were pricing it." | | 5 | "The wound was long and shallow and had already begun to knit at the edges in a way no human wound did — pink, glossy, faintly wrong." | | 6 | "Under her hands his skin was hot — always was, that was the demon in him, a body running two degrees past human." | | 7 | "Behind her, in the crowded dark of Eva's flat, Lucien Moreau laughed — a real one, low and startled, nothing rehearsed in it at all." |
| |
| 100.00% | Purple prose (modifier overload) | Target: <4% adverbs, <2% -ly adverbs, no adj stacking | | wordCount | 662 | | adjectiveStacks | 0 | | stackExamples | (empty) | | adverbCount | 14 | | adverbRatio | 0.021148036253776436 | | lyAdverbCount | 8 | | lyAdverbRatio | 0.012084592145015106 | |
| 100.00% | Repeated phrase echo | Target: ≤20% sentences with echoes (window: 2) | | totalSentences | 102 | | echoCount | 0 | | echoWords | (empty) | |
| 100.00% | Sentence length variance | Target: CV ≥0.4 for sentence word counts | | totalSentences | 102 | | mean | 14.63 | | std | 15.32 | | cv | 1.047 | | sampleLengths | | 0 | 29 | | 1 | 4 | | 2 | 19 | | 3 | 20 | | 4 | 4 | | 5 | 5 | | 6 | 39 | | 7 | 2 | | 8 | 10 | | 9 | 38 | | 10 | 1 | | 11 | 1 | | 12 | 1 | | 13 | 6 | | 14 | 4 | | 15 | 18 | | 16 | 6 | | 17 | 24 | | 18 | 29 | | 19 | 7 | | 20 | 2 | | 21 | 24 | | 22 | 10 | | 23 | 4 | | 24 | 15 | | 25 | 7 | | 26 | 13 | | 27 | 15 | | 28 | 5 | | 29 | 3 | | 30 | 15 | | 31 | 65 | | 32 | 35 | | 33 | 5 | | 34 | 8 | | 35 | 4 | | 36 | 11 | | 37 | 2 | | 38 | 35 | | 39 | 3 | | 40 | 17 | | 41 | 14 | | 42 | 3 | | 43 | 49 | | 44 | 5 | | 45 | 21 | | 46 | 1 | | 47 | 3 | | 48 | 3 | | 49 | 2 |
| |
| 71.90% | Sentence opener variety | Target: ≥60% unique sentence openers | | consecutiveRepeats | 5 | | diversityRatio | 0.46078431372549017 | | totalSentences | 102 | | uniqueOpeners | 47 | |
| 57.47% | Adverb-first sentence starts | Target: ≥3% sentences starting with an adverb | | adverbCount | 1 | | totalSentences | 58 | | matches | | 0 | "Instead she crossed the cramped" |
| | ratio | 0.017 | |
| 26.90% | Pronoun-first sentence starts | Target: ≤30% sentences starting with a pronoun | | pronounCount | 28 | | totalSentences | 58 | | matches | | 0 | "She'd known it for eleven" | | 1 | "she told him" | | 2 | "She should have left it." | | 3 | "She opened the door." | | 4 | "He never let it get" | | 5 | "It was slicked back on" | | 6 | "He treated the first words" | | 7 | "His voice was thinner than" | | 8 | "She'd walked up the stairs" | | 9 | "She didn't move" | | 10 | "He never pushed." | | 11 | "He'd never once pushed, and" | | 12 | "He came in." | | 13 | "She locked the deadbolts behind" | | 14 | "She got the tea towel" | | 15 | "She heard how it came" | | 16 | "He shrugged out of the" | | 17 | "He worked the buttons himself" | | 18 | "She'd learned that about him" | | 19 | "He tipped his head back" |
| | ratio | 0.483 | |
| 3.10% | Subject-first sentence starts | Target: ≤72% sentences starting with a subject | | subjectCount | 53 | | totalSentences | 58 | | matches | | 0 | "The knock came in threes" | | 1 | "Rory knew that knock." | | 2 | "She'd known it for eleven" | | 3 | "Ptolemy lifted his head from" | | 4 | "she told him" | | 5 | "She should have left it." | | 6 | "That was the sensible plan," | | 7 | "Each one a chance to" | | 8 | "She opened the door." | | 9 | "Lucien Moreau stood on the" | | 10 | "He never let it get" | | 11 | "It was slicked back on" | | 12 | "Tonight the water had darkened" | | 13 | "The second wrong thing was" | | 14 | "A dark seam along the" | | 15 | "The third wrong thing was" | | 16 | "Lucien always spoke first." | | 17 | "He treated the first words" | | 18 | "His voice was thinner than" | | 19 | "The accent came through more" |
| | ratio | 0.914 | |
| 0.00% | Subordinate conjunction sentence starts | Target: ≥2% sentences starting with a subordinating conjunction | | subConjCount | 0 | | totalSentences | 58 | | matches | (empty) | | ratio | 0 | |
| 0.00% | Technical jargon density | Target: ≤6% sentences with technical-jargon patterns | | analyzedSentences | 30 | | technicalSentenceCount | 6 | | matches | | 0 | "That was the sensible plan, the plan she'd rehearsed on nights when the pipes clanked and the smell of cumin came up through the floorboards from the curry hous…" | | 1 | "Lucien Moreau stood on the landing with rain in his platinum hair, which was the first wrong thing." | | 2 | "She locked the deadbolts behind him — one, two, three, automatic — and turned to find him standing very still in the middle of the room, the ivory handle of his…" | | 3 | "She got the tea towel and the bottle of vodka nobody drank and Eva's first-aid tin, which contained plasters, a suture kit, and for some reason a quantity of dr…" | | 4 | "He shrugged out of the coat, then the suit jacket, and the shirt beneath was ruined, split from collarbone to shoulder blade in a clean line that had gone dark …" | | 5 | "Her hands weren't steady, and she hated that, and she folded them in her lap where he could see them anyway, because he saw everything, that was his entire wret…" |
| |
| 100.00% | Useless dialogue additions | Target: ≤5% dialogue tags with trailing filler fragments | | totalTags | 23 | | uselessAdditionCount | 0 | | matches | (empty) | |
| 100.00% | Dialogue tag variety (said vs. fancy) | Target: ≤10% fancy dialogue tags | | totalTags | 15 | | fancyCount | 2 | | fancyTags | | 0 | "He tipped (tip)" | | 1 | "he agreed (agree)" |
| | dialogueSentences | 48 | | tagDensity | 0.313 | | leniency | 0.625 | | rawRatio | 0.133 | | effectiveRatio | 0.083 | |