| 100.00% | Adverbs in dialogue tags | Target: ≤10% dialogue tags with adverbs | | totalTags | 19 | | adverbTagCount | 2 | | adverbTags | | 0 | "She turned back [back]" | | 1 | "she said again [again]" |
| | dialogueSentences | 59 | | tagDensity | 0.322 | | leniency | 0.644 | | rawRatio | 0.105 | | effectiveRatio | 0.068 | |
| 96.91% | AI-ism adverb frequency | Target: <2% AI-ism adverbs (58 tracked) | | wordCount | 1618 | | 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) | |
| 72.19% | AI-ism word frequency | Target: <2% AI-ism words (290 tracked) | | wordCount | 1618 | | totalAiIsms | 9 | | found | | | highlights | | 0 | "weight" | | 1 | "warmth" | | 2 | "determined" | | 3 | "flicked" | | 4 | "silence" | | 5 | "stomach" |
| |
| 100.00% | Cliché density | Target: ≤1 cliche(s) per 800-word window | | totalCliches | 1 | | maxInWindow | 1 | | found | | 0 | | label | "hung in the air" | | count | 1 |
|
| | highlights | | |
| 100.00% | Emotion telling (show vs. tell) | Target: ≤3% sentences with emotion telling | | emotionTells | 0 | | narrationSentences | 94 | | matches | (empty) | |
| 100.00% | Filter word density | Target: ≤3% sentences with filter/hedge words | | filterCount | 0 | | hedgeCount | 0 | | narrationSentences | 94 | | filterMatches | (empty) | | hedgeMatches | (empty) | |
| 100.00% | Gibberish response detection | Target: ≤1% gibberish-like sentences (hard fail if a sentence exceeds 800 words) | | analyzedSentences | 134 | | gibberishSentences | 0 | | adjustedGibberishSentences | 0 | | longSentenceCount | 0 | | runOnParagraphCount | 0 | | giantParagraphCount | 0 | | wordSaladCount | 0 | | repetitionLoopCount | 0 | | controlTokenCount | 0 | | repeatedSegmentCount | 0 | | maxSentenceWordsSeen | 53 | | ratio | 0 | | matches | (empty) | |
| 100.00% | Markdown formatting overuse | Target: ≤5% words in markdown formatting | | markdownSpans | 0 | | markdownWords | 0 | | totalWords | 1594 | | ratio | 0 | | matches | (empty) | |
| 100.00% | Missing dialogue indicators (quotation marks) | Target: ≤10% speech attributions without quotation marks | | totalAttributions | 28 | | unquotedAttributions | 0 | | matches | (empty) | |
| 100.00% | Name drop frequency | Target: ≤1.0 per-name mentions per 100 words | | totalMentions | 31 | | wordCount | 1164 | | uniqueNames | 15 | | maxNameDensity | 0.52 | | worstName | "Lucien" | | maxWindowNameDensity | 1.5 | | worstWindowName | "Lucien" | | discoveredNames | | Bollywood | 1 | | Moreau | 1 | | French | 2 | | London | 1 | | Eva | 3 | | Marseille | 1 | | Lucien | 6 | | Aurora | 6 | | French-language | 1 | | Nokia | 1 | | Cardiff | 2 | | University | 1 | | Half | 1 | | Yu-Fei | 1 | | Ptolemy | 3 |
| | persons | | 0 | "Moreau" | | 1 | "Eva" | | 2 | "Lucien" | | 3 | "Aurora" | | 4 | "Ptolemy" |
| | places | | 0 | "French" | | 1 | "London" | | 2 | "Marseille" | | 3 | "French-language" | | 4 | "Cardiff" | | 5 | "Yu-Fei" |
| | globalScore | 1 | | windowScore | 1 | |
| 69.35% | Narrator intent-glossing | Target: ≤2% narration sentences with intent-glossing patterns | | analyzedSentences | 62 | | glossingSentenceCount | 2 | | matches | | 0 | "not quite honest and not quite dishonest" | | 1 | "not quite dishonest" | | 2 | "looked like indifference from across a ro" |
| |
| 100.00% | "Not X but Y" pattern overuse | Target: ≤1 "not X but Y" per 1000 words | | totalMatches | 0 | | per1kWords | 0 | | wordCount | 1594 | | matches | (empty) | |
| 100.00% | Overuse of "that" (subordinate clause padding) | Target: ≤2% sentences with "that" clauses | | thatCount | 0 | | totalSentences | 134 | | matches | (empty) | |
| 100.00% | Paragraph length variance | Target: CV ≥0.5 for paragraph word counts | | totalParagraphs | 71 | | mean | 22.45 | | std | 22.53 | | cv | 1.004 | | sampleLengths | | 0 | 50 | | 1 | 58 | | 2 | 8 | | 3 | 1 | | 4 | 33 | | 5 | 3 | | 6 | 9 | | 7 | 67 | | 8 | 85 | | 9 | 5 | | 10 | 37 | | 11 | 2 | | 12 | 4 | | 13 | 57 | | 14 | 6 | | 15 | 3 | | 16 | 2 | | 17 | 68 | | 18 | 4 | | 19 | 7 | | 20 | 51 | | 21 | 4 | | 22 | 9 | | 23 | 1 | | 24 | 3 | | 25 | 76 | | 26 | 8 | | 27 | 52 | | 28 | 39 | | 29 | 16 | | 30 | 3 | | 31 | 3 | | 32 | 3 | | 33 | 29 | | 34 | 60 | | 35 | 8 | | 36 | 5 | | 37 | 37 | | 38 | 14 | | 39 | 53 | | 40 | 15 | | 41 | 3 | | 42 | 42 | | 43 | 5 | | 44 | 3 | | 45 | 26 | | 46 | 40 | | 47 | 66 | | 48 | 11 | | 49 | 4 |
| |
| 90.33% | Passive voice overuse | Target: ≤2% passive sentences | | passiveCount | 4 | | totalSentences | 94 | | matches | | 0 | "been invited" | | 1 | "was pushed" | | 2 | "was buried" | | 3 | "was determined" |
| |
| 100.00% | Past progressive (was/were + -ing) overuse | Target: ≤2% past progressive verbs | | pastProgressiveCount | 1 | | totalVerbs | 207 | | matches | | |
| 0.00% | Em-dash & semicolon overuse | Target: ≤2% sentences with em-dashes/semicolons | | emDashCount | 23 | | semicolonCount | 2 | | flaggedSentences | 17 | | totalSentences | 134 | | ratio | 0.127 | | matches | | 0 | "Aurora heard it from the kitchen—a particular pitch of metal protesting against a particular weight of body—and her hand stilled around the kettle handle." | | 1 | "The flat was cramped enough that no one could get past the narrow corridor without her knowing, and the deadbolts meant whoever stood outside had been invited in—or had the sense to wait rather than force entry." | | 2 | "The curry house below was mid-service; the bass thrum of someone's Bollywood playlist bled through the floorboards." | | 3 | "He hadn't said her name like that since—she stopped the thought where it started." | | 4 | "The overhead light buzzed, one filament flickering, and the whole room smelled of the tea she'd already made for herself—builder's brew, milky, nothing like the jasmine she'd learned to prefer in Marseille." | | 5 | "He'd lost weight since she'd last seen him, or redistributed it—those tailored charcoal suits had given way to something older, a jacket that hung loose across the shoulders, the collar of a dark shirt open at the throat." | | 6 | "\"Yours.\" He lifted one hand from the cane and produced a phone from his jacket pocket—old-model Nokia, the kind with no traceable app history—and set it on the edge of the counter." | | 7 | "Aurora looked at him then—really looked." | | 8 | "\"—half past ten at night with a bruise on your face and a phone that isn't yours, and you want me to—what? Take the phone, say thank you, let you leave?\"" | | 9 | "The cane tapped once more against the frame—a habit, she remembered, not a necessity." | | 10 | "He moved the way he always had—each step deliberate, as though the floor were a negotiation he was determined to win—and sat across from her." | | 11 | "\"His name is Soren Vael. I don't know his human name, and I suspect he doesn't have one.\" Lucien spoke with the flat precision of someone delivering a report, but his left hand—the one not gripping the cane—curled against the wood of the chair's armrest." | | 12 | "Aurora studied his face—the bruise, the sharp cheekbones, the scar she knew existed along his right ribcage because she'd stitched it closed once with a needle borrowed from Yu-Fei's kitchen drawer while he'd bitten down on a leather strap and stared at the ceiling of her old flat and said nothing." | | 13 | "She stood, moved past his chair close enough to catch the ghost of whatever cologne he wore now—cedar and something sharper, smoke or iron—and placed the kettle on the heat again." | | 14 | "He was watching her with that expression she'd catalogued years ago—the one that looked like indifference from across a room but revealed everything up close." | | 15 | "His black eye was impossible to read; the amber one betrayed him." | | 16 | "She poured the kettle over a fresh cup of tea—two bags, the way she always made it when she needed something to hold—and set it in front of him." |
| |
| 94.00% | Purple prose (modifier overload) | Target: <4% adverbs, <2% -ly adverbs, no adj stacking | | wordCount | 851 | | adjectiveStacks | 1 | | stackExamples | | 0 | "plastic cat-shaped thing" |
| | adverbCount | 24 | | adverbRatio | 0.0282021151586369 | | lyAdverbCount | 3 | | lyAdverbRatio | 0.0035252643948296123 | |
| 100.00% | Repeated phrase echo | Target: ≤20% sentences with echoes (window: 2) | | totalSentences | 134 | | echoCount | 0 | | echoWords | (empty) | |
| 100.00% | Sentence length variance | Target: CV ≥0.4 for sentence word counts | | totalSentences | 134 | | mean | 11.9 | | std | 11.33 | | cv | 0.952 | | sampleLengths | | 0 | 9 | | 1 | 24 | | 2 | 17 | | 3 | 4 | | 4 | 37 | | 5 | 17 | | 6 | 5 | | 7 | 3 | | 8 | 1 | | 9 | 19 | | 10 | 14 | | 11 | 3 | | 12 | 2 | | 13 | 3 | | 14 | 4 | | 15 | 29 | | 16 | 32 | | 17 | 6 | | 18 | 6 | | 19 | 38 | | 20 | 28 | | 21 | 13 | | 22 | 5 | | 23 | 12 | | 24 | 14 | | 25 | 11 | | 26 | 2 | | 27 | 4 | | 28 | 10 | | 29 | 7 | | 30 | 32 | | 31 | 8 | | 32 | 6 | | 33 | 3 | | 34 | 2 | | 35 | 32 | | 36 | 2 | | 37 | 19 | | 38 | 15 | | 39 | 4 | | 40 | 7 | | 41 | 6 | | 42 | 22 | | 43 | 11 | | 44 | 6 | | 45 | 6 | | 46 | 4 | | 47 | 7 | | 48 | 2 | | 49 | 1 |
| |
| 40.30% | Sentence opener variety | Target: ≥60% unique sentence openers | | consecutiveRepeats | 13 | | diversityRatio | 0.29850746268656714 | | totalSentences | 134 | | uniqueOpeners | 40 | |
| 41.67% | Adverb-first sentence starts | Target: ≥3% sentences starting with an adverb | | adverbCount | 1 | | totalSentences | 80 | | matches | | | ratio | 0.013 | |
| 15.00% | Pronoun-first sentence starts | Target: ≤30% sentences starting with a pronoun | | pronounCount | 41 | | totalSentences | 80 | | matches | | 0 | "She didn't call out." | | 1 | "He hadn't said her name" | | 2 | "She pulled the kettle off" | | 3 | "She'd never told him she'd" | | 4 | "He'd lost weight since she'd" | | 5 | "His platinum blond hair was" | | 6 | "She turned back to the" | | 7 | "She busied her hands with" | | 8 | "His gaze shifted between them," | | 9 | "He lifted one hand from" | | 10 | "She recognized the cracked screen" | | 11 | "He met her gaze without" | | 12 | "He shifted his weight against" | | 13 | "His jaw tightened." | | 14 | "She glanced at the clock" | | 15 | "She pulled out one of" | | 16 | "She pushed a stack of" | | 17 | "He stayed where he was." | | 18 | "He moved the way he" | | 19 | "He set the cane across" |
| | ratio | 0.513 | |
| 0.00% | Subject-first sentence starts | Target: ≤72% sentences starting with a subject | | subjectCount | 76 | | totalSentences | 80 | | matches | | 0 | "The door groaned before the" | | 1 | "Aurora heard it from the" | | 2 | "Ptolemy leapt off the counter" | | 3 | "She didn't call out." | | 4 | "The flat was cramped enough" | | 5 | "The curry house below was" | | 6 | "The first deadbolt slid back." | | 7 | "Lucien Moreau's voice carried that" | | 8 | "He hadn't said her name" | | 9 | "A soft exhale." | | 10 | "She pulled the kettle off" | | 11 | "The overhead light buzzed, one" | | 12 | "She'd never told him she'd" | | 13 | "Lucien appeared in the kitchen" | | 14 | "He'd lost weight since she'd" | | 15 | "His platinum blond hair was" | | 16 | "The ivory-handled cane tapped once" | | 17 | "She turned back to the" | | 18 | "She busied her hands with" | | 19 | "Ptolemy had not moved from" |
| | ratio | 0.95 | |
| 0.00% | Subordinate conjunction sentence starts | Target: ≥2% sentences starting with a subordinating conjunction | | subConjCount | 0 | | totalSentences | 80 | | matches | (empty) | | ratio | 0 | |
| 100.00% | Technical jargon density | Target: ≤6% sentences with technical-jargon patterns | | analyzedSentences | 36 | | technicalSentenceCount | 2 | | matches | | 0 | "He'd lost weight since she'd last seen him, or redistributed it—those tailored charcoal suits had given way to something older, a jacket that hung loose across …" | | 1 | "He moved the way he always had—each step deliberate, as though the floor were a negotiation he was determined to win—and sat across from her." |
| |
| 100.00% | Useless dialogue additions | Target: ≤5% dialogue tags with trailing filler fragments | | totalTags | 19 | | uselessAdditionCount | 0 | | matches | (empty) | |
| 100.00% | Dialogue tag variety (said vs. fancy) | Target: ≤10% fancy dialogue tags | | totalTags | 12 | | fancyCount | 1 | | fancyTags | | | dialogueSentences | 59 | | tagDensity | 0.203 | | leniency | 0.407 | | rawRatio | 0.083 | | effectiveRatio | 0.034 | |