| 100.00% | Adverbs in dialogue tags | Target: ≤10% dialogue tags with adverbs | | totalTags | 21 | | adverbTagCount | 1 | | adverbTags | | | dialogueSentences | 46 | | tagDensity | 0.457 | | leniency | 0.913 | | rawRatio | 0.048 | | effectiveRatio | 0.043 | |
| 95.41% | AI-ism adverb frequency | Target: <2% AI-ism adverbs (58 tracked) | | wordCount | 2180 | | totalAiIsmAdverbs | 2 | | 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) | |
| 79.36% | AI-ism word frequency | Target: <2% AI-ism words (290 tracked) | | wordCount | 2180 | | totalAiIsms | 9 | | found | | | highlights | | 0 | "footfall" | | 1 | "measured" | | 2 | "chill" | | 3 | "mechanical" | | 4 | "scanning" | | 5 | "weight" | | 6 | "standard" | | 7 | "flicked" |
| |
| 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 | 165 | | matches | (empty) | |
| 64.94% | Filter word density | Target: ≤3% sentences with filter/hedge words | | filterCount | 6 | | hedgeCount | 3 | | narrationSentences | 165 | | filterMatches | | | hedgeMatches | | |
| 100.00% | Gibberish response detection | Target: ≤1% gibberish-like sentences (hard fail if a sentence exceeds 800 words) | | analyzedSentences | 189 | | gibberishSentences | 0 | | adjustedGibberishSentences | 0 | | longSentenceCount | 0 | | runOnParagraphCount | 0 | | giantParagraphCount | 0 | | wordSaladCount | 0 | | repetitionLoopCount | 0 | | controlTokenCount | 0 | | maxSentenceWordsSeen | 44 | | ratio | 0 | | matches | (empty) | |
| 100.00% | Markdown formatting overuse | Target: ≤5% words in markdown formatting | | markdownSpans | 0 | | markdownWords | 0 | | totalWords | 2164 | | ratio | 0 | | matches | (empty) | |
| 100.00% | Missing dialogue indicators (quotation marks) | Target: ≤10% speech attributions without quotation marks | | totalAttributions | 32 | | unquotedAttributions | 0 | | matches | (empty) | |
| 81.71% | Name drop frequency | Target: ≤1.0 per-name mentions per 100 words | | totalMentions | 48 | | wordCount | 1684 | | uniqueNames | 11 | | maxNameDensity | 1.37 | | worstName | "Harlow" | | maxWindowNameDensity | 2.5 | | worstWindowName | "Harlow" | | discoveredNames | | Raven | 1 | | Nest | 2 | | Quinn | 1 | | Harlow | 23 | | Market | 1 | | Tube | 1 | | Morris | 5 | | Herrera | 1 | | Saint | 1 | | Christopher | 1 | | Tomás | 11 |
| | persons | | 0 | "Nest" | | 1 | "Quinn" | | 2 | "Harlow" | | 3 | "Market" | | 4 | "Morris" | | 5 | "Herrera" | | 6 | "Saint" | | 7 | "Christopher" | | 8 | "Tomás" |
| | places | | | globalScore | 0.817 | | windowScore | 0.833 | |
| 54.76% | Narrator intent-glossing | Target: ≤2% narration sentences with intent-glossing patterns | | analyzedSentences | 105 | | glossingSentenceCount | 4 | | matches | | 0 | "smelled like old electricity" | | 1 | "as if speaking to Morris could pull him back" | | 2 | "tasted like petrol and cloves" | | 3 | "sounded like a trap dressed as an invitati" |
| |
| 100.00% | "Not X but Y" pattern overuse | Target: ≤1 "not X but Y" per 1000 words | | totalMatches | 1 | | per1kWords | 0.462 | | wordCount | 2164 | | matches | | 0 | "not like the kids who ran for buses, but she was relentless" |
| |
| 100.00% | Overuse of "that" (subordinate clause padding) | Target: ≤2% sentences with "that" clauses | | thatCount | 0 | | totalSentences | 189 | | matches | (empty) | |
| 100.00% | Paragraph length variance | Target: CV ≥0.5 for paragraph word counts | | totalParagraphs | 61 | | mean | 35.48 | | std | 20.88 | | cv | 0.589 | | sampleLengths | | 0 | 58 | | 1 | 41 | | 2 | 3 | | 3 | 71 | | 4 | 69 | | 5 | 13 | | 6 | 43 | | 7 | 26 | | 8 | 69 | | 9 | 35 | | 10 | 42 | | 11 | 25 | | 12 | 29 | | 13 | 8 | | 14 | 47 | | 15 | 60 | | 16 | 17 | | 17 | 46 | | 18 | 60 | | 19 | 70 | | 20 | 8 | | 21 | 61 | | 22 | 6 | | 23 | 11 | | 24 | 49 | | 25 | 12 | | 26 | 27 | | 27 | 8 | | 28 | 19 | | 29 | 40 | | 30 | 40 | | 31 | 50 | | 32 | 24 | | 33 | 38 | | 34 | 33 | | 35 | 35 | | 36 | 25 | | 37 | 67 | | 38 | 86 | | 39 | 36 | | 40 | 43 | | 41 | 19 | | 42 | 30 | | 43 | 17 | | 44 | 51 | | 45 | 35 | | 46 | 38 | | 47 | 57 | | 48 | 11 | | 49 | 38 |
| |
| 100.00% | Passive voice overuse | Target: ≤2% passive sentences | | passiveCount | 2 | | totalSentences | 165 | | matches | | 0 | "were mapped" | | 1 | "been written" |
| |
| 100.00% | Past progressive (was/were + -ing) overuse | Target: ≤2% past progressive verbs | | pastProgressiveCount | 0 | | totalVerbs | 310 | | matches | (empty) | |
| 0.00% | Em-dash & semicolon overuse | Target: ≤2% sentences with em-dashes/semicolons | | emDashCount | 9 | | semicolonCount | 3 | | flaggedSentences | 11 | | totalSentences | 189 | | ratio | 0.058 | | matches | | 0 | "The city smelled of diesel and wet paper and something else under the rain—metal and old stones." | | 1 | "He turned a corner; Harlow saw the flash of something in his hand." | | 2 | "A rusted sign read this way to local station—defunct." | | 3 | "Her left arm flexed; the watch strap creaked against her wrist." | | 4 | "It glowed faintly, the way bone did sometimes under lamplight—like moonlight had seeped into it and stayed." | | 5 | "A gap appeared in the air—an outline where the tile changed, the world folding in on itself." | | 6 | "She hadn't meant to think of him—Morris used to tease her about discipline, the way she buttoned her jacket to the top and kept her hair too short—but the memory knifed up with the wind." | | 7 | "Stalls breathed out steam, paper lanterns bobbed like low organs, and people moved in clusters the way river fish did—fast and knowing." | | 8 | "He had been here before—she'd banked on that when the case had gone sideways." | | 9 | "She thought of Morris in a foxhole of memory; his laugh over a pot of cold coffee, the way he'd pointed out tiny details like a man reading fingerprints on a river." | | 10 | "He paused—an infinitesimal hesitation where something moved behind his eyes." |
| |
| 94.00% | Purple prose (modifier overload) | Target: <4% adverbs, <2% -ly adverbs, no adj stacking | | wordCount | 1697 | | adjectiveStacks | 1 | | stackExamples | | 0 | "under bad fluorescent lights" |
| | adverbCount | 37 | | adverbRatio | 0.021803182086034177 | | lyAdverbCount | 4 | | lyAdverbRatio | 0.002357100766057749 | |
| 100.00% | Repeated phrase echo | Target: ≤20% sentences with echoes (window: 2) | | totalSentences | 189 | | echoCount | 0 | | echoWords | (empty) | |
| 100.00% | Sentence length variance | Target: CV ≥0.4 for sentence word counts | | totalSentences | 189 | | mean | 11.45 | | std | 8.21 | | cv | 0.717 | | sampleLengths | | 0 | 12 | | 1 | 19 | | 2 | 16 | | 3 | 11 | | 4 | 12 | | 5 | 21 | | 6 | 8 | | 7 | 3 | | 8 | 4 | | 9 | 4 | | 10 | 19 | | 11 | 16 | | 12 | 10 | | 13 | 15 | | 14 | 3 | | 15 | 17 | | 16 | 22 | | 17 | 17 | | 18 | 13 | | 19 | 1 | | 20 | 12 | | 21 | 8 | | 22 | 1 | | 23 | 1 | | 24 | 2 | | 25 | 9 | | 26 | 2 | | 27 | 1 | | 28 | 2 | | 29 | 3 | | 30 | 3 | | 31 | 2 | | 32 | 2 | | 33 | 7 | | 34 | 12 | | 35 | 9 | | 36 | 5 | | 37 | 9 | | 38 | 17 | | 39 | 11 | | 40 | 5 | | 41 | 27 | | 42 | 13 | | 43 | 12 | | 44 | 10 | | 45 | 5 | | 46 | 17 | | 47 | 20 | | 48 | 19 | | 49 | 6 |
| |
| 42.06% | Sentence opener variety | Target: ≥60% unique sentence openers | | consecutiveRepeats | 15 | | diversityRatio | 0.2698412698412698 | | totalSentences | 189 | | uniqueOpeners | 51 | |
| 23.98% | Adverb-first sentence starts | Target: ≥3% sentences starting with an adverb | | adverbCount | 1 | | totalSentences | 139 | | matches | | | ratio | 0.007 | |
| 41.58% | Pronoun-first sentence starts | Target: ≤30% sentences starting with a pronoun | | pronounCount | 62 | | totalSentences | 139 | | matches | | 0 | "She moved with military precision," | | 1 | "He moved like he wanted" | | 2 | "He cut down a side" | | 3 | "She counted windows, lamp posts," | | 4 | "She wasn't fast, not like" | | 5 | "He darted between a delivery" | | 6 | "He turned a corner; Harlow" | | 7 | "Her mind catalogued it like" | | 8 | "She'd heard whispers." | | 9 | "He reached a stair that" | | 10 | "He dropped two steps, vanished." | | 11 | "Her left arm flexed; the" | | 12 | "She didn't call for backup." | | 13 | "He ran toward a turnstile" | | 14 | "He held the bone up." | | 15 | "It glowed faintly, the way" | | 16 | "He pressed it to the" | | 17 | "He looked back once without" | | 18 | "He sounded younger up close," | | 19 | "She stepped forward." |
| | ratio | 0.446 | |
| 0.00% | Subject-first sentence starts | Target: ≤72% sentences starting with a subject | | subjectCount | 129 | | totalSentences | 139 | | matches | | 0 | "The rain hit the neon" | | 1 | "Harlow Quinn kept her chin" | | 2 | "She moved with military precision," | | 3 | "A figure slipped out of" | | 4 | "He moved like he wanted" | | 5 | "Harlow tightened her shoulders and" | | 6 | "The voice snagged attention." | | 7 | "The figure didn't slow." | | 8 | "He cut down a side" | | 9 | "Harlow hauled herself after him," | | 10 | "She counted windows, lamp posts," | | 11 | "She wasn't fast, not like" | | 12 | "That always worked." | | 13 | "He darted between a delivery" | | 14 | "Harlow hit the wall with" | | 15 | "The city smelled of diesel" | | 16 | "He turned a corner; Harlow" | | 17 | "Her mind catalogued it like" | | 18 | "Entry by token." | | 19 | "She'd heard whispers." |
| | ratio | 0.928 | |
| 0.00% | Subordinate conjunction sentence starts | Target: ≥2% sentences starting with a subordinating conjunction | | subConjCount | 0 | | totalSentences | 139 | | matches | (empty) | | ratio | 0 | |
| 38.10% | Technical jargon density | Target: ≤6% sentences with technical-jargon patterns | | analyzedSentences | 75 | | technicalSentenceCount | 11 | | matches | | 0 | "Harlow hit the wall with a shoulder and kept going, breath burning, lungs digging for air that felt colder with every step." | | 1 | "He reached a stair that plunged below street level, iron balustrades slick." | | 2 | "He sounded younger up close, pitched with something sharp, almost a dare that could be the sound of many lifetimes wrapped tight." | | 3 | "The turnstile accepted it with a sound that wasn't mechanical but organic, like a throat opening." | | 4 | "The bones of her hands were mapped by scars and a tightness that had become a permanent condition after Morris." | | 5 | "Some had badges of leather and bone, some wore talismans that flashed when they laughed." | | 6 | "A vendor leaned over a cart and sold contraband glass vials that rattled with something alive." | | 7 | "His face had the pale look of someone who had spent nights under bad fluorescent lights and done favours he had never billed." | | 8 | "She thought of Morris under his last light, of the weirdness in reports right before everyone stopped talking, of clients with desperate faces who paid in old c…" | | 9 | "He didn't step between them, he slid beside Harlow with his hand hovering over hers, steady but not smothering." | | 10 | "A sign hung crookedly above, an old enamel plate with the words VEIL MARKET scrawled across in something that had been written with a hand that didn't intend to…" |
| |
| 77.38% | Useless dialogue additions | Target: ≤5% dialogue tags with trailing filler fragments | | totalTags | 21 | | uselessAdditionCount | 2 | | matches | | 0 | "she said, as if speaking to Morris could pull him back" | | 1 | "he snapped, and the voice was suddenly ugly and very human" |
| |
| 84.78% | Dialogue tag variety (said vs. fancy) | Target: ≤10% fancy dialogue tags | | totalTags | 21 | | fancyCount | 3 | | fancyTags | | 0 | "she barked (bark)" | | 1 | "He spoke like (speak)" | | 2 | "he snapped (snap)" |
| | dialogueSentences | 46 | | tagDensity | 0.457 | | leniency | 0.913 | | rawRatio | 0.143 | | effectiveRatio | 0.13 | |