| 100.00% | Adverbs in dialogue tags | Target: ≤10% dialogue tags with adverbs | | totalTags | 19 | | adverbTagCount | 0 | | adverbTags | (empty) | | dialogueSentences | 48 | | tagDensity | 0.396 | | leniency | 0.792 | | rawRatio | 0 | | effectiveRatio | 0 | |
| 68.59% | AI-ism adverb frequency | Target: <2% AI-ism adverbs (58 tracked) | | wordCount | 1910 | | totalAiIsmAdverbs | 12 | | found | | 0 | | | 1 | | | 2 | | | 3 | | | 4 | | adverb | "deliberately" | | count | 1 |
| | 5 | | | 6 | | | 7 | | | 8 | |
| | highlights | | 0 | "precisely" | | 1 | "very" | | 2 | "perfectly" | | 3 | "lightly" | | 4 | "deliberately" | | 5 | "suddenly" | | 6 | "slowly" | | 7 | "completely" | | 8 | "softly" |
| |
| 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) | |
| 89.53% | AI-ism word frequency | Target: <2% AI-ism words (290 tracked) | | wordCount | 1910 | | totalAiIsms | 4 | | found | | | highlights | | 0 | "stomach" | | 1 | "gleaming" | | 2 | "silence" | | 3 | "pulse" |
| |
| 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 | 81 | | matches | (empty) | |
| 100.00% | Filter word density | Target: ≤3% sentences with filter/hedge words | | filterCount | 0 | | hedgeCount | 0 | | narrationSentences | 81 | | filterMatches | (empty) | | hedgeMatches | (empty) | |
| 100.00% | Gibberish response detection | Target: ≤1% gibberish-like sentences (hard fail if a sentence exceeds 800 words) | | analyzedSentences | 110 | | gibberishSentences | 0 | | adjustedGibberishSentences | 0 | | longSentenceCount | 0 | | runOnParagraphCount | 0 | | giantParagraphCount | 0 | | wordSaladCount | 0 | | repetitionLoopCount | 0 | | controlTokenCount | 0 | | repeatedSegmentCount | 0 | | maxSentenceWordsSeen | 90 | | ratio | 0 | | matches | (empty) | |
| 100.00% | Markdown formatting overuse | Target: ≤5% words in markdown formatting | | markdownSpans | 0 | | markdownWords | 0 | | totalWords | 1934 | | ratio | 0 | | matches | (empty) | |
| 100.00% | Missing dialogue indicators (quotation marks) | Target: ≤10% speech attributions without quotation marks | | totalAttributions | 26 | | unquotedAttributions | 0 | | matches | (empty) | |
| 100.00% | Name drop frequency | Target: ≤1.0 per-name mentions per 100 words | | totalMentions | 40 | | wordCount | 1317 | | uniqueNames | 16 | | maxNameDensity | 0.53 | | worstName | "Eva" | | maxWindowNameDensity | 1.5 | | worstWindowName | "Eva" | | discoveredNames | | Eva | 7 | | Golden | 2 | | Empress | 2 | | Yu-Fei | 1 | | Moreau | 1 | | Lucien | 7 | | Bermondsey | 1 | | London | 1 | | Books | 1 | | Deptford | 1 | | Bengali | 1 | | Ptolemy | 4 | | Brick | 1 | | Lane | 1 | | Rory | 5 | | One | 4 |
| | persons | | 0 | "Eva" | | 1 | "Yu-Fei" | | 2 | "Moreau" | | 3 | "Lucien" | | 4 | "Books" | | 5 | "Ptolemy" | | 6 | "Rory" | | 7 | "One" |
| | places | | 0 | "Golden" | | 1 | "Bermondsey" | | 2 | "London" | | 3 | "Deptford" | | 4 | "Bengali" | | 5 | "Brick" | | 6 | "Lane" |
| | globalScore | 1 | | windowScore | 1 | |
| 65.25% | Narrator intent-glossing | Target: ≤2% narration sentences with intent-glossing patterns | | analyzedSentences | 59 | | glossingSentenceCount | 2 | | matches | | 0 | "smelled like lamb rogan josh and her feet" | | 1 | "tasted like the coffee he'd been drinking" |
| |
| 100.00% | "Not X but Y" pattern overuse | Target: ≤1 "not X but Y" per 1000 words | | totalMatches | 0 | | per1kWords | 0 | | wordCount | 1934 | | matches | (empty) | |
| 100.00% | Overuse of "that" (subordinate clause padding) | Target: ≤2% sentences with "that" clauses | | thatCount | 0 | | totalSentences | 110 | | matches | (empty) | |
| 100.00% | Paragraph length variance | Target: CV ≥0.5 for paragraph word counts | | totalParagraphs | 56 | | mean | 34.54 | | std | 34.52 | | cv | 1 | | sampleLengths | | 0 | 90 | | 1 | 3 | | 2 | 4 | | 3 | 64 | | 4 | 47 | | 5 | 37 | | 6 | 9 | | 7 | 2 | | 8 | 67 | | 9 | 7 | | 10 | 43 | | 11 | 130 | | 12 | 44 | | 13 | 14 | | 14 | 5 | | 15 | 17 | | 16 | 39 | | 17 | 4 | | 18 | 34 | | 19 | 4 | | 20 | 112 | | 21 | 58 | | 22 | 10 | | 23 | 3 | | 24 | 21 | | 25 | 23 | | 26 | 5 | | 27 | 14 | | 28 | 68 | | 29 | 81 | | 30 | 26 | | 31 | 9 | | 32 | 7 | | 33 | 35 | | 34 | 2 | | 35 | 80 | | 36 | 5 | | 37 | 15 | | 38 | 12 | | 39 | 81 | | 40 | 153 | | 41 | 50 | | 42 | 6 | | 43 | 30 | | 44 | 9 | | 45 | 28 | | 46 | 11 | | 47 | 99 | | 48 | 16 | | 49 | 39 |
| |
| 100.00% | Passive voice overuse | Target: ≤2% passive sentences | | passiveCount | 0 | | totalSentences | 81 | | matches | (empty) | |
| 100.00% | Past progressive (was/were + -ing) overuse | Target: ≤2% past progressive verbs | | pastProgressiveCount | 2 | | totalVerbs | 230 | | matches | | 0 | "was looking" | | 1 | "was standing" |
| |
| 0.00% | Em-dash & semicolon overuse | Target: ≤2% sentences with em-dashes/semicolons | | emDashCount | 24 | | semicolonCount | 1 | | flaggedSentences | 15 | | totalSentences | 110 | | ratio | 0.136 | | matches | | 0 | "Rory heard them go one after another — chunk, chunk, chunk — like a countdown to something she was going to regret." | | 1 | "Lucien Moreau filled the doorframe the way he filled every room he entered — precisely, expensively, and with an air of having rearranged the furniture in his head and found it wanting." | | 2 | "She'd forgotten — no, she hadn't, she'd never once forgotten — his eyes." | | 3 | "She had been doing well — nine months of a clean cold river of not-thinking-about-him, and she'd built the whole thing out of late shifts and overtime and Eva's couch and the particular discipline of a woman who'd already fled one man and wasn't going to be rattled by another." | | 4 | "He laughed — a real one, surprised out of him, and it broke over her like a wave over a wall she'd thought was taller." | | 5 | "\"I have you. Had. Tenses are going to be the death of me tonight, aren't they.\" He moved past her — deliberately close, close enough that she caught the cedar-and-something-darker smell of him, close enough that the fine wool of his jacket nearly touched her bare hand — and settled himself on the arm of Eva's reading chair, the cane planted between his shoes." | | 6 | "In the flat below, the curry house kitchen roared and clanged; a bottle dropped somewhere and someone shouted in Bengali and laughed." | | 7 | "Lucien turned the cane slowly in his grip, and she watched his fingers — long, manicured, the knuckles scarred in three places — and wanted, with a ferocity that frightened her, to put her hand over them." | | 8 | "Lucien's hand tightened on the cane, just once, and she watched something move through him — the amber eye going hot, the black one swallowing the room." | | 9 | "He crossed the small room in three strides — past the stacks of books, past a tower of scrolls tied with string, past the cat — and he stopped close enough that she had to tilt her chin to hold his eyes." | | 10 | "Not like this — never with Eva's curry-scented walls and Ptolemy yowling softly for a dinner that was late and Lucien's collar open and both of them exhausted and ordinary — but she had imagined the shape of it in the dark, and the shape fit." | | 11 | "Rory reached out and took hold of his lapel — just two fingers, the finest charcoal wool soft as breath under her thumb — and tugged, once, lightly." | | 12 | "He made a sound she'd never heard him make — something punched out of him, almost a laugh, almost not — and then his mouth was on hers and the kiss was not smooth or brokered or negotiated." | | 13 | "When they broke apart Lucien kept his forehead against hers, breathing hard, and she felt his hand find her wrist — find the little crescent scar — and rest there, his pulse hammering against the underside of her arm." | | 14 | "He laughed again — the real one, the unpriced one — and pulled her in, and outside the window Brick Lane ran on in its smell of chilli and diesel and rain, and the three deadbolts stood open behind them, and neither of them moved to close the door." |
| |
| 95.41% | Purple prose (modifier overload) | Target: <4% adverbs, <2% -ly adverbs, no adj stacking | | wordCount | 1304 | | adjectiveStacks | 0 | | stackExamples | (empty) | | adverbCount | 59 | | adverbRatio | 0.04524539877300614 | | lyAdverbCount | 18 | | lyAdverbRatio | 0.013803680981595092 | |
| 100.00% | Repeated phrase echo | Target: ≤20% sentences with echoes (window: 2) | | totalSentences | 110 | | echoCount | 0 | | echoWords | (empty) | |
| 100.00% | Sentence length variance | Target: CV ≥0.4 for sentence word counts | | totalSentences | 110 | | mean | 17.58 | | std | 16.86 | | cv | 0.959 | | sampleLengths | | 0 | 10 | | 1 | 22 | | 2 | 58 | | 3 | 3 | | 4 | 4 | | 5 | 32 | | 6 | 13 | | 7 | 8 | | 8 | 11 | | 9 | 3 | | 10 | 13 | | 11 | 10 | | 12 | 21 | | 13 | 4 | | 14 | 33 | | 15 | 9 | | 16 | 2 | | 17 | 33 | | 18 | 34 | | 19 | 7 | | 20 | 25 | | 21 | 18 | | 22 | 4 | | 23 | 50 | | 24 | 76 | | 25 | 10 | | 26 | 34 | | 27 | 7 | | 28 | 7 | | 29 | 5 | | 30 | 4 | | 31 | 13 | | 32 | 25 | | 33 | 14 | | 34 | 4 | | 35 | 8 | | 36 | 17 | | 37 | 9 | | 38 | 4 | | 39 | 64 | | 40 | 6 | | 41 | 17 | | 42 | 25 | | 43 | 6 | | 44 | 24 | | 45 | 17 | | 46 | 11 | | 47 | 4 | | 48 | 6 | | 49 | 3 |
| |
| 49.09% | Sentence opener variety | Target: ≥60% unique sentence openers | | consecutiveRepeats | 11 | | diversityRatio | 0.35454545454545455 | | totalSentences | 110 | | uniqueOpeners | 39 | |
| 46.30% | Adverb-first sentence starts | Target: ≥3% sentences starting with an adverb | | adverbCount | 1 | | totalSentences | 72 | | matches | | 0 | "Somewhere below, the kitchen roared" |
| | ratio | 0.014 | |
| 14.44% | Pronoun-first sentence starts | Target: ≤30% sentences starting with a pronoun | | pronounCount | 37 | | totalSentences | 72 | | matches | | 0 | "She stood in the narrow" | | 1 | "It was not Eva." | | 2 | "His platinum hair slicked back" | | 3 | "She'd forgotten — no, she" | | 4 | "He looked at her." | | 5 | "She watched him do the" | | 6 | "he said, in the voice" | | 7 | "He leaned one shoulder against" | | 8 | "He tilted his head" | | 9 | "She should have left." | | 10 | "She had been doing well" | | 11 | "she said to the cat" | | 12 | "She didn't look up." | | 13 | "He laughed — a real" | | 14 | "She straightened and finally looked" | | 15 | "He said it lightly" | | 16 | "He said it like a" | | 17 | "He moved past her —" | | 18 | "It felt foolish, suddenly, to" | | 19 | "She'd come here to ask" |
| | ratio | 0.514 | |
| 36.39% | Subject-first sentence starts | Target: ≤72% sentences starting with a subject | | subjectCount | 61 | | totalSentences | 72 | | matches | | 0 | "The three deadbolts took Eva" | | 1 | "Rory heard them go one" | | 2 | "She stood in the narrow" | | 3 | "The door opened." | | 4 | "It was not Eva." | | 5 | "Lucien Moreau filled the doorframe" | | 6 | "Charcoal suit, no tie, the" | | 7 | "The ivory-handled cane hooked over" | | 8 | "His platinum hair slicked back" | | 9 | "She'd forgotten — no, she" | | 10 | "He looked at her." | | 11 | "She watched him do the" | | 12 | "he said, in the voice" | | 13 | "He leaned one shoulder against" | | 14 | "He tilted his head" | | 15 | "She should have left." | | 16 | "She had been doing well" | | 17 | "Ptolemy met her at the" | | 18 | "The tabby wound between her" | | 19 | "she said to the cat" |
| | ratio | 0.847 | |
| 0.00% | Subordinate conjunction sentence starts | Target: ≥2% sentences starting with a subordinating conjunction | | subConjCount | 0 | | totalSentences | 72 | | matches | (empty) | | ratio | 0 | |
| 27.03% | Technical jargon density | Target: ≤6% sentences with technical-jargon patterns | | analyzedSentences | 37 | | technicalSentenceCount | 6 | | matches | | 0 | "She had been doing well — nine months of a clean cold river of not-thinking-about-him, and she'd built the whole thing out of late shifts and overtime and Eva's…" | | 1 | "But the hallway smelled like lamb rogan josh and her feet hurt and Lucien was looking at her with that single amber eye gone soft, and she walked past him into …" | | 2 | "Eva's flat was a single bedroom and a siege of research, and Lucien sat in the middle of it like a man who had won." | | 3 | "Not like this — never with Eva's curry-scented walls and Ptolemy yowling softly for a dinner that was late and Lucien's collar open and both of them exhausted a…" | | 4 | "His hand came up to the side of her face, thumb along the hinge of her jaw, and he held her as though she were information worth protecting." | | 5 | "When they broke apart Lucien kept his forehead against hers, breathing hard, and she felt his hand find her wrist — find the little crescent scar — and rest the…" |
| |
| 98.68% | Useless dialogue additions | Target: ≤5% dialogue tags with trailing filler fragments | | totalTags | 19 | | uselessAdditionCount | 1 | | matches | | 0 | "He leaned, and the smile was a whole sentence in a language she didn't want to be fluent in" |
| |
| 100.00% | Dialogue tag variety (said vs. fancy) | Target: ≤10% fancy dialogue tags | | totalTags | 13 | | fancyCount | 2 | | fancyTags | | 0 | "she murmured (murmur)" | | 1 | "he agreed (agree)" |
| | dialogueSentences | 48 | | tagDensity | 0.271 | | leniency | 0.542 | | rawRatio | 0.154 | | effectiveRatio | 0.083 | |