| 100.00% | Adverbs in dialogue tags | Target: ≤10% dialogue tags with adverbs | | totalTags | 4 | | adverbTagCount | 0 | | adverbTags | (empty) | | dialogueSentences | 7 | | tagDensity | 0.571 | | leniency | 1 | | rawRatio | 0 | | effectiveRatio | 0 | |
| 93.88% | AI-ism adverb frequency | Target: <2% AI-ism adverbs (58 tracked) | | wordCount | 1633 | | 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) | |
| 90.81% | AI-ism word frequency | Target: <2% AI-ism words (290 tracked) | | wordCount | 1633 | | totalAiIsms | 3 | | found | | | highlights | | 0 | "flickered" | | 1 | "crystal" | | 2 | "could feel" |
| |
| 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 | 1 | | hedgeCount | 1 | | narrationSentences | 100 | | filterMatches | | | hedgeMatches | | |
| 100.00% | Gibberish response detection | Target: ≤1% gibberish-like sentences (hard fail if a sentence exceeds 800 words) | | analyzedSentences | 103 | | gibberishSentences | 0 | | adjustedGibberishSentences | 0 | | longSentenceCount | 0 | | runOnParagraphCount | 0 | | giantParagraphCount | 0 | | wordSaladCount | 0 | | repetitionLoopCount | 0 | | controlTokenCount | 0 | | repeatedSegmentCount | 0 | | maxSentenceWordsSeen | 76 | | ratio | 0 | | matches | (empty) | |
| 100.00% | Markdown formatting overuse | Target: ≤5% words in markdown formatting | | markdownSpans | 2 | | markdownWords | 2 | | totalWords | 1621 | | ratio | 0.001 | | matches | | 0 | "unexplained" | | 1 | "unexplained" |
| |
| 100.00% | Missing dialogue indicators (quotation marks) | Target: ≤10% speech attributions without quotation marks | | totalAttributions | 5 | | unquotedAttributions | 0 | | matches | (empty) | |
| 100.00% | Name drop frequency | Target: ≤1.0 per-name mentions per 100 words | | totalMentions | 47 | | wordCount | 1600 | | uniqueNames | 31 | | maxNameDensity | 0.69 | | worstName | "Harlow" | | maxWindowNameDensity | 1.5 | | worstWindowName | "Harlow" | | discoveredNames | | Detective | 1 | | Harlow | 11 | | Quinn | 1 | | Raven | 1 | | Nest | 1 | | Vauxhall | 1 | | Soho | 1 | | Thursdays | 1 | | Herrera | 6 | | Saint | 1 | | Christopher | 1 | | Gerrard | 1 | | Street | 1 | | Hendon | 1 | | Shaftesbury | 1 | | Avenue | 1 | | Charing | 1 | | Cross | 1 | | Road | 1 | | Regent | 1 | | Canal | 1 | | Morris | 2 | | Camden | 1 | | Town | 1 | | November | 1 | | Land | 1 | | Registry | 1 | | Brand | 1 | | Essence | 1 | | Veil | 1 | | Market | 1 |
| | persons | | 0 | "Harlow" | | 1 | "Quinn" | | 2 | "Raven" | | 3 | "Herrera" | | 4 | "Saint" | | 5 | "Christopher" | | 6 | "Regent" | | 7 | "Morris" | | 8 | "Registry" | | 9 | "Brand" | | 10 | "Market" |
| | places | | 0 | "Vauxhall" | | 1 | "Soho" | | 2 | "Gerrard" | | 3 | "Street" | | 4 | "Hendon" | | 5 | "Shaftesbury" | | 6 | "Avenue" | | 7 | "Charing" | | 8 | "Cross" | | 9 | "Road" | | 10 | "Town" | | 11 | "November" | | 12 | "Land" |
| | globalScore | 1 | | windowScore | 1 | |
| 100.00% | Narrator intent-glossing | Target: ≤2% narration sentences with intent-glossing patterns | | analyzedSentences | 72 | | glossingSentenceCount | 1 | | matches | | 0 | "not quite but an acknowledgement, the way you'd nod to someone stepping onto a bridge in the dark" |
| |
| 76.62% | "Not X but Y" pattern overuse | Target: ≤1 "not X but Y" per 1000 words | | totalMatches | 2 | | per1kWords | 1.234 | | wordCount | 1621 | | matches | | 0 | "not a smile, not quite, but an acknowledgement, the way you'd nod to someone stepping on" | | 1 | "not quite, but an acknowledgement, the way you'd nod to someone stepping on" |
| |
| 100.00% | Overuse of "that" (subordinate clause padding) | Target: ≤2% sentences with "that" clauses | | thatCount | 2 | | totalSentences | 103 | | matches | | 0 | "was that nobody" | | 1 | "knew that the" |
| |
| 100.00% | Paragraph length variance | Target: CV ≥0.5 for paragraph word counts | | totalParagraphs | 34 | | mean | 47.68 | | std | 39.2 | | cv | 0.822 | | sampleLengths | | 0 | 118 | | 1 | 85 | | 2 | 37 | | 3 | 67 | | 4 | 4 | | 5 | 16 | | 6 | 30 | | 7 | 48 | | 8 | 117 | | 9 | 57 | | 10 | 3 | | 11 | 44 | | 12 | 77 | | 13 | 48 | | 14 | 15 | | 15 | 144 | | 16 | 20 | | 17 | 32 | | 18 | 89 | | 19 | 10 | | 20 | 160 | | 21 | 23 | | 22 | 25 | | 23 | 42 | | 24 | 4 | | 25 | 39 | | 26 | 54 | | 27 | 17 | | 28 | 67 | | 29 | 34 | | 30 | 28 | | 31 | 36 | | 32 | 10 | | 33 | 21 |
| |
| 87.72% | Passive voice overuse | Target: ≤2% passive sentences | | passiveCount | 5 | | totalSentences | 100 | | matches | | 0 | "was—sat" | | 1 | "been helped" | | 2 | "was gone" | | 3 | "was pulled" | | 4 | "was padlocked" |
| |
| 57.55% | Past progressive (was/were + -ing) overuse | Target: ≤2% past progressive verbs | | pastProgressiveCount | 5 | | totalVerbs | 234 | | matches | | 0 | "was driving" | | 1 | "was heading" | | 2 | "was walking" | | 3 | "was still dripping" | | 4 | "was disappearing" |
| |
| 0.00% | Em-dash & semicolon overuse | Target: ≤2% sentences with em-dashes/semicolons | | emDashCount | 12 | | semicolonCount | 0 | | flaggedSentences | 9 | | totalSentences | 103 | | ratio | 0.087 | | matches | | 0 | "Her father's watch—worn leather, cracked crystal, forty years older than she was—sat heavy on her left wrist." | | 1 | "He stepped out into the alley now, hood up, bag over one shoulder, and the light caught something at his throat—a small silver medallion on a chain, Saint Christopher, the patron of travellers, swinging as he walked." | | 2 | "Their eyes met for a quarter second—his warm brown, widening, doing the arithmetic—and then he ran." | | 3 | "The rain made everything a smear of refracted colour—red bus, white headlights, the pink of a chicken shop sign—and Herrera was a dark shape cutting through all of it, faster than a man with a canvas bag should be." | | 4 | "She had four inches and fifteen years of chasing people who didn't want to be caught, and she closed the gap on Charing Cross Road, close enough to hear him breathing, close enough to see the scar along his left forearm where the sleeve had ridden up—a pale rope of tissue from wrist to elbow, the kind of scar that came from holding your arm up while someone with a knife tried to open it." | | 5 | "He was thirty feet ahead, heading north along the canal, and she could see now where he was heading, because she knew this stretch, she'd walked it after Morris died, the way you do when you can't sleep and you need somewhere that belongs to nobody—the disused entrance to what had been Camden Town's second station, sealed with wooden hoarding since before she was born, and the hoarding was pulled back." | | 6 | "Beyond it was a doorway with a metal grille, and the grille was padlocked—but the padlock hung open, loose, recently oiled." | | 7 | "The warrant card, useless—no jurisdiction in a place that wasn't on a map." | | 8 | "The corner of her mouth moved—not a smile, not quite, but an acknowledgement, the way you'd nod to someone stepping onto a bridge in the dark." |
| |
| 100.00% | Purple prose (modifier overload) | Target: <4% adverbs, <2% -ly adverbs, no adj stacking | | wordCount | 1617 | | adjectiveStacks | 0 | | stackExamples | (empty) | | adverbCount | 34 | | adverbRatio | 0.021026592455163882 | | lyAdverbCount | 7 | | lyAdverbRatio | 0.004329004329004329 | |
| 100.00% | Repeated phrase echo | Target: ≤20% sentences with echoes (window: 2) | | totalSentences | 103 | | echoCount | 0 | | echoWords | (empty) | |
| 100.00% | Sentence length variance | Target: CV ≥0.4 for sentence word counts | | totalSentences | 103 | | mean | 15.74 | | std | 15.4 | | cv | 0.979 | | sampleLengths | | 0 | 23 | | 1 | 40 | | 2 | 32 | | 3 | 17 | | 4 | 2 | | 5 | 4 | | 6 | 8 | | 7 | 7 | | 8 | 35 | | 9 | 2 | | 10 | 1 | | 11 | 32 | | 12 | 37 | | 13 | 11 | | 14 | 10 | | 15 | 46 | | 16 | 4 | | 17 | 16 | | 18 | 27 | | 19 | 3 | | 20 | 3 | | 21 | 37 | | 22 | 4 | | 23 | 4 | | 24 | 39 | | 25 | 3 | | 26 | 75 | | 27 | 20 | | 28 | 37 | | 29 | 3 | | 30 | 1 | | 31 | 2 | | 32 | 27 | | 33 | 4 | | 34 | 4 | | 35 | 3 | | 36 | 3 | | 37 | 71 | | 38 | 6 | | 39 | 6 | | 40 | 5 | | 41 | 37 | | 42 | 6 | | 43 | 3 | | 44 | 6 | | 45 | 37 | | 46 | 14 | | 47 | 27 | | 48 | 66 | | 49 | 13 |
| |
| 52.10% | Sentence opener variety | Target: ≥60% unique sentence openers | | consecutiveRepeats | 13 | | diversityRatio | 0.3883495145631068 | | totalSentences | 103 | | uniqueOpeners | 40 | |
| 100.00% | Adverb-first sentence starts | Target: ≥3% sentences starting with an adverb | | adverbCount | 5 | | totalSentences | 93 | | matches | | 0 | "Then he cut sideways, into" | | 1 | "Just wide enough for a" | | 2 | "Then he was through the" | | 3 | "Just a fact about the" | | 4 | "Then she crouched, and with" |
| | ratio | 0.054 | |
| 47.96% | Pronoun-first sentence starts | Target: ≤30% sentences starting with a pronoun | | pronounCount | 40 | | totalSentences | 93 | | matches | | 0 | "She kept her hands at" | | 1 | "Her father's watch—worn leather, cracked" | | 2 | "She'd been watching the bar" | | 3 | "He stepped out into the" | | 4 | "She crossed Gerrard Street at" | | 5 | "He turned his head." | | 6 | "Their eyes met for a" | | 7 | "she shouted, and it came" | | 8 | "He didn't stop." | | 9 | "He went left down Shaftesbury" | | 10 | "She didn't hear it." | | 11 | "She was faster." | | 12 | "She had four inches and" | | 13 | "She followed, and the alley" | | 14 | "He was gone." | | 15 | "She vaulted the parapet." | | 16 | "Her knee complained." | | 17 | "She kept running." | | 18 | "He was thirty feet ahead," | | 19 | "She saw the medallion flash." |
| | ratio | 0.43 | |
| 51.40% | Subject-first sentence starts | Target: ≤72% sentences starting with a subject | | subjectCount | 76 | | totalSentences | 93 | | matches | | 0 | "The rain had been falling" | | 1 | "Water sheeted off the green" | | 2 | "She kept her hands at" | | 3 | "Her father's watch—worn leather, cracked" | | 4 | "She'd been watching the bar" | | 5 | "The tall man with the" | | 6 | "He stepped out into the" | | 7 | "Harlow was out of the" | | 8 | "She crossed Gerrard Street at" | | 9 | "He turned his head." | | 10 | "Their eyes met for a" | | 11 | "she shouted, and it came" | | 12 | "He didn't stop." | | 13 | "He went left down Shaftesbury" | | 14 | "Someone swore at her." | | 15 | "She didn't hear it." | | 16 | "The rain made everything a" | | 17 | "She was faster." | | 18 | "She had four inches and" | | 19 | "She followed, and the alley" |
| | ratio | 0.817 | |
| 53.76% | Subordinate conjunction sentence starts | Target: ≥2% sentences starting with a subordinating conjunction | | subConjCount | 1 | | totalSentences | 93 | | matches | | 0 | "Because there was a version" |
| | ratio | 0.011 | |
| 44.82% | Technical jargon density | Target: ≤6% sentences with technical-jargon patterns | | analyzedSentences | 51 | | technicalSentenceCount | 7 | | matches | | 0 | "The tall man with the curly hair came out at the back, never the front, always carrying the same cheap canvas kit bag that paramedics used before the NHS starte…" | | 1 | "Stripped of his licence eighteen months ago for administering treatment he wasn't cleared to administer to patients who, according to the tribunal transcript Ha…" | | 2 | "She crossed Gerrard Street at a walk that wasn't a walk, boots slapping the wet tarmac in a rhythm she'd learned at Hendon and never unlearned, and by the time …" | | 3 | "She had four inches and fifteen years of chasing people who didn't want to be caught, and she closed the gap on Charing Cross Road, close enough to hear him bre…" | | 4 | "Then he was through the gap, and the hoarding settled back into place behind him, and Harlow stood on the towpath with the rain running off her chin and her bre…" | | 5 | "They'd found him on the second floor, at the window, and the pathologist had written the word *unexplained* four times in a two-page report, and the coroner had…" | | 6 | "Every box on every form she'd ever filled would be unticked by the next step she took, and she could feel, standing there on the tiles with the water running of…" |
| |
| 100.00% | Useless dialogue additions | Target: ≤5% dialogue tags with trailing filler fragments | | totalTags | 4 | | uselessAdditionCount | 0 | | matches | (empty) | |
| 7.14% | Dialogue tag variety (said vs. fancy) | Target: ≤10% fancy dialogue tags | | totalTags | 3 | | fancyCount | 1 | | fancyTags | | | dialogueSentences | 7 | | tagDensity | 0.429 | | leniency | 0.857 | | rawRatio | 0.333 | | effectiveRatio | 0.286 | |