| 100.00% | Adverbs in dialogue tags | Target: ≤10% dialogue tags with adverbs | | totalTags | 8 | | adverbTagCount | 1 | | adverbTags | | 0 | "The words landed like [like]" |
| | dialogueSentences | 25 | | tagDensity | 0.32 | | leniency | 0.64 | | rawRatio | 0.125 | | effectiveRatio | 0.08 | |
| 96.96% | AI-ism adverb frequency | Target: <2% AI-ism adverbs (58 tracked) | | wordCount | 1645 | | 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) | |
| 60.49% | AI-ism word frequency | Target: <2% AI-ism words (290 tracked) | | wordCount | 1645 | | totalAiIsms | 13 | | found | | | highlights | | 0 | "reminder" | | 1 | "warmth" | | 2 | "weight" | | 3 | "familiar" | | 4 | "gloom" | | 5 | "etched" | | 6 | "dancing" | | 7 | "trembled" |
| |
| 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 | 129 | | matches | (empty) | |
| 100.00% | Filter word density | Target: ≤3% sentences with filter/hedge words | | filterCount | 2 | | hedgeCount | 0 | | narrationSentences | 129 | | filterMatches | | | hedgeMatches | (empty) | |
| 100.00% | Gibberish response detection | Target: ≤1% gibberish-like sentences (hard fail if a sentence exceeds 800 words) | | analyzedSentences | 148 | | gibberishSentences | 0 | | adjustedGibberishSentences | 0 | | longSentenceCount | 0 | | runOnParagraphCount | 0 | | giantParagraphCount | 0 | | wordSaladCount | 0 | | repetitionLoopCount | 0 | | controlTokenCount | 0 | | maxSentenceWordsSeen | 45 | | ratio | 0 | | matches | (empty) | |
| 100.00% | Markdown formatting overuse | Target: ≤5% words in markdown formatting | | markdownSpans | 3 | | markdownWords | 3 | | totalWords | 1625 | | ratio | 0.002 | | matches | | 0 | "Partner." | | 1 | "Veil." | | 2 | "Veil" |
| |
| 100.00% | Missing dialogue indicators (quotation marks) | Target: ≤10% speech attributions without quotation marks | | totalAttributions | 14 | | unquotedAttributions | 0 | | matches | (empty) | |
| 83.33% | Name drop frequency | Target: ≤1.0 per-name mentions per 100 words | | totalMentions | 55 | | wordCount | 1320 | | uniqueNames | 16 | | maxNameDensity | 1.29 | | worstName | "Smith" | | maxWindowNameDensity | 2.5 | | worstWindowName | "Quinn" | | discoveredNames | | Quinn | 15 | | Tube | 1 | | Art | 1 | | Deco | 1 | | Smith | 17 | | Seaside | 1 | | Way | 1 | | Eva | 7 | | Celtic | 1 | | Morris | 2 | | Polaroid | 1 | | Port | 1 | | London | 1 | | Authority | 1 | | Veil | 3 | | Market | 1 |
| | persons | | 0 | "Quinn" | | 1 | "Art" | | 2 | "Deco" | | 3 | "Smith" | | 4 | "Eva" | | 5 | "Morris" | | 6 | "Veil" | | 7 | "Market" |
| | places | | 0 | "Seaside" | | 1 | "Way" | | 2 | "Celtic" | | 3 | "London" |
| | globalScore | 0.856 | | windowScore | 0.833 | |
| 95.65% | Narrator intent-glossing | Target: ≤2% narration sentences with intent-glossing patterns | | analyzedSentences | 92 | | glossingSentenceCount | 2 | | matches | | 0 | "looked like he’d aged nine years inside s" | | 1 | "quite dried, a single word: *Veil" |
| |
| 100.00% | "Not X but Y" pattern overuse | Target: ≤1 "not X but Y" per 1000 words | | totalMatches | 1 | | per1kWords | 0.615 | | wordCount | 1625 | | matches | | 0 | "not the dull brick of an abandoned Tube but the slick throat of a long-sealed platform, its tiles patter" |
| |
| 100.00% | Overuse of "that" (subordinate clause padding) | Target: ≤2% sentences with "that" clauses | | thatCount | 0 | | totalSentences | 148 | | matches | (empty) | |
| 100.00% | Paragraph length variance | Target: CV ≥0.5 for paragraph word counts | | totalParagraphs | 43 | | mean | 37.79 | | std | 29.17 | | cv | 0.772 | | sampleLengths | | 0 | 114 | | 1 | 1 | | 2 | 62 | | 3 | 10 | | 4 | 98 | | 5 | 12 | | 6 | 36 | | 7 | 24 | | 8 | 8 | | 9 | 65 | | 10 | 12 | | 11 | 51 | | 12 | 8 | | 13 | 50 | | 14 | 8 | | 15 | 46 | | 16 | 57 | | 17 | 50 | | 18 | 42 | | 19 | 115 | | 20 | 5 | | 21 | 31 | | 22 | 24 | | 23 | 82 | | 24 | 59 | | 25 | 10 | | 26 | 61 | | 27 | 34 | | 28 | 19 | | 29 | 60 | | 30 | 18 | | 31 | 59 | | 32 | 49 | | 33 | 11 | | 34 | 16 | | 35 | 29 | | 36 | 14 | | 37 | 18 | | 38 | 61 | | 39 | 65 | | 40 | 10 | | 41 | 10 | | 42 | 11 |
| |
| 99.82% | Passive voice overuse | Target: ≤2% passive sentences | | passiveCount | 2 | | totalSentences | 129 | | matches | | 0 | "been breached" | | 1 | "been worn" |
| |
| 78.79% | Past progressive (was/were + -ing) overuse | Target: ≤2% past progressive verbs | | pastProgressiveCount | 4 | | totalVerbs | 220 | | matches | | 0 | "was already moving" | | 1 | "was cooling" | | 2 | "wasn’t coming" | | 3 | "was coming" |
| |
| 0.00% | Em-dash & semicolon overuse | Target: ≤2% sentences with em-dashes/semicolons | | emDashCount | 18 | | semicolonCount | 4 | | flaggedSentences | 20 | | totalSentences | 148 | | ratio | 0.135 | | matches | | 0 | "Above her, the skittering began—dry teeth of rats chewing cable or ambition, it sounded the same these days." | | 1 | "She registered the cautious pride under the exhaustion; Smith had been on a week’s enforced leave after the chem spill at Seaside Way, and he looked like he’d aged nine years inside seven days." | | 2 | "Between their booth legs, a silver wristwatch winked—its face the wrong way round, minute hand chewing eleven instead of eleven-oh-five." | | 3 | "She kept the question light, but the bench’s shape under the coats was wrong—two dimples for hands, one deep crater where legs should bow." | | 4 | "*Partner.* The word tasted bitter, metallic—the same flavour as the iron in the air." | | 5 | "A single slipper lay canted against the wall, its heel sheared off—narrow, delicate." | | 6 | "She held her palm a finger’s width above the throat; the skin that had been warm was cooling fast." | | 7 | "She’d seen cadavers reheat after submersion; the cold would leave, just a little, then slam back like a train." | | 8 | "The face markings thrummed faintly under Quinn’s fingertips—protective sigils etched too precise for a market knock-off." | | 9 | "Smith’s torch beam found a second object half buried beneath the bench—a slim leather satchel, peach-coloured leather stamped with an academic crest Quinn recognised instantly." | | 10 | "A sheaf of notes cascaded—pages torn from a ledger, margins crowded with symbols in Eva’s looping hand." | | 11 | "One had bright red hair in wild curls; the other wore round spectacles that caught the light like twin moons." | | 12 | "The photo’s edge showed a date stamp—yesterday." | | 13 | "Deliberate—like a chessboard someone had flipped while the players blinked." | | 14 | "Next to each, a single symbol—mirror-sigils again." | | 15 | "She now had two pieces of the puzzle: Eva’s satchel, full of research into something that didn’t want to be researched, and Morris’s last case notes—torn pages hidden in the museum vault, each bearing the same ‘Veil’ mark, each name circled in red ink." | | 16 | "The stone had been worn smooth, as though many feet—many trainers—had pounded down and back over years uncounted." | | 17 | "Not light—memory." | | 18 | "Somewhere ahead, a ticking began—steady as a metronome, slowing, then speeding up." | | 19 | "The compass needle spun wildly, then locked onto a new heading—straight ahead into the earth." |
| |
| 100.00% | Purple prose (modifier overload) | Target: <4% adverbs, <2% -ly adverbs, no adj stacking | | wordCount | 427 | | adjectiveStacks | 0 | | stackExamples | (empty) | | adverbCount | 10 | | adverbRatio | 0.0234192037470726 | | lyAdverbCount | 2 | | lyAdverbRatio | 0.00468384074941452 | |
| 100.00% | Repeated phrase echo | Target: ≤20% sentences with echoes (window: 2) | | totalSentences | 148 | | echoCount | 0 | | echoWords | (empty) | |
| 100.00% | Sentence length variance | Target: CV ≥0.4 for sentence word counts | | totalSentences | 148 | | mean | 10.98 | | std | 7.81 | | cv | 0.712 | | sampleLengths | | 0 | 7 | | 1 | 3 | | 2 | 21 | | 3 | 29 | | 4 | 13 | | 5 | 18 | | 6 | 10 | | 7 | 1 | | 8 | 6 | | 9 | 6 | | 10 | 1 | | 11 | 15 | | 12 | 34 | | 13 | 13 | | 14 | 10 | | 15 | 6 | | 16 | 14 | | 17 | 40 | | 18 | 18 | | 19 | 20 | | 20 | 12 | | 21 | 4 | | 22 | 16 | | 23 | 5 | | 24 | 4 | | 25 | 3 | | 26 | 4 | | 27 | 4 | | 28 | 20 | | 29 | 8 | | 30 | 24 | | 31 | 16 | | 32 | 6 | | 33 | 6 | | 34 | 13 | | 35 | 3 | | 36 | 9 | | 37 | 10 | | 38 | 12 | | 39 | 20 | | 40 | 9 | | 41 | 5 | | 42 | 3 | | 43 | 8 | | 44 | 28 | | 45 | 14 | | 46 | 3 | | 47 | 5 | | 48 | 3 | | 49 | 14 |
| |
| 59.23% | Sentence opener variety | Target: ≥60% unique sentence openers | | consecutiveRepeats | 9 | | diversityRatio | 0.3918918918918919 | | totalSentences | 148 | | uniqueOpeners | 58 | |
| 54.20% | Adverb-first sentence starts | Target: ≥3% sentences starting with an adverb | | adverbCount | 2 | | totalSentences | 123 | | matches | | 0 | "Then the next." | | 1 | "Somewhere ahead, a ticking began—steady" |
| | ratio | 0.016 | |
| 100.00% | Pronoun-first sentence starts | Target: ≤30% sentences starting with a pronoun | | pronounCount | 32 | | totalSentences | 123 | | matches | | 0 | "She didn’t flinch." | | 1 | "She crouched, fingers brushing the" | | 2 | "She registered the cautious pride" | | 3 | "She didn’t wait for his" | | 4 | "She angled it down the" | | 5 | "She was already moving." | | 6 | "She kept the question light," | | 7 | "He never did when the" | | 8 | "She nudged a sodden overcoat" | | 9 | "She circled the bench, letting" | | 10 | "She held her palm a" | | 11 | "She’d seen cadavers reheat after" | | 12 | "She knelt, lifted the overcoat" | | 13 | "She upended the satchel with" | | 14 | "It showed three women standing" | | 15 | "She kept her voice silky" | | 16 | "She walked three paces down" | | 17 | "She dropped to one knee" | | 18 | "She pressed her palm flat." | | 19 | "She didn’t look up." |
| | ratio | 0.26 | |
| 65.69% | Subject-first sentence starts | Target: ≤72% sentences starting with a subject | | subjectCount | 97 | | totalSentences | 123 | | matches | | 0 | "The cordon tape snapped under" | | 1 | "She didn’t flinch." | | 2 | "The plastic ripped with a" | | 3 | "The tunnel yawned dark ahead," | | 4 | "She crouched, fingers brushing the" | | 5 | "Smith’s voice hit her eardrums" | | 6 | "She registered the cautious pride" | | 7 | "The flesh under his eyes" | | 8 | "She didn’t wait for his" | | 9 | "The torch rode the curve" | | 10 | "She angled it down the" | | 11 | "She was already moving." | | 12 | "The torch beam etched the" | | 13 | "A gateway, maybe." | | 14 | "A joke, more likely." | | 15 | "Smith followed, boots scuffing." | | 16 | "She kept the question light," | | 17 | "A couple of nights ago," | | 18 | "These had already surrendered their" | | 19 | "The legs beneath were skeletal" |
| | ratio | 0.789 | |
| 0.00% | Subordinate conjunction sentence starts | Target: ≥2% sentences starting with a subordinating conjunction | | subConjCount | 0 | | totalSentences | 123 | | matches | (empty) | | ratio | 0 | |
| 90.91% | Technical jargon density | Target: ≤6% sentences with technical-jargon patterns | | analyzedSentences | 55 | | technicalSentenceCount | 4 | | matches | | 0 | "The torch beam etched the tunnel walls with graffiti that wasn’t paint: sigils scraped into grime." | | 1 | "Eyes absent, but the freckles remained, dancing across a nose that had known too many winters and not enough sunblock." | | 2 | "One had bright red hair in wild curls; the other wore round spectacles that caught the light like twin moons." | | 3 | "The stone had been worn smooth, as though many feet—many trainers—had pounded down and back over years uncounted." |
| |
| 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 | |