| 100.00% | Adverbs in dialogue tags | Target: ≤10% dialogue tags with adverbs | | totalTags | 9 | | adverbTagCount | 0 | | adverbTags | (empty) | | dialogueSentences | 15 | | tagDensity | 0.6 | | leniency | 1 | | rawRatio | 0 | | effectiveRatio | 0 | |
| 93.32% | AI-ism adverb frequency | Target: <2% AI-ism adverbs (58 tracked) | | wordCount | 1496 | | 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) | |
| 66.58% | AI-ism word frequency | Target: <2% AI-ism words (290 tracked) | | wordCount | 1496 | | totalAiIsms | 10 | | found | | | highlights | | 0 | "etched" | | 1 | "scanned" | | 2 | "flickered" | | 3 | "measured" | | 4 | "electric" | | 5 | "shimmered" | | 6 | "silk" | | 7 | "tension" | | 8 | "clandestine" |
| |
| 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 | 73 | | matches | (empty) | |
| 64.58% | Filter word density | Target: ≤3% sentences with filter/hedge words | | filterCount | 3 | | hedgeCount | 1 | | narrationSentences | 73 | | filterMatches | | | hedgeMatches | | |
| 100.00% | Gibberish response detection | Target: ≤1% gibberish-like sentences (hard fail if a sentence exceeds 800 words) | | analyzedSentences | 78 | | gibberishSentences | 0 | | adjustedGibberishSentences | 0 | | longSentenceCount | 0 | | runOnParagraphCount | 0 | | giantParagraphCount | 0 | | wordSaladCount | 0 | | repetitionLoopCount | 0 | | controlTokenCount | 0 | | repeatedSegmentCount | 0 | | maxSentenceWordsSeen | 130 | | ratio | 0 | | matches | (empty) | |
| 100.00% | Markdown formatting overuse | Target: ≤5% words in markdown formatting | | markdownSpans | 0 | | markdownWords | 0 | | totalWords | 1478 | | ratio | 0 | | matches | (empty) | |
| 100.00% | Missing dialogue indicators (quotation marks) | Target: ≤10% speech attributions without quotation marks | | totalAttributions | 11 | | unquotedAttributions | 0 | | matches | (empty) | |
| 82.74% | Name drop frequency | Target: ≤1.0 per-name mentions per 100 words | | totalMentions | 54 | | wordCount | 1338 | | uniqueNames | 19 | | maxNameDensity | 1.35 | | worstName | "Quinn" | | maxWindowNameDensity | 2.5 | | worstWindowName | "Quinn" | | discoveredNames | | Soho | 2 | | Detective | 1 | | Harlow | 1 | | Quinn | 18 | | Raven | 2 | | Nest | 3 | | October | 1 | | Morris | 4 | | Tube | 2 | | Camden | 2 | | Veil | 2 | | Market | 2 | | Underground | 1 | | Herrera | 2 | | Saint | 2 | | Christopher | 2 | | Seville | 1 | | Spain | 1 | | Tomás | 5 |
| | persons | | 0 | "Harlow" | | 1 | "Quinn" | | 2 | "Raven" | | 3 | "Nest" | | 4 | "Morris" | | 5 | "Market" | | 6 | "Herrera" | | 7 | "Saint" | | 8 | "Christopher" | | 9 | "Tomás" |
| | places | | 0 | "Soho" | | 1 | "Seville" | | 2 | "Spain" |
| | globalScore | 0.827 | | windowScore | 0.833 | |
| 0.00% | Narrator intent-glossing | Target: ≤2% narration sentences with intent-glossing patterns | | analyzedSentences | 49 | | glossingSentenceCount | 3 | | matches | | 0 | "ink that seemed to crawl" | | 1 | "looked like teeth arranged by size. Quinn" | | 2 | "quite coins, the low hum of enchanted goods—faded into a tunnel" |
| |
| 0.00% | "Not X but Y" pattern overuse | Target: ≤1 "not X but Y" per 1000 words | | totalMatches | 3 | | per1kWords | 2.03 | | wordCount | 1478 | | matches | | 0 | "not the way he died, but the precision he had demanded" | | 1 | "not just sewer and rust, but ozone" | | 2 | "not electric, but something older, lantern-light" |
| |
| 100.00% | Overuse of "that" (subordinate clause padding) | Target: ≤2% sentences with "that" clauses | | thatCount | 0 | | totalSentences | 78 | | matches | (empty) | |
| 100.00% | Paragraph length variance | Target: CV ≥0.5 for paragraph word counts | | totalParagraphs | 36 | | mean | 41.06 | | std | 37.65 | | cv | 0.917 | | sampleLengths | | 0 | 140 | | 1 | 74 | | 2 | 51 | | 3 | 2 | | 4 | 115 | | 5 | 5 | | 6 | 87 | | 7 | 45 | | 8 | 47 | | 9 | 48 | | 10 | 10 | | 11 | 51 | | 12 | 7 | | 13 | 128 | | 14 | 28 | | 15 | 42 | | 16 | 4 | | 17 | 2 | | 18 | 130 | | 19 | 25 | | 20 | 9 | | 21 | 27 | | 22 | 17 | | 23 | 12 | | 24 | 50 | | 25 | 10 | | 26 | 30 | | 27 | 42 | | 28 | 10 | | 29 | 63 | | 30 | 52 | | 31 | 42 | | 32 | 18 | | 33 | 6 | | 34 | 45 | | 35 | 4 |
| |
| 81.23% | Passive voice overuse | Target: ≤2% passive sentences | | passiveCount | 5 | | totalSentences | 73 | | matches | | 0 | "was slicked" | | 1 | "being distilled" | | 2 | "been rolled" | | 3 | "was bent" | | 4 | "were traded" |
| |
| 100.00% | Past progressive (was/were + -ing) overuse | Target: ≤2% past progressive verbs | | pastProgressiveCount | 1 | | totalVerbs | 227 | | matches | | |
| 0.00% | Em-dash & semicolon overuse | Target: ≤2% sentences with em-dashes/semicolons | | emDashCount | 19 | | semicolonCount | 3 | | flaggedSentences | 15 | | totalSentences | 78 | | ratio | 0.192 | | matches | | 0 | "The green neon sign of the Raven’s Nest buzzed above the entrance, its sickly glow pooling on the wet pavement and bleeding into the black-and-white photographs she knew lined the bar’s interior walls—old maps, dead faces, secrets sold by the glass." | | 1 | "Quinn recognized the cut of his shoulders, the way he scanned the street before stepping out—precisely the kind of paranoia that made her job easier." | | 2 | "The chase carved through the narrow arteries of Soho—past dumpsters reeking of fish and wine, under scaffolding that dripped cold water onto her shoulders, around a corner where a black cab skidded on the slick asphalt with a shriek of tires. The runner was fast, but Quinn was relentless. She kept him in sight by the white flash of his jacket, a ghost threading between the old maps of the city. Her lungs burned cleanly, measured; she had trained for this. She thought of DS Morris as she ran—not the way he died, but the precision he had demanded. Three years ago. Unexplained circumstances. Supernatural origins she still couldn’t name. The memory sharpened her stride." | | 3 | "The runner reached the service gate at the corner of a dead alley. He didn’t fumble with a lock. He pulled something from his coat—small, pale, carved. A bone token. The gate groaned open with a sound like a throat clearing, and he vanished downward." | | 4 | "Quinn slowed to a walk fifty feet out, rain lashing her face. She approached the gate. The air here smelled wrong—not just sewer and rust, but ozone and old blood, the metallic tang of something alchemically alive. The gate stood open a hand’s width, darkness exhaling upward." | | 5 | "She looked at the token in her mind—the bone token required for entry. She didn’t have one. Not tonight. Not officially. But she had her badge, her gun, her eighteen years, and a partner’s ghost pushing her forward. Morris hadn’t died for her to stop at the threshold." | | 6 | "The descent was a stairwell choked with mildew and cold. Her hand found the rail, slick with moisture. Below, a faint amber glow replaced the darkness—not electric, but something older, lantern-light and candle-flame fighting against the black. She reached the bottom and emerged onto the platform of an abandoned Tube station." | | 7 | "The Veil Market stretched along the tracks in both directions, a carnival of shadows erected in the bones of the Underground. Stalls of black wood and tarnished brass crowded the platform edges. Some sold objects that shimmered with wrong colors—jars of liquid that moved against gravity, books whose pages turned themselves in the draft. Others displayed information: scrolls sealed with wax that hissed when touched, maps drawn in ink that seemed to crawl. The smell was overwhelming—iron, myrrh, burning sugar, and the sharp chemical sting of banned alchemical substances being distilled in open air. A full moon must have been near; the crowd was thick with figures that wore hoods too deep, or faces that weren’t quite symmetrical, or bodies that moved with the wrong number of joints." | | 8 | "She spotted the white jacket first—her runner, ducking between stalls near a vendor selling what looked like teeth arranged by size. Quinn moved faster, threading through the crowd. A hand brushed her arm; she didn’t flinch. She was here for one thing." | | 9 | "The scar running along his left forearm was visible where his sleeve had been rolled back—pale and ridged, the legacy of a knife attack." | | 10 | "Not because she feared him—she feared nothing in this market except the unknown that had taken Morris—but because recognition was a two-way street." | | 11 | "The noise of the market—haggling, the clink of coins that weren’t quite coins, the low hum of enchanted goods—faded into a tunnel." | | 12 | "The woman on the tarp stirred, then went still—sedated, or healed, Quinn couldn’t tell." | | 13 | "“No.” He glanced at her coat, at the gun at her hip, at the tension in her posture—military precision even here, in hell’s flea market." | | 14 | "“I treat them. Sometimes I fail. Sometimes they fail first.” He rolled his sleeve down, hiding the scar, but not before Quinn noted the precision of the wound—old, deliberate." |
| |
| 100.00% | Purple prose (modifier overload) | Target: <4% adverbs, <2% -ly adverbs, no adj stacking | | wordCount | 715 | | adjectiveStacks | 0 | | stackExamples | (empty) | | adverbCount | 20 | | adverbRatio | 0.027972027972027972 | | lyAdverbCount | 7 | | lyAdverbRatio | 0.009790209790209791 | |
| 100.00% | Repeated phrase echo | Target: ≤20% sentences with echoes (window: 2) | | totalSentences | 78 | | echoCount | 0 | | echoWords | (empty) | |
| 100.00% | Sentence length variance | Target: CV ≥0.4 for sentence word counts | | totalSentences | 78 | | mean | 18.95 | | std | 22.44 | | cv | 1.184 | | sampleLengths | | 0 | 20 | | 1 | 24 | | 2 | 23 | | 3 | 41 | | 4 | 27 | | 5 | 1 | | 6 | 4 | | 7 | 12 | | 8 | 13 | | 9 | 25 | | 10 | 4 | | 11 | 20 | | 12 | 8 | | 13 | 43 | | 14 | 2 | | 15 | 115 | | 16 | 5 | | 17 | 87 | | 18 | 45 | | 19 | 47 | | 20 | 48 | | 21 | 10 | | 22 | 51 | | 23 | 7 | | 24 | 128 | | 25 | 28 | | 26 | 42 | | 27 | 4 | | 28 | 2 | | 29 | 47 | | 30 | 24 | | 31 | 16 | | 32 | 17 | | 33 | 3 | | 34 | 3 | | 35 | 11 | | 36 | 9 | | 37 | 2 | | 38 | 23 | | 39 | 3 | | 40 | 6 | | 41 | 5 | | 42 | 22 | | 43 | 4 | | 44 | 9 | | 45 | 4 | | 46 | 7 | | 47 | 5 | | 48 | 8 | | 49 | 14 |
| |
| 43.72% | Sentence opener variety | Target: ≥60% unique sentence openers | | consecutiveRepeats | 8 | | diversityRatio | 0.3246753246753247 | | totalSentences | 77 | | uniqueOpeners | 25 | |
| 52.08% | Adverb-first sentence starts | Target: ≥3% sentences starting with an adverb | | adverbCount | 1 | | totalSentences | 64 | | matches | | | ratio | 0.016 | |
| 76.25% | Pronoun-first sentence starts | Target: ≤30% sentences starting with a pronoun | | pronounCount | 23 | | totalSentences | 64 | | matches | | 0 | "Her closely cropped salt-and-pepper hair" | | 1 | "She kept to the shadow" | | 2 | "She didn’t chase immediately." | | 3 | "She let him take three" | | 4 | "Her boots struck the cobblestones" | | 5 | "She looked at the token" | | 6 | "She spotted the white jacket" | | 7 | "He stood near a stall" | | 8 | "He was bent over a" | | 9 | "His warm brown eyes met" | | 10 | "His voice was calm, accented" | | 11 | "Her voice was low, steady." | | 12 | "He straightened, wiping his hands" | | 13 | "He nodded toward the northern" | | 14 | "He glanced at her coat," | | 15 | "She hadn’t spoken it aloud" | | 16 | "She stepped closer, close enough" | | 17 | "It wasn’t a question." | | 18 | "He rolled his sleeve down," | | 19 | "She could still catch him." |
| | ratio | 0.359 | |
| 53.75% | Subject-first sentence starts | Target: ≤72% sentences starting with a subject | | subjectCount | 52 | | totalSentences | 64 | | matches | | 0 | "Rain had turned Soho into" | | 1 | "Her closely cropped salt-and-pepper hair" | | 2 | "The green neon sign of" | | 3 | "She kept to the shadow" | | 4 | "The clique was moving." | | 5 | "The door to the Nest" | | 6 | "The man was young, wiry," | | 7 | "Quinn recognized the cut of" | | 8 | "She didn’t chase immediately." | | 9 | "She let him take three" | | 10 | "Her boots struck the cobblestones" | | 11 | "The chase carved through the" | | 12 | "The runner turned north. Camden." | | 13 | "Quinn’s heart ticked up a" | | 14 | "The runner reached the service" | | 15 | "Quinn slowed to a walk" | | 16 | "She looked at the token" | | 17 | "Quinn pushed the gate wider" | | 18 | "The descent was a stairwell" | | 19 | "The Veil Market stretched along" |
| | ratio | 0.813 | |
| 0.00% | Subordinate conjunction sentence starts | Target: ≥2% sentences starting with a subordinating conjunction | | subConjCount | 0 | | totalSentences | 64 | | matches | (empty) | | ratio | 0 | |
| 46.33% | Technical jargon density | Target: ≤6% sentences with technical-jargon patterns | | analyzedSentences | 37 | | technicalSentenceCount | 5 | | matches | | 0 | "Quinn recognized the cut of his shoulders, the way he scanned the street before stepping out—precisely the kind of paranoia that made her job easier." | | 1 | "The chase carved through the narrow arteries of Soho—past dumpsters reeking of fish and wine, under scaffolding that dripped cold water onto her shoulders, arou…" | | 2 | "Quinn’s heart ticked up a notch. If he was heading for the station, he knew the old routes. The abandoned Tube entrance beneath Camden wasn’t marked on any tour…" | | 3 | "The Veil Market stretched along the tracks in both directions, a carnival of shadows erected in the bones of the Underground. Stalls of black wood and tarnished…" | | 4 | "She spotted the white jacket first—her runner, ducking between stalls near a vendor selling what looked like teeth arranged by size. Quinn moved faster, threadi…" |
| |
| 100.00% | Useless dialogue additions | Target: ≤5% dialogue tags with trailing filler fragments | | totalTags | 8 | | uselessAdditionCount | 0 | | matches | (empty) | |
| 100.00% | Dialogue tag variety (said vs. fancy) | Target: ≤10% fancy dialogue tags | | totalTags | 4 | | fancyCount | 0 | | fancyTags | (empty) | | dialogueSentences | 15 | | tagDensity | 0.267 | | leniency | 0.533 | | rawRatio | 0 | | effectiveRatio | 0 | |