| 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 | |
| 100.00% | AI-ism adverb frequency | Target: <2% AI-ism adverbs (58 tracked) | | wordCount | 1354 | | totalAiIsmAdverbs | 0 | | found | (empty) | | highlights | (empty) | |
| 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) | |
| 70.46% | AI-ism word frequency | Target: <2% AI-ism words (290 tracked) | | wordCount | 1354 | | totalAiIsms | 8 | | found | | | highlights | | 0 | "predator" | | 1 | "raced" | | 2 | "weight" | | 3 | "familiar" | | 4 | "glistening" | | 5 | "eyebrow" | | 6 | "lilt" | | 7 | "etched" |
| |
| 100.00% | Cliché density | Target: ≤1 cliche(s) per 800-word window | | totalCliches | 1 | | maxInWindow | 1 | | found | | 0 | | label | "blood ran cold" | | count | 1 |
|
| | highlights | | |
| 100.00% | Emotion telling (show vs. tell) | Target: ≤3% sentences with emotion telling | | emotionTells | 0 | | narrationSentences | 41 | | matches | (empty) | |
| 73.17% | Filter word density | Target: ≤3% sentences with filter/hedge words | | filterCount | 1 | | hedgeCount | 1 | | narrationSentences | 41 | | filterMatches | | | hedgeMatches | | |
| 100.00% | Gibberish response detection | Target: ≤1% gibberish-like sentences (hard fail if a sentence exceeds 800 words) | | analyzedSentences | 44 | | gibberishSentences | 0 | | adjustedGibberishSentences | 0 | | longSentenceCount | 0 | | runOnParagraphCount | 0 | | giantParagraphCount | 0 | | wordSaladCount | 0 | | repetitionLoopCount | 0 | | controlTokenCount | 0 | | maxSentenceWordsSeen | 102 | | ratio | 0 | | matches | (empty) | |
| 100.00% | Markdown formatting overuse | Target: ≤5% words in markdown formatting | | markdownSpans | 0 | | markdownWords | 0 | | totalWords | 1351 | | ratio | 0 | | matches | (empty) | |
| 100.00% | Missing dialogue indicators (quotation marks) | Target: ≤10% speech attributions without quotation marks | | totalAttributions | 10 | | unquotedAttributions | 0 | | matches | (empty) | |
| 83.33% | Name drop frequency | Target: ≤1.0 per-name mentions per 100 words | | totalMentions | 72 | | wordCount | 1172 | | uniqueNames | 35 | | maxNameDensity | 1.19 | | worstName | "Harlow" | | maxWindowNameDensity | 2.5 | | worstWindowName | "Harlow" | | discoveredNames | | London | 3 | | Soho | 1 | | Raven | 1 | | Nest | 2 | | Harlow | 14 | | Quinn | 1 | | Danny | 7 | | Morris | 1 | | Tomás | 8 | | Herrera | 2 | | Berwick | 1 | | Street | 3 | | Metropolitan | 1 | | Police | 1 | | Oxford | 1 | | Tottenham | 1 | | Court | 1 | | Road | 1 | | Met | 1 | | Regent | 1 | | Park | 1 | | Thames | 1 | | Saint | 1 | | Christopher | 1 | | Camden | 2 | | High | 1 | | Chalk | 1 | | Farm | 1 | | Tube | 2 | | Veil | 2 | | Market | 3 | | Seville | 1 | | Cornwall | 1 | | Edinburgh | 1 | | Low | 1 |
| | persons | | 0 | "Raven" | | 1 | "Nest" | | 2 | "Harlow" | | 3 | "Quinn" | | 4 | "Danny" | | 5 | "Morris" | | 6 | "Tomás" | | 7 | "Herrera" | | 8 | "Met" | | 9 | "Park" | | 10 | "Saint" | | 11 | "Christopher" | | 12 | "Market" |
| | places | | 0 | "London" | | 1 | "Soho" | | 2 | "Berwick" | | 3 | "Street" | | 4 | "Oxford" | | 5 | "Tottenham" | | 6 | "Court" | | 7 | "Road" | | 8 | "Regent" | | 9 | "Thames" | | 10 | "Camden" | | 11 | "High" | | 12 | "Chalk" | | 13 | "Farm" | | 14 | "Tube" | | 15 | "Seville" | | 16 | "Cornwall" | | 17 | "Edinburgh" |
| | globalScore | 0.903 | | windowScore | 0.833 | |
| 100.00% | Narrator intent-glossing | Target: ≤2% narration sentences with intent-glossing patterns | | analyzedSentences | 39 | | 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 | 1351 | | matches | (empty) | |
| 15.15% | Overuse of "that" (subordinate clause padding) | Target: ≤2% sentences with "that" clauses | | thatCount | 2 | | totalSentences | 44 | | matches | | 0 | "yelling that she" | | 1 | "take that trip" |
| |
| 19.88% | Paragraph length variance | Target: CV ≥0.5 for paragraph word counts | | totalParagraphs | 9 | | mean | 150.11 | | std | 32.96 | | cv | 0.22 | | sampleLengths | | 0 | 129 | | 1 | 197 | | 2 | 215 | | 3 | 143 | | 4 | 117 | | 5 | 129 | | 6 | 114 | | 7 | 152 | | 8 | 155 |
| |
| 88.15% | Passive voice overuse | Target: ≤2% passive sentences | | passiveCount | 2 | | totalSentences | 41 | | matches | | 0 | "was made" | | 1 | "been sealed" |
| |
| 100.00% | Past progressive (was/were + -ing) overuse | Target: ≤2% past progressive verbs | | pastProgressiveCount | 1 | | totalVerbs | 205 | | matches | | |
| 12.99% | Em-dash & semicolon overuse | Target: ≤2% sentences with em-dashes/semicolons | | emDashCount | 2 | | semicolonCount | 0 | | flaggedSentences | 2 | | totalSentences | 44 | | ratio | 0.045 | | matches | | 0 | "She’d known the risk of tailing him alone, but no one at the precinct would back her play—they thought Danny’s death was a random mugging, a cut-and-dry case she’d dragged out for years out of guilt." | | 1 | "He held up the bone token, his scarred left forearm bared when he lifted his hand, and Harlow’s blood ran cold—his token was identical to the shard she’d locked in her precinct locker, the one the lab couldn’t identify." |
| |
| 100.00% | Purple prose (modifier overload) | Target: <4% adverbs, <2% -ly adverbs, no adj stacking | | wordCount | 1188 | | adjectiveStacks | 0 | | stackExamples | (empty) | | adverbCount | 25 | | adverbRatio | 0.021043771043771045 | | lyAdverbCount | 6 | | lyAdverbRatio | 0.005050505050505051 | |
| 100.00% | Repeated phrase echo | Target: ≤20% sentences with echoes (window: 2) | | totalSentences | 44 | | echoCount | 0 | | echoWords | (empty) | |
| 100.00% | Sentence length variance | Target: CV ≥0.4 for sentence word counts | | totalSentences | 44 | | mean | 30.7 | | std | 18.07 | | cv | 0.588 | | sampleLengths | | 0 | 35 | | 1 | 39 | | 2 | 2 | | 3 | 53 | | 4 | 34 | | 5 | 11 | | 6 | 35 | | 7 | 36 | | 8 | 36 | | 9 | 45 | | 10 | 25 | | 11 | 37 | | 12 | 3 | | 13 | 58 | | 14 | 48 | | 15 | 44 | | 16 | 13 | | 17 | 42 | | 18 | 43 | | 19 | 11 | | 20 | 34 | | 21 | 35 | | 22 | 30 | | 23 | 52 | | 24 | 21 | | 25 | 39 | | 26 | 24 | | 27 | 45 | | 28 | 6 | | 29 | 33 | | 30 | 23 | | 31 | 25 | | 32 | 11 | | 33 | 16 | | 34 | 6 | | 35 | 101 | | 36 | 25 | | 37 | 11 | | 38 | 9 | | 39 | 12 | | 40 | 43 | | 41 | 39 | | 42 | 33 | | 43 | 28 |
| |
| 53.03% | Sentence opener variety | Target: ≥60% unique sentence openers | | consecutiveRepeats | 5 | | diversityRatio | 0.38636363636363635 | | totalSentences | 44 | | uniqueOpeners | 17 | |
| 0.00% | Adverb-first sentence starts | Target: ≥3% sentences starting with an adverb | | adverbCount | 0 | | totalSentences | 40 | | matches | (empty) | | ratio | 0 | |
| 20.00% | Pronoun-first sentence starts | Target: ≤30% sentences starting with a pronoun | | pronounCount | 20 | | totalSentences | 40 | | matches | | 0 | "She leaned against the brick" | | 1 | "She’d staked out the Nest" | | 2 | "She’d spotted him slip through" | | 3 | "She’d known the risk of" | | 4 | "They didn’t believe her when" | | 5 | "He broke into a run" | | 6 | "He didn’t slow." | | 7 | "He cut onto empty Oxford" | | 8 | "She was 41, but five" | | 9 | "She gained ten feet on" | | 10 | "He turned down a potholed" | | 11 | "she shouted, closing the last" | | 12 | "He held up the bone" | | 13 | "he said, his voice raw," | | 14 | "She thought of Danny, bringing" | | 15 | "She thought of her ex-wife," | | 16 | "She had nothing left but" | | 17 | "she said, her voice sharp" | | 18 | "He vanished, the door starting" | | 19 | "She ran, slamming her shoulder" |
| | ratio | 0.5 | |
| 0.00% | Subject-first sentence starts | Target: ≤72% sentences starting with a subject | | subjectCount | 37 | | totalSentences | 40 | | matches | | 0 | "The rain in London stuck" | | 1 | "She leaned against the brick" | | 2 | "She’d staked out the Nest" | | 3 | "The former paramedic didn’t drink," | | 4 | "She’d spotted him slip through" | | 5 | "Harlow had pushed off her" | | 6 | "She’d known the risk of" | | 7 | "They didn’t believe her when" | | 8 | "Tomás had paused mid-step, his" | | 9 | "He broke into a run" | | 10 | "He didn’t slow." | | 11 | "He cut onto empty Oxford" | | 12 | "She was 41, but five" | | 13 | "She gained ten feet on" | | 14 | "Tomás didn’t head for the" | | 15 | "He turned down a potholed" | | 16 | "Harlow skidded to a half-stop," | | 17 | "The entry requirement was a" | | 18 | "Tomás skidded to a stop" | | 19 | "Harlow drew her service weapon," |
| | ratio | 0.925 | |
| 0.00% | Subordinate conjunction sentence starts | Target: ≥2% sentences starting with a subordinating conjunction | | subConjCount | 0 | | totalSentences | 40 | | matches | (empty) | | ratio | 0 | |
| 0.00% | Technical jargon density | Target: ≤6% sentences with technical-jargon patterns | | analyzedSentences | 33 | | technicalSentenceCount | 13 | | matches | | 0 | "The rain in London stuck to skin like a shroud, turning Soho’s cobblestones to black glass that reflected the Raven’s Nest’s green neon sign so bright it bleach…" | | 1 | "She’d staked out the Nest long enough to memorize the faded maps and black-and-white boxing photos taped to its smoke-stained walls, to pick Tomás Herrera out o…" | | 2 | "Harlow had pushed off her wall and followed, her boots silent enough to avoid cutting through the rain’s drum, keeping twenty feet back as he wove past overflow…" | | 3 | "They didn’t believe her when she said the claw marks on Danny’s throat, the shard of unidentifiable carved bone tucked in his fist, the way every witness had de…" | | 4 | "Tomás had paused mid-step, his head tilting like a dog picking up a whistle only he could hear, and Harlow had known she was made." | | 5 | "He broke into a run before she could call out her badge, his boots slapping the pavement so hard the rain splashed, and Harlow gave chase, yelling that she was …" | | 6 | "He cut onto empty Oxford Street, darted between a pair of idling night buses, and scrambled over a spiked iron gate that sealed off a university alleyway behind…" | | 7 | "He turned down a potholed side road that led to the abandoned Chalk Farm Tube station, boarded up and left to rot since the mid-90s, the spot every cop in north…" | | 8 | "Harlow skidded to a half-stop, her boots slipping on a puddle, because she knew the rules of the Market: it moved every full moon, and tonight was the full moon…" | | 9 | "Tomás turned, his warm brown eyes glistening with rain and exertion, a cut above his eyebrow bleeding down his olive cheek." | | 10 | "She thought of her ex-wife, moving to Edinburgh with their eight-year-old daughter, saying Harlow’s obsession with Danny’s death had eaten their marriage alive." | | 11 | "Low bass thrummed from inside, voices mixing, the noise of a crowded market, not an abandoned Tube station that had been sealed for thirty years." | | 12 | "Stalls lined the walls, a horned witch stirring a cauldron of glowing blue liquid, a werewolf barking at a customer over a pile of silver blades etched with run…" |
| |
| 0.00% | Useless dialogue additions | Target: ≤5% dialogue tags with trailing filler fragments | | totalTags | 4 | | uselessAdditionCount | 1 | | matches | | 0 | "she said, her voice sharp as her jawline" |
| |
| 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 | |