| 100.00% | Adverbs in dialogue tags | Target: ≤10% dialogue tags with adverbs | | totalTags | 18 | | adverbTagCount | 0 | | adverbTags | (empty) | | dialogueSentences | 61 | | tagDensity | 0.295 | | leniency | 0.59 | | rawRatio | 0 | | effectiveRatio | 0 | |
| 96.69% | AI-ism adverb frequency | Target: <2% AI-ism adverbs (58 tracked) | | wordCount | 1510 | | totalAiIsmAdverbs | 1 | | found | | | highlights | | |
| 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) | |
| 73.51% | AI-ism word frequency | Target: <2% AI-ism words (290 tracked) | | wordCount | 1510 | | totalAiIsms | 8 | | found | | | highlights | | 0 | "stomach" | | 1 | "flickered" | | 2 | "structure" | | 3 | "weight" | | 4 | "silence" | | 5 | "pulse" |
| |
| 100.00% | Cliché density | Target: ≤1 cliche(s) per 800-word window | | totalCliches | 1 | | maxInWindow | 1 | | found | | 0 | | label | "stomach dropped/sank" | | count | 1 |
|
| | highlights | | |
| 100.00% | Emotion telling (show vs. tell) | Target: ≤3% sentences with emotion telling | | emotionTells | 0 | | narrationSentences | 83 | | matches | (empty) | |
| 100.00% | Filter word density | Target: ≤3% sentences with filter/hedge words | | filterCount | 1 | | hedgeCount | 1 | | narrationSentences | 83 | | filterMatches | | | hedgeMatches | | |
| 100.00% | Gibberish response detection | Target: ≤1% gibberish-like sentences (hard fail if a sentence exceeds 800 words) | | analyzedSentences | 125 | | gibberishSentences | 0 | | adjustedGibberishSentences | 0 | | longSentenceCount | 0 | | runOnParagraphCount | 0 | | giantParagraphCount | 0 | | wordSaladCount | 0 | | repetitionLoopCount | 0 | | controlTokenCount | 0 | | repeatedSegmentCount | 0 | | maxSentenceWordsSeen | 67 | | ratio | 0 | | matches | (empty) | |
| 100.00% | Markdown formatting overuse | Target: ≤5% words in markdown formatting | | markdownSpans | 0 | | markdownWords | 0 | | totalWords | 1538 | | ratio | 0 | | matches | (empty) | |
| 100.00% | Missing dialogue indicators (quotation marks) | Target: ≤10% speech attributions without quotation marks | | totalAttributions | 16 | | unquotedAttributions | 0 | | matches | (empty) | |
| 100.00% | Name drop frequency | Target: ≤1.0 per-name mentions per 100 words | | totalMentions | 28 | | wordCount | 904 | | uniqueNames | 15 | | maxNameDensity | 0.66 | | worstName | "Lucien" | | maxWindowNameDensity | 1.5 | | worstWindowName | "Eva" | | discoveredNames | | Moreau | 2 | | Lowered | 1 | | Eva | 3 | | Rory | 4 | | Golden | 1 | | Empress | 1 | | Lucien | 6 | | Cardiff | 1 | | Breathed | 1 | | Marseille | 1 | | Silence | 1 | | Brick | 1 | | Lane | 1 | | London | 1 | | Ptolemy | 3 |
| | persons | | 0 | "Moreau" | | 1 | "Eva" | | 2 | "Rory" | | 3 | "Lucien" | | 4 | "Ptolemy" |
| | places | | 0 | "Golden" | | 1 | "Cardiff" | | 2 | "Marseille" | | 3 | "Brick" | | 4 | "Lane" | | 5 | "London" |
| | globalScore | 1 | | windowScore | 1 | |
| 98.98% | Narrator intent-glossing | Target: ≤2% narration sentences with intent-glossing patterns | | analyzedSentences | 49 | | glossingSentenceCount | 1 | | matches | | 0 | "seemed warmer with him in it, how four months of anger turned out to be four months of waiting dressed up in a costume" |
| |
| 100.00% | "Not X but Y" pattern overuse | Target: ≤1 "not X but Y" per 1000 words | | totalMatches | 0 | | per1kWords | 0 | | wordCount | 1538 | | matches | (empty) | |
| 100.00% | Overuse of "that" (subordinate clause padding) | Target: ≤2% sentences with "that" clauses | | thatCount | 0 | | totalSentences | 125 | | matches | (empty) | |
| 100.00% | Paragraph length variance | Target: CV ≥0.5 for paragraph word counts | | totalParagraphs | 68 | | mean | 22.62 | | std | 24.46 | | cv | 1.081 | | sampleLengths | | 0 | 29 | | 1 | 19 | | 2 | 12 | | 3 | 57 | | 4 | 9 | | 5 | 25 | | 6 | 57 | | 7 | 1 | | 8 | 6 | | 9 | 8 | | 10 | 24 | | 11 | 44 | | 12 | 7 | | 13 | 22 | | 14 | 2 | | 15 | 7 | | 16 | 59 | | 17 | 5 | | 18 | 3 | | 19 | 14 | | 20 | 40 | | 21 | 4 | | 22 | 7 | | 23 | 48 | | 24 | 11 | | 25 | 3 | | 26 | 60 | | 27 | 22 | | 28 | 1 | | 29 | 19 | | 30 | 3 | | 31 | 3 | | 32 | 1 | | 33 | 2 | | 34 | 50 | | 35 | 4 | | 36 | 39 | | 37 | 85 | | 38 | 5 | | 39 | 13 | | 40 | 26 | | 41 | 18 | | 42 | 59 | | 43 | 1 | | 44 | 101 | | 45 | 26 | | 46 | 8 | | 47 | 3 | | 48 | 110 | | 49 | 5 |
| |
| 100.00% | Passive voice overuse | Target: ≤2% passive sentences | | passiveCount | 0 | | totalSentences | 83 | | matches | (empty) | |
| 100.00% | Past progressive (was/were + -ing) overuse | Target: ≤2% past progressive verbs | | pastProgressiveCount | 0 | | totalVerbs | 164 | | matches | (empty) | |
| 0.00% | Em-dash & semicolon overuse | Target: ≤2% sentences with em-dashes/semicolons | | emDashCount | 16 | | semicolonCount | 1 | | flaggedSentences | 14 | | totalSentences | 125 | | ratio | 0.112 | | matches | | 0 | "The knock came at half past eleven — three short raps, a pause, then two more." | | 1 | "Lucien Moreau stood with one gloved hand braced on the doorframe, and he looked — wrong." | | 2 | "Something flickered across his face — the ghost of the smile that had started all of it." | | 3 | "She'd rehearsed entire speeches for this moment, standing in the shower, standing over the wok at the Golden Empress between deliveries — speeches with excellent structure, barrister's-daughter speeches, the kind that left no opening." | | 4 | "Rory locked all three deadbolts behind him and turned to find Lucien surveying the flat the way he surveyed everything — exits first, then occupants, then opportunities." | | 5 | "\"Furiously.\" She fetched the first aid kit from under the sink — Eva kept one stocked with things no chemist sold, rowan oil and salt sachets alongside the plasters." | | 6 | "Half-demon hot — she'd forgotten that, or tried to." | | 7 | "\"As I recall, you were asleep, and there were three men from the Court of Thorns waiting outside the hotel with an interest in my whereabouts. Staying would have made you interesting to them.\" His free hand turned over on the table, palm up, an old gesture of his — I have nothing hidden." | | 8 | "His pulse hammered against her fingers — faster than his composed face admitted." | | 9 | "\"You're right. I told myself it was protection because protection sounds noble, and I have a professional weakness for sounding noble.\" He turned his hand in hers — slow, giving her every chance to pull away — and threaded his fingers through her fingers." | | 10 | "She laughed despite herself — a short, cracked sound — and hated how good it felt, how the flat suddenly seemed warmer with him in it, how four months of anger turned out to be four months of waiting dressed up in a costume." | | 11 | "\"Noted.\" The amber eye gleamed; the black one held her steady." | | 12 | "He made a low sound of surprise against her mouth — Lucien Moreau, surprised, a genuine first — then his good hand came up to cup her jaw and he kissed her back like a man who'd spent four months drowning." | | 13 | "She pulled back far enough to look at him properly — the bruise, the bandage, the crooked collar, the man underneath all the tailoring, sitting in a cramped flat on Brick Lane with nowhere else to go." |
| |
| 100.00% | Purple prose (modifier overload) | Target: <4% adverbs, <2% -ly adverbs, no adj stacking | | wordCount | 892 | | adjectiveStacks | 0 | | stackExamples | (empty) | | adverbCount | 20 | | adverbRatio | 0.02242152466367713 | | lyAdverbCount | 2 | | lyAdverbRatio | 0.002242152466367713 | |
| 100.00% | Repeated phrase echo | Target: ≤20% sentences with echoes (window: 2) | | totalSentences | 125 | | echoCount | 0 | | echoWords | (empty) | |
| 100.00% | Sentence length variance | Target: CV ≥0.4 for sentence word counts | | totalSentences | 125 | | mean | 12.3 | | std | 12.97 | | cv | 1.054 | | sampleLengths | | 0 | 16 | | 1 | 2 | | 2 | 11 | | 3 | 19 | | 4 | 8 | | 5 | 4 | | 6 | 21 | | 7 | 17 | | 8 | 15 | | 9 | 2 | | 10 | 2 | | 11 | 9 | | 12 | 5 | | 13 | 1 | | 14 | 3 | | 15 | 16 | | 16 | 16 | | 17 | 7 | | 18 | 4 | | 19 | 4 | | 20 | 26 | | 21 | 1 | | 22 | 6 | | 23 | 6 | | 24 | 2 | | 25 | 13 | | 26 | 3 | | 27 | 8 | | 28 | 33 | | 29 | 11 | | 30 | 7 | | 31 | 17 | | 32 | 5 | | 33 | 2 | | 34 | 7 | | 35 | 6 | | 36 | 5 | | 37 | 34 | | 38 | 14 | | 39 | 5 | | 40 | 3 | | 41 | 3 | | 42 | 11 | | 43 | 17 | | 44 | 9 | | 45 | 14 | | 46 | 4 | | 47 | 7 | | 48 | 27 | | 49 | 21 |
| |
| 69.33% | Sentence opener variety | Target: ≥60% unique sentence openers | | consecutiveRepeats | 5 | | diversityRatio | 0.44 | | totalSentences | 125 | | uniqueOpeners | 55 | |
| 0.00% | Adverb-first sentence starts | Target: ≥3% sentences starting with an adverb | | adverbCount | 0 | | totalSentences | 68 | | matches | (empty) | | ratio | 0 | |
| 2.35% | Pronoun-first sentence starts | Target: ≤30% sentences starting with a pronoun | | pronounCount | 37 | | totalSentences | 68 | | matches | | 0 | "she asked the cat" | | 1 | "He offered no opinion." | | 2 | "She crossed the flat on" | | 3 | "Her stomach dropped through the" | | 4 | "She undid the first deadbolt." | | 5 | "His collar sat crooked." | | 6 | "She caught herself" | | 7 | "He glanced past her shoulder," | | 8 | "She should have shut the" | | 9 | "She'd rehearsed shutting the door." | | 10 | "She'd rehearsed entire speeches for" | | 11 | "She stepped aside." | | 12 | "He moved past her with" | | 13 | "His gaze snagged on the" | | 14 | "She fetched the first aid" | | 15 | "She sat across from him" | | 16 | "His skin ran hot." | | 17 | "His eyes stayed on her" | | 18 | "She pressed gauze to the" | | 19 | "He didn't flinch, which irritated" |
| | ratio | 0.544 | |
| 26.18% | Subject-first sentence starts | Target: ≤72% sentences starting with a subject | | subjectCount | 59 | | totalSentences | 68 | | matches | | 0 | "The knock came at half" | | 1 | "Rory froze over the takeaway" | | 2 | "Ptolemy lifted his head from" | | 3 | "she asked the cat" | | 4 | "He offered no opinion." | | 5 | "She crossed the flat on" | | 6 | "The corridor bulb had burnt" | | 7 | "Platinum hair caught what little" | | 8 | "Her stomach dropped through the" | | 9 | "She undid the first deadbolt." | | 10 | "Lucien Moreau stood with one" | | 11 | "That was the thing that" | | 12 | "Lucien never looked wrong." | | 13 | "His collar sat crooked." | | 14 | "A bruise darkened the line" | | 15 | "She caught herself" | | 16 | "He glanced past her shoulder," | | 17 | "Something flickered across his face" | | 18 | "She should have shut the" | | 19 | "She'd rehearsed shutting the door." |
| | ratio | 0.868 | |
| 0.00% | Subordinate conjunction sentence starts | Target: ≥2% sentences starting with a subordinating conjunction | | subConjCount | 0 | | totalSentences | 68 | | matches | (empty) | | ratio | 0 | |
| 93.60% | Technical jargon density | Target: ≤6% sentences with technical-jargon patterns | | analyzedSentences | 29 | | technicalSentenceCount | 2 | | matches | | 0 | "A bruise darkened the line of his jaw, and his heterochromatic eyes, amber and black, tracked her face with a focus that made her feel x-rayed." | | 1 | "He made a low sound of surprise against her mouth — Lucien Moreau, surprised, a genuine first — then his good hand came up to cup her jaw and he kissed her back…" |
| |
| 100.00% | Useless dialogue additions | Target: ≤5% dialogue tags with trailing filler fragments | | totalTags | 18 | | uselessAdditionCount | 0 | | matches | (empty) | |
| 100.00% | Dialogue tag variety (said vs. fancy) | Target: ≤10% fancy dialogue tags | | totalTags | 6 | | fancyCount | 1 | | fancyTags | | | dialogueSentences | 61 | | tagDensity | 0.098 | | leniency | 0.197 | | rawRatio | 0.167 | | effectiveRatio | 0.033 | |