| 100.00% | Adverbs in dialogue tags | Target: ≤10% dialogue tags with adverbs | |
| 97.13% | AI-ism adverb frequency | Target: <2% AI-ism adverbs (58 tracked) | | wordCount | 1743 | | 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) | |
| 74.18% | AI-ism word frequency | Target: <2% AI-ism words (290 tracked) | | wordCount | 1743 | | totalAiIsms | 9 | | found | | | highlights | | 0 | "measured" | | 1 | "ensuring" | | 2 | "etched" | | 3 | "weight" | | 4 | "raced" | | 5 | "disrupted" | | 6 | "firmly" | | 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 | 100 | | matches | (empty) | |
| 100.00% | Filter word density | Target: ≤3% sentences with filter/hedge words | | filterCount | 2 | | hedgeCount | 0 | | narrationSentences | 100 | | filterMatches | | | hedgeMatches | (empty) | |
| 100.00% | Gibberish response detection | Target: ≤1% gibberish-like sentences (hard fail if a sentence exceeds 800 words) | | analyzedSentences | 100 | | gibberishSentences | 0 | | adjustedGibberishSentences | 0 | | longSentenceCount | 0 | | runOnParagraphCount | 0 | | giantParagraphCount | 0 | | wordSaladCount | 0 | | repetitionLoopCount | 0 | | controlTokenCount | 0 | | maxSentenceWordsSeen | 57 | | ratio | 0 | | matches | (empty) | |
| 100.00% | Markdown formatting overuse | Target: ≤5% words in markdown formatting | | markdownSpans | 0 | | markdownWords | 0 | | totalWords | 1707 | | ratio | 0 | | matches | (empty) | |
| 100.00% | Missing dialogue indicators (quotation marks) | Target: ≤10% speech attributions without quotation marks | | totalAttributions | 8 | | unquotedAttributions | 0 | | matches | (empty) | |
| 100.00% | Name drop frequency | Target: ≤1.0 per-name mentions per 100 words | | totalMentions | 59 | | wordCount | 1707 | | uniqueNames | 20 | | maxNameDensity | 0.82 | | worstName | "Eva" | | maxWindowNameDensity | 2 | | worstWindowName | "Eva" | | discoveredNames | | Tube | 1 | | Veil | 3 | | Market | 2 | | Eva | 14 | | Compass | 1 | | Metropolitan | 1 | | Police | 1 | | Kowalski | 1 | | Harlow | 14 | | Ancient | 1 | | History | 1 | | Oxford | 1 | | British | 1 | | Museum | 1 | | Shade | 5 | | Morris | 1 | | Rift | 1 | | King | 3 | | Cross | 3 | | You | 3 |
| | persons | | 0 | "Market" | | 1 | "Eva" | | 2 | "Compass" | | 3 | "Police" | | 4 | "Kowalski" | | 5 | "Harlow" | | 6 | "Museum" | | 7 | "Morris" | | 8 | "King" | | 9 | "Cross" | | 10 | "You" |
| | places | | 0 | "Veil" | | 1 | "Ancient" | | 2 | "Oxford" | | 3 | "British" |
| | globalScore | 1 | | windowScore | 1 | |
| 100.00% | Narrator intent-glossing | Target: ≤2% narration sentences with intent-glossing patterns | | analyzedSentences | 86 | | glossingSentenceCount | 0 | | matches | (empty) | |
| 100.00% | "Not X but Y" pattern overuse | Target: ≤1 "not X but Y" per 1000 words | | totalMatches | 0 | | per1kWords | 0 | | wordCount | 1707 | | matches | (empty) | |
| 100.00% | Overuse of "that" (subordinate clause padding) | Target: ≤2% sentences with "that" clauses | | thatCount | 0 | | totalSentences | 100 | | matches | (empty) | |
| 100.00% | Paragraph length variance | Target: CV ≥0.5 for paragraph word counts | | totalParagraphs | 40 | | mean | 42.68 | | std | 33.55 | | cv | 0.786 | | sampleLengths | | 0 | 152 | | 1 | 87 | | 2 | 86 | | 3 | 12 | | 4 | 112 | | 5 | 6 | | 6 | 49 | | 7 | 15 | | 8 | 33 | | 9 | 72 | | 10 | 2 | | 11 | 13 | | 12 | 48 | | 13 | 68 | | 14 | 5 | | 15 | 21 | | 16 | 42 | | 17 | 71 | | 18 | 11 | | 19 | 14 | | 20 | 19 | | 21 | 42 | | 22 | 66 | | 23 | 63 | | 24 | 61 | | 25 | 5 | | 26 | 39 | | 27 | 1 | | 28 | 33 | | 29 | 38 | | 30 | 31 | | 31 | 54 | | 32 | 20 | | 33 | 45 | | 34 | 59 | | 35 | 34 | | 36 | 27 | | 37 | 13 | | 38 | 25 | | 39 | 113 |
| |
| 91.23% | Passive voice overuse | Target: ≤2% passive sentences | | passiveCount | 4 | | totalSentences | 100 | | matches | | 0 | "is forged" | | 1 | "been tampered" | | 2 | "was faded" | | 3 | "carved" |
| |
| 100.00% | Past progressive (was/were + -ing) overuse | Target: ≤2% past progressive verbs | | pastProgressiveCount | 2 | | totalVerbs | 289 | | matches | | 0 | "was trying" | | 1 | "was using" |
| |
| 0.00% | Em-dash & semicolon overuse | Target: ≤2% sentences with em-dashes/semicolons | | emDashCount | 23 | | semicolonCount | 2 | | flaggedSentences | 25 | | totalSentences | 100 | | ratio | 0.25 | | matches | | 0 | "The tunnel mouth’s metal grate whined shut behind her—she’d jammed it with a loose brick to block unauthorized entry, her military precision ensuring the brick fit snugly enough to resist prying hands." | | 1 | "Her closely cropped salt-and-pepper hair caught the glow of her torch; the beam cut through a haze of burnt sage and mildew that clung to the air like a second skin." | | 2 | "She’d gotten the bone token (the Veil Market’s non-negotiable entry requirement) from the crime scene’s initial sweep—clutched in a dead man’s discarded wool glove by the tunnel entrance, its surface carved with a tiny raven sigil she’d yet to place." | | 3 | "Two hours past the market’s usual post-full-moon evacuation, the station hummed with a faint, unidentifiable energy; she’d felt it prick at her neck the moment she stepped through the grate." | | 4 | "It slumped against a splintered vendor’s stall stacked with dried mandrake roots, rolled sheets of sigil-etched parchment, and three vials of glowing blue liquid—banned alchemical substances she’d read about in Eva’s restricted archive reports." | | 5 | "She’d dismissed the notes then, writing off the Veil Compass as a myth concocted by occult enthusiasts—now, it sat heavy in her mind, a piece of evidence that defied every logical explanation she’d honed over 18 years of decorated Metropolitan Police service." | | 6 | "She’d arrived 20 minutes before Harlow, summoned by a frantic radio call Harlow had made after spotting the compass—her master’s degree in Ancient History from Oxford and access to the British Museum’s restricted archives made her the only occult researcher she could trust, even if she still bristled at the thought of leaning on supernatural explanations." | | 7 | "She’d already patted down the man’s coat pockets—empty, save for a crumpled train ticket dated the previous full moon, a pack of half-smoked cigarettes, and a folded receipt for mandrake roots from a market vendor she’d never heard of." | | 8 | "I’ve seen their logs—no one slips through without a token." | | 9 | "A faint scratch marred one of the swirling sigils on its face—she’d missed it in the initial glance, her focus fixed on the man’s unmarked throat." | | 10 | "Eva leaned in, her hair falling forward again—she tucked another strand behind her ear before gesturing at the scratch with a page from her book." | | 11 | "They’re impossible to scratch accidentally—Shade metalwork is forged to resist blades and blunt force." | | 12 | "It’s supposed to point to the nearest supernatural rift or portal—Shade artisans craft them to lead users to hidden energy pockets." | | 13 | "A small gap showed between the back panel and the frame, so faint she’d missed it in her initial sweep—she’d focused on the body and the compass, relying on her usual criminal investigation tactics instead of accounting for the market’s supernatural rules." | | 14 | "The market’s vendors hide their most valuable goods from casual thieves—enchanted tools, restricted information, even maps of hidden rifts." | | 15 | "The date at the bottom matched the train ticket in the man’s pocket—three nights prior, the night of the last full moon." | | 16 | "The man hadn’t been a random victim—he’d been a whistleblower, hiding the rift’s location to warn someone before his attacker silenced him." | | 17 | "The tamperer wouldn’t want anyone to find the rift—they’d scratch the compass to cause a backlash, knowing it would kill him without leaving a trace." | | 18 | "The Shade artisan’s compasses have a built-in defense—tamper with a protective sigil, and the compass’s energy rebounds, draining the user’s life force in seconds." | | 19 | "I’ve read about it in the restricted archives—three other cases in the last decade, all linked to the Veil Market." | | 20 | "Harlow flipped her wrist to check her worn leather watch—midnight was in two hours." | | 21 | "The note, the second bone token—he hid them so the tamperer couldn’t find them." | | 22 | "Eva tucked another strand of hair behind her ear, her glasses slipping down her nose as she pushed them back with a steady hand—no more nervous trembling, a sign she’d gained confidence in her deduction." | | 23 | "I didn’t believe you before—about the supernatural, about the compasses, about the rifts." | | 24 | "She’d need to retrieve the first bone token from the wool glove by the entrance—she’d need it to exit the station without triggering the market’s hidden defenses, which Eva had warned could trap intruders in a supernatural loop for days." |
| |
| 88.00% | Purple prose (modifier overload) | Target: <4% adverbs, <2% -ly adverbs, no adj stacking | | wordCount | 1743 | | adjectiveStacks | 2 | | stackExamples | | 0 | "usual post-full-moon" | | 1 | "no more nervous trembling," |
| | adverbCount | 41 | | adverbRatio | 0.023522662076878944 | | lyAdverbCount | 12 | | lyAdverbRatio | 0.0068846815834767644 | |
| 100.00% | Repeated phrase echo | Target: ≤20% sentences with echoes (window: 2) | | totalSentences | 100 | | echoCount | 0 | | echoWords | (empty) | |
| 100.00% | Sentence length variance | Target: CV ≥0.4 for sentence word counts | | totalSentences | 100 | | mean | 17.07 | | std | 11.15 | | cv | 0.653 | | sampleLengths | | 0 | 19 | | 1 | 32 | | 2 | 31 | | 3 | 40 | | 4 | 30 | | 5 | 5 | | 6 | 34 | | 7 | 13 | | 8 | 8 | | 9 | 7 | | 10 | 20 | | 11 | 7 | | 12 | 37 | | 13 | 42 | | 14 | 5 | | 15 | 7 | | 16 | 18 | | 17 | 38 | | 18 | 56 | | 19 | 6 | | 20 | 10 | | 21 | 39 | | 22 | 6 | | 23 | 2 | | 24 | 7 | | 25 | 23 | | 26 | 10 | | 27 | 13 | | 28 | 20 | | 29 | 13 | | 30 | 26 | | 31 | 2 | | 32 | 13 | | 33 | 25 | | 34 | 9 | | 35 | 14 | | 36 | 3 | | 37 | 29 | | 38 | 19 | | 39 | 17 | | 40 | 3 | | 41 | 2 | | 42 | 21 | | 43 | 12 | | 44 | 21 | | 45 | 9 | | 46 | 14 | | 47 | 15 | | 48 | 42 | | 49 | 5 |
| |
| 42.00% | Sentence opener variety | Target: ≥60% unique sentence openers | | consecutiveRepeats | 8 | | diversityRatio | 0.23 | | totalSentences | 100 | | uniqueOpeners | 23 | |
| 0.00% | Adverb-first sentence starts | Target: ≥3% sentences starting with an adverb | | adverbCount | 0 | | totalSentences | 96 | | matches | (empty) | | ratio | 0 | |
| 49.17% | Pronoun-first sentence starts | Target: ≤30% sentences starting with a pronoun | | pronounCount | 41 | | totalSentences | 96 | | matches | | 0 | "Her closely cropped salt-and-pepper hair" | | 1 | "She’d gotten the bone token" | | 2 | "She spotted the body first." | | 3 | "It slumped against a splintered" | | 4 | "Her torch beam settled on" | | 5 | "She’d dismissed the notes then," | | 6 | "She snapped her torch to" | | 7 | "She tucked a strand behind" | | 8 | "She’d arrived 20 minutes before" | | 9 | "She’d already patted down the" | | 10 | "You need one to get" | | 11 | "I’ve seen their logs—no one" | | 12 | "She knelt beside the body," | | 13 | "Its weight was heavier than" | | 14 | "She held the compass up" | | 15 | "They’re impossible to scratch accidentally—Shade" | | 16 | "She’d lost her partner, DS" | | 17 | "She’d dismissed the supernatural whispers" | | 18 | "She held the compass up" | | 19 | "It’s supposed to point to" |
| | ratio | 0.427 | |
| 17.29% | Subject-first sentence starts | Target: ≤72% sentences starting with a subject | | subjectCount | 85 | | totalSentences | 96 | | matches | | 0 | "Harlow’s boots thudded against damp" | | 1 | "The tunnel mouth’s metal grate" | | 2 | "Her closely cropped salt-and-pepper hair" | | 3 | "She’d gotten the bone token" | | 4 | "She spotted the body first." | | 5 | "It slumped against a splintered" | | 6 | "The man’s face was slack," | | 7 | "Her torch beam settled on" | | 8 | "A small brass compass, its" | | 9 | "She’d dismissed the notes then," | | 10 | "A movement caught her eye." | | 11 | "She snapped her torch to" | | 12 | "Eva Kowalski crouched by the" | | 13 | "She tucked a strand behind" | | 14 | "She’d arrived 20 minutes before" | | 15 | "Harlow’s fingers curled around her" | | 16 | "She’d already patted down the" | | 17 | "You need one to get" | | 18 | "The market’s guards check every" | | 19 | "Eva’s voice carried a faint" |
| | ratio | 0.885 | |
| 100.00% | Subordinate conjunction sentence starts | Target: ≥2% sentences starting with a subordinating conjunction | | subConjCount | 2 | | totalSentences | 96 | | matches | | 0 | "Now, the pieces tugged at" | | 1 | "Now, with the compass in" |
| | ratio | 0.021 | |
| 82.49% | Technical jargon density | Target: ≤6% sentences with technical-jargon patterns | | analyzedSentences | 71 | | technicalSentenceCount | 6 | | matches | | 0 | "Her closely cropped salt-and-pepper hair caught the glow of her torch; the beam cut through a haze of burnt sage and mildew that clung to the air like a second …" | | 1 | "A small brass compass, its casing coated in a patina of verdigris that dulled its shine, its face etched with swirling protective sigils she’d glimpsed once in …" | | 2 | "She’d dismissed the notes then, writing off the Veil Compass as a myth concocted by occult enthusiasts—now, it sat heavy in her mind, a piece of evidence that d…" | | 3 | "Eva leaned in, her hair falling forward again—she tucked another strand behind her ear before gesturing at the scratch with a page from her book." | | 4 | "She’d lost her partner, DS Morris, three years prior to an unexplained incident that left his body unmarked, his eyes staring blankly at the ceiling just like t…" | | 5 | "She held the compass up to her torch, watching the tiny black needle whirl in circles, never settling on a direction." |
| |
| 100.00% | Useless dialogue additions | Target: ≤5% dialogue tags with trailing filler fragments | | totalTags | 0 | | uselessAdditionCount | 0 | | matches | (empty) | |
| 100.00% | Dialogue tag variety (said vs. fancy) | Target: ≤10% fancy dialogue tags | |