| 100.00% | Adverbs in dialogue tags | Target: ≤10% dialogue tags with adverbs | |
| 100.00% | AI-ism adverb frequency | Target: <2% AI-ism adverbs (58 tracked) | | wordCount | 1041 | | 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) | |
| 75.98% | AI-ism word frequency | Target: <2% AI-ism words (290 tracked) | | wordCount | 1041 | | totalAiIsms | 5 | | found | | | highlights | | 0 | "clenching" | | 1 | "glinting" | | 2 | "unreadable" | | 3 | "echoed" | | 4 | "chaotic" |
| |
| 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 | 66 | | matches | (empty) | |
| 99.57% | Filter word density | Target: ≤3% sentences with filter/hedge words | | filterCount | 2 | | hedgeCount | 0 | | narrationSentences | 66 | | filterMatches | | | hedgeMatches | (empty) | |
| 100.00% | Gibberish response detection | Target: ≤1% gibberish-like sentences (hard fail if a sentence exceeds 800 words) | | analyzedSentences | 66 | | gibberishSentences | 0 | | adjustedGibberishSentences | 0 | | longSentenceCount | 0 | | runOnParagraphCount | 0 | | giantParagraphCount | 0 | | wordSaladCount | 0 | | repetitionLoopCount | 0 | | controlTokenCount | 0 | | maxSentenceWordsSeen | 53 | | ratio | 0 | | matches | (empty) | |
| 100.00% | Markdown formatting overuse | Target: ≤5% words in markdown formatting | | markdownSpans | 0 | | markdownWords | 0 | | totalWords | 1039 | | ratio | 0 | | matches | (empty) | |
| 100.00% | Missing dialogue indicators (quotation marks) | Target: ≤10% speech attributions without quotation marks | | totalAttributions | 2 | | unquotedAttributions | 0 | | matches | (empty) | |
| 100.00% | Name drop frequency | Target: ≤1.0 per-name mentions per 100 words | | totalMentions | 54 | | wordCount | 1039 | | uniqueNames | 19 | | maxNameDensity | 0.96 | | worstName | "Herrera" | | maxWindowNameDensity | 2 | | worstWindowName | "Herrera" | | discoveredNames | | Harlow | 8 | | Raven | 3 | | Nest | 3 | | Soho | 2 | | Tomás | 1 | | Herrera | 10 | | Morris | 6 | | Met | 2 | | Saint | 1 | | Christopher | 1 | | Charing | 1 | | Cross | 1 | | Road | 2 | | Camden | 3 | | Quinn | 1 | | Tube | 2 | | Veil | 1 | | Market | 3 | | You | 3 |
| | persons | | 0 | "Harlow" | | 1 | "Nest" | | 2 | "Tomás" | | 3 | "Herrera" | | 4 | "Morris" | | 5 | "Met" | | 6 | "Saint" | | 7 | "Christopher" | | 8 | "Quinn" | | 9 | "Market" | | 10 | "You" |
| | places | | 0 | "Soho" | | 1 | "Charing" | | 2 | "Cross" | | 3 | "Road" | | 4 | "Camden" | | 5 | "Tube" |
| | globalScore | 1 | | windowScore | 1 | |
| 100.00% | Narrator intent-glossing | Target: ≤2% narration sentences with intent-glossing patterns | | analyzedSentences | 43 | | 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 | 1039 | | matches | (empty) | |
| 100.00% | Overuse of "that" (subordinate clause padding) | Target: ≤2% sentences with "that" clauses | | thatCount | 0 | | totalSentences | 66 | | matches | (empty) | |
| 100.00% | Paragraph length variance | Target: CV ≥0.5 for paragraph word counts | | totalParagraphs | 17 | | mean | 61.12 | | std | 45.23 | | cv | 0.74 | | sampleLengths | | 0 | 161 | | 1 | 25 | | 2 | 8 | | 3 | 127 | | 4 | 104 | | 5 | 63 | | 6 | 14 | | 7 | 17 | | 8 | 14 | | 9 | 101 | | 10 | 110 | | 11 | 28 | | 12 | 30 | | 13 | 97 | | 14 | 55 | | 15 | 38 | | 16 | 47 |
| |
| 94.63% | Passive voice overuse | Target: ≤2% passive sentences | | passiveCount | 2 | | totalSentences | 66 | | matches | | 0 | "been boarded" | | 1 | "was bricked" |
| |
| 100.00% | Past progressive (was/were + -ing) overuse | Target: ≤2% past progressive verbs | | pastProgressiveCount | 1 | | totalVerbs | 190 | | matches | | |
| 56.28% | Em-dash & semicolon overuse | Target: ≤2% sentences with em-dashes/semicolons | | emDashCount | 2 | | semicolonCount | 0 | | flaggedSentences | 2 | | totalSentences | 66 | | ratio | 0.03 | | matches | | 0 | "She gained half a block on Herrera as he paused to let a black cab pass, his jacket sleeve riding up to show the thin, pale scar slicing along his left forearm—matching the report of the knife attack that had put him in hospital three years prior, just weeks before Morris died." | | 1 | "Muffled chatter rose from the gap, nothing like the street’s sharp, chaotic noise—this was the low hum of a crowd, hidden underground." |
| |
| 100.00% | Purple prose (modifier overload) | Target: <4% adverbs, <2% -ly adverbs, no adj stacking | | wordCount | 1047 | | adjectiveStacks | 0 | | stackExamples | (empty) | | adverbCount | 17 | | adverbRatio | 0.01623686723973257 | | lyAdverbCount | 3 | | lyAdverbRatio | 0.0028653295128939827 | |
| 100.00% | Repeated phrase echo | Target: ≤20% sentences with echoes (window: 2) | | totalSentences | 66 | | echoCount | 0 | | echoWords | (empty) | |
| 100.00% | Sentence length variance | Target: CV ≥0.4 for sentence word counts | | totalSentences | 66 | | mean | 15.74 | | std | 12.83 | | cv | 0.815 | | sampleLengths | | 0 | 31 | | 1 | 37 | | 2 | 47 | | 3 | 46 | | 4 | 7 | | 5 | 18 | | 6 | 1 | | 7 | 2 | | 8 | 5 | | 9 | 3 | | 10 | 27 | | 11 | 21 | | 12 | 33 | | 13 | 26 | | 14 | 7 | | 15 | 5 | | 16 | 5 | | 17 | 52 | | 18 | 27 | | 19 | 25 | | 20 | 19 | | 21 | 21 | | 22 | 23 | | 23 | 1 | | 24 | 13 | | 25 | 10 | | 26 | 7 | | 27 | 8 | | 28 | 2 | | 29 | 4 | | 30 | 2 | | 31 | 4 | | 32 | 25 | | 33 | 38 | | 34 | 32 | | 35 | 35 | | 36 | 22 | | 37 | 22 | | 38 | 28 | | 39 | 3 | | 40 | 13 | | 41 | 15 | | 42 | 10 | | 43 | 3 | | 44 | 4 | | 45 | 6 | | 46 | 4 | | 47 | 3 | | 48 | 15 | | 49 | 32 |
| |
| 50.00% | Sentence opener variety | Target: ≥60% unique sentence openers | | consecutiveRepeats | 7 | | diversityRatio | 0.36363636363636365 | | totalSentences | 66 | | uniqueOpeners | 24 | |
| 0.00% | Adverb-first sentence starts | Target: ≥3% sentences starting with an adverb | | adverbCount | 0 | | totalSentences | 61 | | matches | (empty) | | ratio | 0 | |
| 3.61% | Pronoun-first sentence starts | Target: ≤30% sentences starting with a pronoun | | pronounCount | 33 | | totalSentences | 61 | | matches | | 0 | "She’d staked out the Raven’s" | | 1 | "She’d memorized Tomás Herrera’s file" | | 2 | "His boots slapped the wet" | | 3 | "I just want to talk." | | 4 | "He didn’t slow." | | 5 | "He wove between groups of" | | 6 | "She thought of Morris, three" | | 7 | "She gained half a block" | | 8 | "He twisted out of her" | | 9 | "She chased him for another" | | 10 | "I’ll put a bullet in" | | 11 | "He paused for half a" | | 12 | "His warm brown eyes were" | | 13 | "You don’t know what you’re" | | 14 | "He knew her name." | | 15 | "She’d worn a baseball cap" | | 16 | "She lunged forward, fingers brushing" | | 17 | "She was twenty feet from" | | 18 | "She’d heard whispers of the" | | 19 | "He held up the bone" |
| | ratio | 0.541 | |
| 9.18% | Subject-first sentence starts | Target: ≤72% sentences starting with a subject | | subjectCount | 55 | | totalSentences | 61 | | matches | | 0 | "She’d staked out the Raven’s" | | 1 | "She’d memorized Tomás Herrera’s file" | | 2 | "Herrera skidded to a halt," | | 3 | "His boots slapped the wet" | | 4 | "I just want to talk." | | 5 | "He didn’t slow." | | 6 | "He wove between groups of" | | 7 | "Rain plastered her closely cropped" | | 8 | "She thought of Morris, three" | | 9 | "An hour later, she’d found" | | 10 | "The coroner ruled it a" | | 11 | "The Met buried the case." | | 12 | "Harlow had never stopped digging." | | 13 | "She gained half a block" | | 14 | "A silver Saint Christopher medallion" | | 15 | "He twisted out of her" | | 16 | "She chased him for another" | | 17 | "The canal ran black as" | | 18 | "Drunks stumbled out of a" | | 19 | "I’ll put a bullet in" |
| | ratio | 0.902 | |
| 0.00% | Subordinate conjunction sentence starts | Target: ≥2% sentences starting with a subordinating conjunction | | subConjCount | 0 | | totalSentences | 61 | | matches | (empty) | | ratio | 0 | |
| 0.00% | Technical jargon density | Target: ≤6% sentences with technical-jargon patterns | | analyzedSentences | 36 | | technicalSentenceCount | 10 | | matches | | 0 | "She’d staked out the Raven’s Nest for three nights straight, the bar’s green neon sign bleeding lime into the puddles of Soho’s backstreets, watching every patr…" | | 1 | "She’d memorized Tomás Herrera’s file two weeks prior: the former paramedic who’d lost his NHS license for treating patients no doctor would touch, the guy who r…" | | 2 | "He wove between groups of clubbers queuing under umbrellas, slipped past a kebab cart’s steam cloud, and left Harlow to weave through the chaos, her lungs burni…" | | 3 | "She thought of Morris, three years prior, the two of them chasing a suspect through these same streets, his laugh crackling over their comms as he teased her fo…" | | 4 | "She gained half a block on Herrera as he paused to let a black cab pass, his jacket sleeve riding up to show the thin, pale scar slicing along his left forearm—…" | | 5 | "A silver Saint Christopher medallion bounced against his chest, glinting in the flash of a street light, and Harlow lunged, grabbing for the back of his hood." | | 6 | "He twisted out of her grip, sprinting north up Charing Cross Road, past shuttered bookstores and 24-hour laundromats, their fluorescent light bleeding onto the …" | | 7 | "She lunged forward, fingers brushing his hood’s edge, but he slipped away, sprinting down an unlit side street that led to the abandoned Camden Road Tube statio…" | | 8 | "A low, thrumming click echoed, and the door swung inward, pouring blackness that smelled of jasmine, burnt iron, and something sweet, unidentifiable." | | 9 | "She’d heard whispers of the Veil Market, the supernatural black market that moved locations every full moon, set up in the abandoned Tube station beneath Camden…" |
| |
| 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 | |