| 100.00% | Adverbs in dialogue tags | Target: ≤10% dialogue tags with adverbs | | totalTags | 10 | | adverbTagCount | 0 | | adverbTags | (empty) | | dialogueSentences | 39 | | tagDensity | 0.256 | | leniency | 0.513 | | rawRatio | 0 | | effectiveRatio | 0 | |
| 100.00% | AI-ism adverb frequency | Target: <2% AI-ism adverbs (58 tracked) | | wordCount | 1341 | | totalAiIsmAdverbs | 0 | | found | (empty) | | highlights | (empty) | |
| 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) | |
| 70.17% | AI-ism word frequency | Target: <2% AI-ism words (290 tracked) | | wordCount | 1341 | | totalAiIsms | 8 | | found | | | highlights | | 0 | "navigate" | | 1 | "unsettled" | | 2 | "weight" | | 3 | "silence" | | 4 | "tension" | | 5 | "traced" | | 6 | "navigated" |
| |
| 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 | 67 | | matches | (empty) | |
| 100.00% | Filter word density | Target: ≤3% sentences with filter/hedge words | | filterCount | 1 | | hedgeCount | 1 | | narrationSentences | 67 | | filterMatches | | | hedgeMatches | | |
| 100.00% | Gibberish response detection | Target: ≤1% gibberish-like sentences (hard fail if a sentence exceeds 800 words) | | analyzedSentences | 97 | | gibberishSentences | 0 | | adjustedGibberishSentences | 0 | | longSentenceCount | 0 | | runOnParagraphCount | 0 | | giantParagraphCount | 0 | | wordSaladCount | 0 | | repetitionLoopCount | 0 | | controlTokenCount | 0 | | repeatedSegmentCount | 0 | | maxSentenceWordsSeen | 62 | | ratio | 0 | | matches | (empty) | |
| 100.00% | Markdown formatting overuse | Target: ≤5% words in markdown formatting | | markdownSpans | 1 | | markdownWords | 1 | | totalWords | 1354 | | ratio | 0.001 | | matches | | |
| 100.00% | Missing dialogue indicators (quotation marks) | Target: ≤10% speech attributions without quotation marks | | totalAttributions | 10 | | unquotedAttributions | 0 | | matches | (empty) | |
| 100.00% | Name drop frequency | Target: ≤1.0 per-name mentions per 100 words | | totalMentions | 20 | | wordCount | 938 | | uniqueNames | 10 | | maxNameDensity | 0.53 | | worstName | "Rory" | | maxWindowNameDensity | 1.5 | | worstWindowName | "Rory" | | discoveredNames | | Rory | 5 | | Cardiff | 1 | | London | 2 | | Eva | 2 | | Silas | 2 | | Marseille | 1 | | Moreau | 1 | | Lucien | 4 | | Marylebone | 1 | | Aurora | 1 |
| | persons | | 0 | "Rory" | | 1 | "Eva" | | 2 | "Silas" | | 3 | "Moreau" | | 4 | "Lucien" |
| | places | | 0 | "Cardiff" | | 1 | "London" | | 2 | "Marseille" | | 3 | "Marylebone" | | 4 | "Aurora" |
| | globalScore | 1 | | windowScore | 1 | |
| 43.62% | Narrator intent-glossing | Target: ≤2% narration sentences with intent-glossing patterns | | analyzedSentences | 47 | | glossingSentenceCount | 2 | | matches | | 0 | "sounded like complaint, and Rory dropped t" | | 1 | "not quite a smile, more like the memory of one, which was worse" |
| |
| 100.00% | "Not X but Y" pattern overuse | Target: ≤1 "not X but Y" per 1000 words | | totalMatches | 0 | | per1kWords | 0 | | wordCount | 1354 | | matches | (empty) | |
| 100.00% | Overuse of "that" (subordinate clause padding) | Target: ≤2% sentences with "that" clauses | | thatCount | 1 | | totalSentences | 97 | | matches | | |
| 100.00% | Paragraph length variance | Target: CV ≥0.5 for paragraph word counts | | totalParagraphs | 50 | | mean | 27.08 | | std | 25.21 | | cv | 0.931 | | sampleLengths | | 0 | 69 | | 1 | 13 | | 2 | 71 | | 3 | 34 | | 4 | 13 | | 5 | 32 | | 6 | 25 | | 7 | 4 | | 8 | 72 | | 9 | 17 | | 10 | 4 | | 11 | 27 | | 12 | 1 | | 13 | 39 | | 14 | 5 | | 15 | 60 | | 16 | 51 | | 17 | 4 | | 18 | 41 | | 19 | 13 | | 20 | 5 | | 21 | 72 | | 22 | 6 | | 23 | 2 | | 24 | 12 | | 25 | 13 | | 26 | 15 | | 27 | 44 | | 28 | 64 | | 29 | 3 | | 30 | 9 | | 31 | 58 | | 32 | 3 | | 33 | 5 | | 34 | 1 | | 35 | 86 | | 36 | 11 | | 37 | 38 | | 38 | 4 | | 39 | 19 | | 40 | 54 | | 41 | 32 | | 42 | 10 | | 43 | 38 | | 44 | 45 | | 45 | 3 | | 46 | 85 | | 47 | 3 | | 48 | 3 | | 49 | 16 |
| |
| 100.00% | Passive voice overuse | Target: ≤2% passive sentences | | passiveCount | 1 | | totalSentences | 67 | | matches | | |
| 100.00% | Past progressive (was/were + -ing) overuse | Target: ≤2% past progressive verbs | | pastProgressiveCount | 1 | | totalVerbs | 155 | | matches | | |
| 0.00% | Em-dash & semicolon overuse | Target: ≤2% sentences with em-dashes/semicolons | | emDashCount | 13 | | semicolonCount | 1 | | flaggedSentences | 11 | | totalSentences | 97 | | ratio | 0.113 | | matches | | 0 | "The flat smelled of cardamom rising through the floorboards and old paper — Eva's research notes had colonized every surface, spilling from the desk to the windowsill to the narrow strip of counter where the kettle lived." | | 1 | "She knew the time because she glanced at her phone — face-down on the stack of encyclopedias — when the first knuckle hit wood." | | 2 | "His platinum hair was slicked back from a forehead unmarked by worry, and his mismatched eyes — amber and black, the pair that had unsettled her the first time she'd looked into them and fascinated her the tenth — held hers without blinking." | | 3 | "The hallway behind him was dark; someone had killed the bulb two weeks ago and nobody had bothered." | | 4 | "His mouth shifted — not quite a smile, more like the memory of one, which was worse." | | 5 | "\"Agreed. Which is why I'm cleaning it up.\" He took a half-step forward, and she didn't step back, so they stood close enough that she caught the scent of him — bergamot and cold air and something underneath that had no name, something that lived in the space between human and whatever his father had been." | | 6 | "He didn't flinch, but the tendons in his gloved hand tightened, and he transferred the cane to his other grip — a tell she'd catalogued in the early weeks when she'd still been learning the vocabulary of him." | | 7 | "Lucien looked down, and something in his expression cracked — just a fracture, there and gone, the way a hairline runs through glass." | | 8 | "He'd only ever called her that twice — once in the back of a black cab with her hand wrapped around his forearm, once in his flat in Marylebone when the power had cut and they'd sat in the dark and he'd traced the line of her jaw with one finger and whispered *Rory* like it was a question he didn't want answered." | | 9 | "His eyes — both of them, amber and void — stayed on her face, reading it the way he read contracts, searching for the clause she'd buried." | | 10 | "He navigated the drifts of paper without disturbing a single page, which meant he'd been here before — probably while she was out on delivery runs, probably while she trusted the three deadbolts to mean something." |
| |
| 100.00% | Purple prose (modifier overload) | Target: <4% adverbs, <2% -ly adverbs, no adj stacking | | wordCount | 829 | | adjectiveStacks | 0 | | stackExamples | (empty) | | adverbCount | 21 | | adverbRatio | 0.025331724969843185 | | lyAdverbCount | 3 | | lyAdverbRatio | 0.0036188178528347406 | |
| 100.00% | Repeated phrase echo | Target: ≤20% sentences with echoes (window: 2) | | totalSentences | 97 | | echoCount | 0 | | echoWords | (empty) | |
| 100.00% | Sentence length variance | Target: CV ≥0.4 for sentence word counts | | totalSentences | 97 | | mean | 13.96 | | std | 13.1 | | cv | 0.939 | | sampleLengths | | 0 | 22 | | 1 | 32 | | 2 | 15 | | 3 | 13 | | 4 | 21 | | 5 | 37 | | 6 | 13 | | 7 | 5 | | 8 | 24 | | 9 | 2 | | 10 | 2 | | 11 | 1 | | 12 | 2 | | 13 | 11 | | 14 | 18 | | 15 | 4 | | 16 | 10 | | 17 | 20 | | 18 | 5 | | 19 | 4 | | 20 | 11 | | 21 | 18 | | 22 | 43 | | 23 | 9 | | 24 | 3 | | 25 | 5 | | 26 | 4 | | 27 | 5 | | 28 | 18 | | 29 | 4 | | 30 | 1 | | 31 | 17 | | 32 | 22 | | 33 | 5 | | 34 | 15 | | 35 | 45 | | 36 | 7 | | 37 | 30 | | 38 | 6 | | 39 | 8 | | 40 | 4 | | 41 | 41 | | 42 | 4 | | 43 | 9 | | 44 | 5 | | 45 | 56 | | 46 | 16 | | 47 | 6 | | 48 | 2 | | 49 | 12 |
| |
| 59.11% | Sentence opener variety | Target: ≥60% unique sentence openers | | consecutiveRepeats | 6 | | diversityRatio | 0.3917525773195876 | | totalSentences | 97 | | uniqueOpeners | 38 | |
| 0.00% | Adverb-first sentence starts | Target: ≥3% sentences starting with an adverb | | adverbCount | 0 | | totalSentences | 58 | | matches | (empty) | | ratio | 0 | |
| 13.10% | Pronoun-first sentence starts | Target: ≤30% sentences starting with a pronoun | | pronounCount | 30 | | totalSentences | 58 | | matches | | 0 | "She knew the time because" | | 1 | "She stood, wiped her palm" | | 2 | "His voice carried through the" | | 3 | "She opened the door." | | 4 | "His platinum hair was slicked" | | 5 | "He'd grown a shadow of" | | 6 | "It softened him." | | 7 | "She hated that she noticed." | | 8 | "He didn't move" | | 9 | "His mouth shifted — not" | | 10 | "He shifted his weight, the" | | 11 | "She'd forgotten how strange it" | | 12 | "She hadn't forgotten how it" | | 13 | "She pressed her thumb against" | | 14 | "He took a half-step forward," | | 15 | "His jaw worked." | | 16 | "She watched them land." | | 17 | "He didn't flinch, but the" | | 18 | "He'd only ever called her" | | 19 | "She unfolded her arms." |
| | ratio | 0.517 | |
| 3.10% | Subject-first sentence starts | Target: ≤72% sentences starting with a subject | | subjectCount | 53 | | totalSentences | 58 | | matches | | 0 | "The three deadbolts clicked into" | | 1 | "Ptolemy wound between her ankles," | | 2 | "The cat answered with a" | | 3 | "The flat smelled of cardamom" | | 4 | "Rory had learned to navigate" | | 5 | "The knock came at nine-seventeen." | | 6 | "She knew the time because" | | 7 | "Silas banged like he was" | | 8 | "She stood, wiped her palm" | | 9 | "The second deadbolt followed." | | 10 | "His voice carried through the" | | 11 | "She opened the door." | | 12 | "Lucien Moreau filled the frame" | | 13 | "Charcoal suit, pressed to a" | | 14 | "His platinum hair was slicked" | | 15 | "He'd grown a shadow of" | | 16 | "It softened him." | | 17 | "She hated that she noticed." | | 18 | "He didn't move" | | 19 | "The hallway behind him was" |
| | 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 | |
| 19.70% | Technical jargon density | Target: ≤6% sentences with technical-jargon patterns | | analyzedSentences | 29 | | technicalSentenceCount | 5 | | matches | | 0 | "Old habits from a life she'd left in Cardiff, reinforced by eight months in London and a door that rattled in its jamb whenever the curry house downstairs fired…" | | 1 | "His platinum hair was slicked back from a forehead unmarked by worry, and his mismatched eyes — amber and black, the pair that had unsettled her the first time …" | | 2 | "Silence settled between them, heavy as the curry-house steam that seeped under the door." | | 3 | "His eyes — both of them, amber and void — stayed on her face, reading it the way he read contracts, searching for the clause she'd buried." | | 4 | "He navigated the drifts of paper without disturbing a single page, which meant he'd been here before — probably while she was out on delivery runs, probably whi…" |
| |
| 25.00% | Useless dialogue additions | Target: ≤5% dialogue tags with trailing filler fragments | | totalTags | 10 | | uselessAdditionCount | 2 | | matches | | 0 | "He shifted, the cane tapping once against the threshold" | | 1 | "He straightened, and the streetlight caught the edge of his cane's ferrule, a dull gleam of steel" |
| |
| 100.00% | Dialogue tag variety (said vs. fancy) | Target: ≤10% fancy dialogue tags | | totalTags | 2 | | fancyCount | 0 | | fancyTags | (empty) | | dialogueSentences | 39 | | tagDensity | 0.051 | | leniency | 0.103 | | rawRatio | 0 | | effectiveRatio | 0 | |