| 100.00% | Adverbs in dialogue tags | Target: ≤10% dialogue tags with adverbs | | totalTags | 17 | | adverbTagCount | 1 | | adverbTags | | 0 | "he said quietly [quietly]" |
| | dialogueSentences | 34 | | tagDensity | 0.5 | | leniency | 1 | | rawRatio | 0.059 | | effectiveRatio | 0.059 | |
| 83.63% | AI-ism adverb frequency | Target: <2% AI-ism adverbs (58 tracked) | | wordCount | 1222 | | totalAiIsmAdverbs | 4 | | found | | | highlights | | 0 | "very" | | 1 | "gently" | | 2 | "intensely" |
| |
| 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) | |
| 83.63% | AI-ism word frequency | Target: <2% AI-ism words (290 tracked) | | wordCount | 1222 | | totalAiIsms | 4 | | found | | | highlights | | 0 | "silence" | | 1 | "stomach" | | 2 | "could feel" | | 3 | "flickered" |
| |
| 66.67% | Cliché density | Target: ≤1 cliche(s) per 800-word window | | totalCliches | 2 | | maxInWindow | 2 | | found | | 0 | | label | "knuckles turned white" | | count | 1 |
| | 1 | | label | "stomach dropped/sank" | | count | 1 |
|
| | highlights | | 0 | "knuckles went white" | | 1 | "stomach dropped" |
| |
| 100.00% | Emotion telling (show vs. tell) | Target: ≤3% sentences with emotion telling | | emotionTells | 0 | | narrationSentences | 66 | | matches | (empty) | |
| 56.28% | Filter word density | Target: ≤3% sentences with filter/hedge words | | filterCount | 1 | | hedgeCount | 3 | | narrationSentences | 66 | | filterMatches | | | hedgeMatches | | 0 | "tended to" | | 1 | "started to" | | 2 | "seemed to" |
| |
| 100.00% | Gibberish response detection | Target: ≤1% gibberish-like sentences (hard fail if a sentence exceeds 800 words) | | analyzedSentences | 83 | | gibberishSentences | 0 | | adjustedGibberishSentences | 0 | | longSentenceCount | 0 | | runOnParagraphCount | 0 | | giantParagraphCount | 0 | | wordSaladCount | 0 | | repetitionLoopCount | 0 | | controlTokenCount | 0 | | repeatedSegmentCount | 0 | | maxSentenceWordsSeen | 59 | | ratio | 0 | | matches | (empty) | |
| 100.00% | Markdown formatting overuse | Target: ≤5% words in markdown formatting | | markdownSpans | 0 | | markdownWords | 0 | | totalWords | 1233 | | ratio | 0 | | matches | (empty) | |
| 100.00% | Missing dialogue indicators (quotation marks) | Target: ≤10% speech attributions without quotation marks | | totalAttributions | 21 | | unquotedAttributions | 0 | | matches | (empty) | |
| 100.00% | Name drop frequency | Target: ≤1.0 per-name mentions per 100 words | | totalMentions | 16 | | wordCount | 951 | | uniqueNames | 10 | | maxNameDensity | 0.32 | | worstName | "Lucien" | | maxWindowNameDensity | 1 | | worstWindowName | "Marseille" | | discoveredNames | | London | 1 | | Tuesday | 1 | | Moreau | 2 | | Marseille | 2 | | Lucien | 3 | | Eva | 2 | | Scrolls | 1 | | Ptolemy | 2 | | Brick | 1 | | Lane | 1 |
| | persons | | 0 | "Tuesday" | | 1 | "Moreau" | | 2 | "Lucien" | | 3 | "Eva" | | 4 | "Scrolls" | | 5 | "Ptolemy" |
| | places | | 0 | "London" | | 1 | "Marseille" | | 2 | "Brick" | | 3 | "Lane" |
| | globalScore | 1 | | windowScore | 1 | |
| 93.18% | Narrator intent-glossing | Target: ≤2% narration sentences with intent-glossing patterns | | analyzedSentences | 44 | | glossingSentenceCount | 1 | | matches | | 0 | "quite human, that her body remembered before her mind caught up" |
| |
| 100.00% | "Not X but Y" pattern overuse | Target: ≤1 "not X but Y" per 1000 words | | totalMatches | 0 | | per1kWords | 0 | | wordCount | 1233 | | matches | (empty) | |
| 46.18% | Overuse of "that" (subordinate clause padding) | Target: ≤2% sentences with "that" clauses | | thatCount | 3 | | totalSentences | 83 | | matches | | 0 | "hated that she'dhated that her" | | 1 | "see that the" |
| |
| 100.00% | Paragraph length variance | Target: CV ≥0.5 for paragraph word counts | | totalParagraphs | 44 | | mean | 28.02 | | std | 22.67 | | cv | 0.809 | | sampleLengths | | 0 | 56 | | 1 | 11 | | 2 | 60 | | 3 | 32 | | 4 | 9 | | 5 | 42 | | 6 | 16 | | 7 | 5 | | 8 | 33 | | 9 | 3 | | 10 | 43 | | 11 | 67 | | 12 | 4 | | 13 | 58 | | 14 | 30 | | 15 | 3 | | 16 | 76 | | 17 | 56 | | 18 | 2 | | 19 | 2 | | 20 | 50 | | 21 | 25 | | 22 | 11 | | 23 | 3 | | 24 | 2 | | 25 | 70 | | 26 | 8 | | 27 | 6 | | 28 | 37 | | 29 | 7 | | 30 | 55 | | 31 | 23 | | 32 | 32 | | 33 | 7 | | 34 | 3 | | 35 | 67 | | 36 | 9 | | 37 | 37 | | 38 | 7 | | 39 | 31 | | 40 | 52 | | 41 | 33 | | 42 | 15 | | 43 | 35 |
| |
| 99.95% | Passive voice overuse | Target: ≤2% passive sentences | | passiveCount | 1 | | totalSentences | 66 | | matches | | |
| 100.00% | Past progressive (was/were + -ing) overuse | Target: ≤2% past progressive verbs | | pastProgressiveCount | 1 | | totalVerbs | 171 | | matches | | |
| 0.00% | Em-dash & semicolon overuse | Target: ≤2% sentences with em-dashes/semicolons | | emDashCount | 10 | | semicolonCount | 0 | | flaggedSentences | 7 | | totalSentences | 83 | | ratio | 0.084 | | matches | | 0 | "\"Aurora.\" Lucien Moreau said her name the way he said everything — unhurried, deliberate, as if he had all the time in the world and intended to spend it watching her squirm." | | 1 | "\"No?\" The corner of his mouth moved — not a smile, just the suggestion of one, the ghost of every conversation they'd ever ended badly." | | 2 | "She had told herself, in the eleven weeks since Marseille — no, she would not think about Marseille, not the harbor lights, not his hand at the small of her back, not the thing he'd said and then unsaid before dawn — she had told herself that if she ever saw him again she would shut the door and feel nothing." | | 3 | "She stepped back, and Lucien came in out of the rain like he'd been invited, like he belonged, ducking his head under the low lintel and bringing the smell of him with him — cold air and cedar and something underneath it that wasn't quite human, that her body remembered before her mind caught up." | | 4 | "The black eye gave away nothing — it never had — but the amber one had always been the tell, and right now it was searching her face the way a man reads a letter he already knows by heart and hopes the words have changed." | | 5 | "She had not heard it spoken aloud in years — had spent years making certain no one alive could speak it — and now it was here, in Eva's flat, in his mouth, and the floor of her careful new life tilted under her feet." | | 6 | "The kettle, the counter, the three deadbolts, all of it built to keep the world out — and she'd opened the door anyway, and here he stood, dripping and dangerous and the only person who had ever made her feel both safe and entirely unmoored at once." |
| |
| 93.20% | Purple prose (modifier overload) | Target: <4% adverbs, <2% -ly adverbs, no adj stacking | | wordCount | 942 | | adjectiveStacks | 0 | | stackExamples | (empty) | | adverbCount | 45 | | adverbRatio | 0.04777070063694268 | | lyAdverbCount | 10 | | lyAdverbRatio | 0.010615711252653927 | |
| 100.00% | Repeated phrase echo | Target: ≤20% sentences with echoes (window: 2) | | totalSentences | 83 | | echoCount | 0 | | echoWords | (empty) | |
| 100.00% | Sentence length variance | Target: CV ≥0.4 for sentence word counts | | totalSentences | 83 | | mean | 14.86 | | std | 13.76 | | cv | 0.926 | | sampleLengths | | 0 | 7 | | 1 | 28 | | 2 | 21 | | 3 | 2 | | 4 | 9 | | 5 | 10 | | 6 | 4 | | 7 | 46 | | 8 | 32 | | 9 | 9 | | 10 | 6 | | 11 | 5 | | 12 | 31 | | 13 | 7 | | 14 | 9 | | 15 | 5 | | 16 | 11 | | 17 | 12 | | 18 | 10 | | 19 | 3 | | 20 | 25 | | 21 | 18 | | 22 | 6 | | 23 | 61 | | 24 | 4 | | 25 | 3 | | 26 | 55 | | 27 | 9 | | 28 | 5 | | 29 | 10 | | 30 | 6 | | 31 | 3 | | 32 | 25 | | 33 | 3 | | 34 | 36 | | 35 | 12 | | 36 | 14 | | 37 | 42 | | 38 | 2 | | 39 | 2 | | 40 | 4 | | 41 | 46 | | 42 | 25 | | 43 | 5 | | 44 | 6 | | 45 | 3 | | 46 | 2 | | 47 | 8 | | 48 | 32 | | 49 | 30 |
| |
| 65.86% | Sentence opener variety | Target: ≥60% unique sentence openers | | consecutiveRepeats | 7 | | diversityRatio | 0.4457831325301205 | | totalSentences | 83 | | uniqueOpeners | 37 | |
| 100.00% | Adverb-first sentence starts | Target: ≥3% sentences starting with an adverb | | adverbCount | 3 | | totalSentences | 60 | | matches | | 0 | "Of course she did." | | 1 | "Just a moment." | | 2 | "Even the rain seemed to" |
| | ratio | 0.05 | |
| 0.00% | Pronoun-first sentence starts | Target: ≤30% sentences starting with a pronoun | | pronounCount | 33 | | totalSentences | 60 | | matches | | 0 | "It always stuck in the" | | 1 | "She knew before she lifted" | | 2 | "she said, and started to" | | 3 | "He didn't move to stop" | | 4 | "He simply waited, the amber" | | 5 | "She held the door at" | | 6 | "She should have shut the" | | 7 | "She had told herself, in" | | 8 | "She undid the chain." | | 9 | "She stepped back, and Lucien" | | 10 | "he said, surveying the wreckage" | | 11 | "He set the cane against" | | 12 | "She saw the tiredness under" | | 13 | "Her stomach dropped, but she" | | 14 | "He held her gaze." | | 15 | "he said quietly" | | 16 | "Her arms tightened" | | 17 | "She could feel the old" | | 18 | "She watched them land." | | 19 | "She laughed, short and joyless," |
| | ratio | 0.55 | |
| 35.00% | Subject-first sentence starts | Target: ≤72% sentences starting with a subject | | subjectCount | 51 | | totalSentences | 60 | | matches | | 0 | "The third deadbolt was the" | | 1 | "It always stuck in the" | | 2 | "Aurora had her thumb pressed" | | 3 | "She knew before she lifted" | | 4 | "Lucien Moreau said her name" | | 5 | "she said, and started to" | | 6 | "He didn't move to stop" | | 7 | "That was the worst part." | | 8 | "He simply waited, the amber" | | 9 | "She held the door at" | | 10 | "Ptolemy threaded between her ankles," | | 11 | "A faint shrug rolled through" | | 12 | "The charcoal of his suit" | | 13 | "The corner of his mouth" | | 14 | "She should have shut the" | | 15 | "She had told herself, in" | | 16 | "She undid the chain." | | 17 | "The deadbolt scraped." | | 18 | "She stepped back, and Lucien" | | 19 | "he said, surveying the wreckage" |
| | ratio | 0.85 | |
| 0.00% | Subordinate conjunction sentence starts | Target: ≥2% sentences starting with a subordinating conjunction | | subConjCount | 0 | | totalSentences | 60 | | matches | (empty) | | ratio | 0 | |
| 6.80% | Technical jargon density | Target: ≤6% sentences with technical-jargon patterns | | analyzedSentences | 21 | | technicalSentenceCount | 4 | | matches | | 0 | "There was only one man in London who carried a blade dressed up as elegance, who stood in a stranger's stairwell at half past ten on a Tuesday looking as though…" | | 1 | "She stepped back, and Lucien came in out of the rain like he'd been invited, like he belonged, ducking his head under the low lintel and bringing the smell of h…" | | 2 | "She saw the tiredness under his eyes, the wet hair losing its careful slick, a man who'd come a long way in foul weather to stand in a cramped flat that smelled…" | | 3 | "The kettle, the counter, the three deadbolts, all of it built to keep the world out — and she'd opened the door anyway, and here he stood, dripping and dangerou…" |
| |
| 95.59% | Useless dialogue additions | Target: ≤5% dialogue tags with trailing filler fragments | | totalTags | 17 | | uselessAdditionCount | 1 | | matches | | 0 | "He said, and the gentleness was worse than anything" |
| |
| 100.00% | Dialogue tag variety (said vs. fancy) | Target: ≤10% fancy dialogue tags | | totalTags | 12 | | fancyCount | 1 | | fancyTags | | 0 | "she whispered (whisper)" |
| | dialogueSentences | 34 | | tagDensity | 0.353 | | leniency | 0.706 | | rawRatio | 0.083 | | effectiveRatio | 0.059 | |