| 100.00% | Adverbs in dialogue tags | Target: ≤10% dialogue tags with adverbs | | totalTags | 14 | | adverbTagCount | 0 | | adverbTags | (empty) | | dialogueSentences | 38 | | tagDensity | 0.368 | | leniency | 0.737 | | rawRatio | 0 | | effectiveRatio | 0 | |
| 94.58% | AI-ism adverb frequency | Target: <2% AI-ism adverbs (58 tracked) | | wordCount | 1846 | | 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) | |
| 53.95% | AI-ism word frequency | Target: <2% AI-ism words (290 tracked) | | wordCount | 1846 | | totalAiIsms | 17 | | found | | | highlights | | 0 | "measured" | | 1 | "glinting" | | 2 | "echoed" | | 3 | "depths" | | 4 | "grave" | | 5 | "flicker" | | 6 | "dancing" | | 7 | "pulsed" | | 8 | "weight" | | 9 | "velvet" | | 10 | "flicked" | | 11 | "gloom" | | 12 | "scanned" | | 13 | "fluttered" |
| |
| 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 | 186 | | matches | (empty) | |
| 100.00% | Filter word density | Target: ≤3% sentences with filter/hedge words | | filterCount | 2 | | hedgeCount | 0 | | narrationSentences | 186 | | filterMatches | | | hedgeMatches | (empty) | |
| 100.00% | Gibberish response detection | Target: ≤1% gibberish-like sentences (hard fail if a sentence exceeds 800 words) | | analyzedSentences | 209 | | gibberishSentences | 0 | | adjustedGibberishSentences | 0 | | longSentenceCount | 0 | | runOnParagraphCount | 0 | | giantParagraphCount | 0 | | wordSaladCount | 0 | | repetitionLoopCount | 0 | | controlTokenCount | 0 | | maxSentenceWordsSeen | 45 | | ratio | 0 | | matches | (empty) | |
| 80.48% | Markdown formatting overuse | Target: ≤5% words in markdown formatting | | markdownSpans | 35 | | markdownWords | 109 | | totalWords | 1824 | | ratio | 0.06 | | matches | | 0 | "sure" | | 1 | "\"Quinn, where the hell are you? Backup’s two minutes out—\"" | | 2 | "target" | | 3 | "When had that happened?" | | 4 | "Recent." | | 5 | "\"Quinn, talk to me—\"" | | 6 | "wrong" | | 7 | "door" | | 8 | "wrong" | | 9 | "Bone token." | | 10 | "The Veil Market moves with the moon. Bone token for entry." | | 11 | "Three months." | | 12 | "no, a lead" | | 13 | "\"Detective, we’ve got units at your last known. What’s your twenty?\"" | | 14 | "Running." | | 15 | "God" | | 16 | "market" | | 17 | "heart" | | 18 | "things" | | 19 | "wrong" | | 20 | "Drugs?" | | 21 | "information." | | 22 | "well" | | 23 | "Silas." | | 24 | "The Raven’s Nest" | | 25 | "Bone token." | | 26 | "\"Quinn, we’ve got a 10-54 at your last location. Possible officer down. Repeat, possible—\"" | | 27 | "Chef’s kiss." | | 28 | "specimens" | | 29 | "God" | | 30 | "gone." | | 31 | "\"Quinn, do you copy? We’ve got visual on your suspect above ground. Repeat, suspect is—\"" | | 32 | "There." | | 33 | "A reversed sigma." | | 34 | "The Raven’s Nest." |
| |
| 100.00% | Missing dialogue indicators (quotation marks) | Target: ≤10% speech attributions without quotation marks | | totalAttributions | 11 | | unquotedAttributions | 0 | | matches | (empty) | |
| 100.00% | Name drop frequency | Target: ≤1.0 per-name mentions per 100 words | | totalMentions | 29 | | wordCount | 1580 | | uniqueNames | 17 | | maxNameDensity | 0.32 | | worstName | "Three" | | maxWindowNameDensity | 1.5 | | worstWindowName | "Three" | | discoveredNames | | Harlow | 4 | | Quinn | 1 | | Chinatown | 1 | | Morris | 3 | | Veil | 1 | | Market | 1 | | Three | 5 | | London | 1 | | Christ | 1 | | Vey | 1 | | Raven | 2 | | Herrera | 1 | | Saint | 1 | | Christopher | 1 | | Tomás | 3 | | Vanished | 1 | | Drawn | 1 |
| | persons | | 0 | "Harlow" | | 1 | "Quinn" | | 2 | "Morris" | | 3 | "Market" | | 4 | "Vey" | | 5 | "Raven" | | 6 | "Herrera" | | 7 | "Saint" | | 8 | "Christopher" | | 9 | "Tomás" |
| | places | | | globalScore | 1 | | windowScore | 1 | |
| 33.18% | Narrator intent-glossing | Target: ≤2% narration sentences with intent-glossing patterns | | analyzedSentences | 107 | | glossingSentenceCount | 5 | | matches | | 0 | "smelled like a grave" | | 1 | "quite match the shapes they should’ve" | | 2 | "quite hide the way his spine bent *wrong" | | 3 | "looked like raw meat, her smile too wide" | | 4 | "looked like preserved hands in jars" |
| |
| 100.00% | "Not X but Y" pattern overuse | Target: ≤1 "not X but Y" per 1000 words | | totalMatches | 1 | | per1kWords | 0.548 | | wordCount | 1824 | | matches | | |
| 100.00% | Overuse of "that" (subordinate clause padding) | Target: ≤2% sentences with "that" clauses | | thatCount | 2 | | totalSentences | 209 | | matches | | 0 | "seen that phrase" | | 1 | "was that a" |
| |
| 100.00% | Paragraph length variance | Target: CV ≥0.5 for paragraph word counts | | totalParagraphs | 87 | | mean | 20.97 | | std | 19.04 | | cv | 0.908 | | sampleLengths | | 0 | 54 | | 1 | 72 | | 2 | 13 | | 3 | 59 | | 4 | 48 | | 5 | 11 | | 6 | 20 | | 7 | 8 | | 8 | 49 | | 9 | 11 | | 10 | 45 | | 11 | 4 | | 12 | 48 | | 13 | 2 | | 14 | 41 | | 15 | 11 | | 16 | 64 | | 17 | 15 | | 18 | 7 | | 19 | 51 | | 20 | 8 | | 21 | 2 | | 22 | 35 | | 23 | 50 | | 24 | 6 | | 25 | 4 | | 26 | 51 | | 27 | 50 | | 28 | 20 | | 29 | 48 | | 30 | 32 | | 31 | 11 | | 32 | 17 | | 33 | 1 | | 34 | 42 | | 35 | 17 | | 36 | 17 | | 37 | 1 | | 38 | 9 | | 39 | 5 | | 40 | 2 | | 41 | 46 | | 42 | 13 | | 43 | 26 | | 44 | 4 | | 45 | 23 | | 46 | 16 | | 47 | 12 | | 48 | 3 | | 49 | 53 |
| |
| 100.00% | Passive voice overuse | Target: ≤2% passive sentences | | passiveCount | 2 | | totalSentences | 186 | | matches | | 0 | "been seen" | | 1 | "was carved" |
| |
| 100.00% | Past progressive (was/were + -ing) overuse | Target: ≤2% past progressive verbs | | pastProgressiveCount | 2 | | totalVerbs | 258 | | matches | | 0 | "were lying" | | 1 | "was climbing" |
| |
| 0.00% | Em-dash & semicolon overuse | Target: ≤2% sentences with em-dashes/semicolons | | emDashCount | 25 | | semicolonCount | 0 | | flaggedSentences | 17 | | totalSentences | 209 | | ratio | 0.081 | | matches | | 0 | "Three blocks of slick cobblestones and neon reflections, and the bastard was still ahead—just a dark coat flapping around corners, a shadow that moved wrong." | | 1 | "Sirens meant the suspect—*target*, her brain corrected, because this wasn’t some two-bit pickpocket—would vanish like smoke through a keyhole." | | 2 | "No—" | | 3 | "Her watch—Morris’s watch, the one she’d taken from his locker after they’d pronounced him dead in that warehouse with the symbols on the walls—ticked against her wrist." | | 4 | "*Three months.* Three months of corpses with their ribs cracked open like overripe fruit, of witnesses babbling about “men with too many teeth,” of the same damn symbol carved into doorframes across four boroughs—a reversed sigma, drawn by someone who thought they were clever." | | 5 | "And now she had a suspect—*no, a lead*—dangling just out of reach, down a hole that smelled like a grave." | | 6 | "The scent changed—spices now, and something metallic underneath, like a butcher’s block." | | 7 | "Another displayed teeth—human, unless her eyes were lying—strung on silver chains." | | 8 | "People—*things*—moved between the stalls." | | 9 | "The suspect—tall, lean, that damn coat—was twenty feet ahead, weaving through the crowd." | | 10 | "*Drugs?* No, the way the suspect’s shoulders tensed—*information.*" | | 11 | "The scar on his forearm—gift from a knife-wielding junkie, or so his file said—looked fresh in this light." | | 12 | "“No?” He rolled up his sleeve, revealing the scar in full—the puckered line of it, angry and red." | | 13 | "The stalls here were different—less merchandise, more *specimens*." | | 14 | "Just a smooth expanse of skin where features should’ve been, and a mouth—*God*, the mouth—a lipless slit that stretched too wide, too many teeth glinting in the dark." | | 15 | "The suspect ducked left, then right, then—*gone.* Vanished between a butcher’s block and a cage of something that whimpered in a language she didn’t recognise." | | 16 | "She scanned the docks, the warehouses, the—" |
| |
| 100.00% | Purple prose (modifier overload) | Target: <4% adverbs, <2% -ly adverbs, no adj stacking | | wordCount | 1602 | | adjectiveStacks | 0 | | stackExamples | (empty) | | adverbCount | 54 | | adverbRatio | 0.033707865168539325 | | lyAdverbCount | 4 | | lyAdverbRatio | 0.0024968789013732834 | |
| 100.00% | Repeated phrase echo | Target: ≤20% sentences with echoes (window: 2) | | totalSentences | 209 | | echoCount | 0 | | echoWords | (empty) | |
| 100.00% | Sentence length variance | Target: CV ≥0.4 for sentence word counts | | totalSentences | 209 | | mean | 8.73 | | std | 6.96 | | cv | 0.797 | | sampleLengths | | 0 | 25 | | 1 | 25 | | 2 | 2 | | 3 | 2 | | 4 | 4 | | 5 | 11 | | 6 | 15 | | 7 | 22 | | 8 | 4 | | 9 | 16 | | 10 | 3 | | 11 | 10 | | 12 | 10 | | 13 | 3 | | 14 | 19 | | 15 | 11 | | 16 | 16 | | 17 | 15 | | 18 | 15 | | 19 | 9 | | 20 | 5 | | 21 | 4 | | 22 | 8 | | 23 | 2 | | 24 | 1 | | 25 | 5 | | 26 | 9 | | 27 | 5 | | 28 | 1 | | 29 | 4 | | 30 | 4 | | 31 | 11 | | 32 | 2 | | 33 | 18 | | 34 | 3 | | 35 | 3 | | 36 | 12 | | 37 | 6 | | 38 | 3 | | 39 | 2 | | 40 | 27 | | 41 | 18 | | 42 | 4 | | 43 | 5 | | 44 | 2 | | 45 | 25 | | 46 | 16 | | 47 | 2 | | 48 | 7 | | 49 | 23 |
| |
| 42.26% | Sentence opener variety | Target: ≥60% unique sentence openers | | consecutiveRepeats | 20 | | diversityRatio | 0.31100478468899523 | | totalSentences | 209 | | uniqueOpeners | 65 | |
| 86.58% | Adverb-first sentence starts | Target: ≥3% sentences starting with an adverb | | adverbCount | 4 | | totalSentences | 154 | | matches | | 0 | "Then a voice, not through" | | 1 | "Then Tomás sighed, like a" | | 2 | "Just a smooth expanse of" | | 3 | "Just kept climbing, his gloved" |
| | ratio | 0.026 | |
| 97.92% | Pronoun-first sentence starts | Target: ≤30% sentences starting with a pronoun | | pronounCount | 47 | | totalSentences | 154 | | matches | | 0 | "She skidded past a delivery" | | 1 | "Her radio crackled." | | 2 | "She yanked it from her" | | 3 | "She wiped her face, tasted" | | 4 | "Her boot caught on something." | | 5 | "She dropped to one knee," | | 6 | "Her watch—Morris’s watch, the one" | | 7 | "She lifted the manhole." | | 8 | "Her torch beam cut a" | | 9 | "She’d seen that phrase in" | | 10 | "Her fingers brushed the first" | | 11 | "She swung her legs over" | | 12 | "Her boots hit packed dirt," | | 13 | "Her shoulders scraped raw." | | 14 | "It cast long shadows that" | | 15 | "It twitched when she looked" | | 16 | "He paused at a stall" | | 17 | "She ducked behind a stall" | | 18 | "She flashed her badge" | | 19 | "His laugh was a wet" |
| | ratio | 0.305 | |
| 67.14% | Subject-first sentence starts | Target: ≤72% sentences starting with a subject | | subjectCount | 121 | | totalSentences | 154 | | matches | | 0 | "The pavement cracked like gunfire" | | 1 | "A left into Chinatown." | | 2 | "The scent of five-spice and" | | 3 | "She skidded past a delivery" | | 4 | "Her radio crackled." | | 5 | "She yanked it from her" | | 6 | "Backup meant sirens." | | 7 | "The rain here was a" | | 8 | "She wiped her face, tasted" | | 9 | "Blood from her split lip." | | 10 | "The alley dead-ended at a" | | 11 | "Her boot caught on something." | | 12 | "A manhole cover, slightly ajar," | | 13 | "The radio hissed again." | | 14 | "She dropped to one knee," | | 15 | "The scent of damp earth" | | 16 | "The air tasted *wrong*, like" | | 17 | "A thud echoed from the" | | 18 | "Her watch—Morris’s watch, the one" | | 19 | "She lifted the manhole." |
| | ratio | 0.786 | |
| 0.00% | Subordinate conjunction sentence starts | Target: ≥2% sentences starting with a subordinating conjunction | | subConjCount | 0 | | totalSentences | 154 | | matches | (empty) | | ratio | 0 | |
| 67.67% | Technical jargon density | Target: ≤6% sentences with technical-jargon patterns | | analyzedSentences | 57 | | technicalSentenceCount | 6 | | matches | | 0 | "Three blocks of slick cobblestones and neon reflections, and the bastard was still ahead—just a dark coat flapping around corners, a shadow that moved wrong." | | 1 | "The scent of damp earth and something older, something that made the hairs on her arms stand up." | | 2 | "Her torch beam cut a weak path, illuminating rungs slick with something that wasn’t just condensation." | | 3 | "Tomás Herrera leaned against a stall selling vials of something that bubbled like boiling blood." | | 4 | "Just a smooth expanse of skin where features should’ve been, and a mouth—*God*, the mouth—a lipless slit that stretched too wide, too many teeth glinting in the…" | | 5 | "The suspect ducked left, then right, then—*gone.* Vanished between a butcher’s block and a cage of something that whimpered in a language she didn’t recognise." |
| |
| 100.00% | Useless dialogue additions | Target: ≤5% dialogue tags with trailing filler fragments | | totalTags | 14 | | uselessAdditionCount | 0 | | matches | (empty) | |
| 100.00% | Dialogue tag variety (said vs. fancy) | Target: ≤10% fancy dialogue tags | | totalTags | 2 | | fancyCount | 1 | | fancyTags | | | dialogueSentences | 38 | | tagDensity | 0.053 | | leniency | 0.105 | | rawRatio | 0.5 | | effectiveRatio | 0.053 | |