| 100.00% | Adverbs in dialogue tags | Target: ≤10% dialogue tags with adverbs | | totalTags | 4 | | adverbTagCount | 0 | | adverbTags | (empty) | | dialogueSentences | 26 | | tagDensity | 0.154 | | leniency | 0.308 | | rawRatio | 0 | | effectiveRatio | 0 | |
| 89.52% | AI-ism adverb frequency | Target: <2% AI-ism adverbs (58 tracked) | | wordCount | 1909 | | totalAiIsmAdverbs | 4 | | 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) | |
| 81.67% | AI-ism word frequency | Target: <2% AI-ism words (290 tracked) | | wordCount | 1909 | | totalAiIsms | 7 | | found | | | highlights | | 0 | "tension" | | 1 | "echo" | | 2 | "footsteps" | | 3 | "flicker" | | 4 | "resolved" | | 5 | "electric" | | 6 | "pulsed" |
| |
| 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 | 136 | | matches | (empty) | |
| 100.00% | Filter word density | Target: ≤3% sentences with filter/hedge words | | filterCount | 1 | | hedgeCount | 3 | | narrationSentences | 136 | | filterMatches | | | hedgeMatches | | 0 | "happened to" | | 1 | "seemed to" | | 2 | "appeared to" |
| |
| 100.00% | Gibberish response detection | Target: ≤1% gibberish-like sentences (hard fail if a sentence exceeds 800 words) | | analyzedSentences | 158 | | gibberishSentences | 0 | | adjustedGibberishSentences | 0 | | longSentenceCount | 0 | | runOnParagraphCount | 0 | | giantParagraphCount | 0 | | wordSaladCount | 0 | | repetitionLoopCount | 0 | | controlTokenCount | 0 | | maxSentenceWordsSeen | 74 | | ratio | 0 | | matches | (empty) | |
| 100.00% | Markdown formatting overuse | Target: ≤5% words in markdown formatting | | markdownSpans | 0 | | markdownWords | 0 | | totalWords | 1920 | | ratio | 0 | | matches | (empty) | |
| 100.00% | Missing dialogue indicators (quotation marks) | Target: ≤10% speech attributions without quotation marks | | totalAttributions | 8 | | unquotedAttributions | 0 | | matches | (empty) | |
| 66.67% | Name drop frequency | Target: ≤1.0 per-name mentions per 100 words | | totalMentions | 53 | | wordCount | 1673 | | uniqueNames | 24 | | maxNameDensity | 0.96 | | worstName | "Quinn" | | maxWindowNameDensity | 3 | | worstWindowName | "Quinn" | | discoveredNames | | Soho | 1 | | Quinn | 16 | | Raven | 1 | | Nest | 1 | | Saint | 1 | | Christopher | 1 | | Dean | 1 | | Street | 2 | | Bateman | 1 | | Frith | 1 | | Morris | 6 | | Deptford | 1 | | Tomás | 1 | | Herrera | 5 | | Charing | 1 | | Cross | 1 | | Road | 1 | | Camden | 3 | | Met | 1 | | London | 1 | | Underground | 1 | | Tube | 1 | | Veil | 1 | | Market | 3 |
| | persons | | 0 | "Quinn" | | 1 | "Raven" | | 2 | "Nest" | | 3 | "Saint" | | 4 | "Christopher" | | 5 | "Morris" | | 6 | "Tomás" | | 7 | "Herrera" | | 8 | "Met" | | 9 | "Market" |
| | places | | 0 | "Soho" | | 1 | "Dean" | | 2 | "Street" | | 3 | "Frith" | | 4 | "Deptford" | | 5 | "Charing" | | 6 | "Cross" | | 7 | "Road" | | 8 | "London" | | 9 | "Underground" |
| | globalScore | 1 | | windowScore | 0.667 | |
| 100.00% | Narrator intent-glossing | Target: ≤2% narration sentences with intent-glossing patterns | | analyzedSentences | 99 | | glossingSentenceCount | 1 | | matches | | 0 | "looked like animal hide" |
| |
| 95.83% | "Not X but Y" pattern overuse | Target: ≤1 "not X but Y" per 1000 words | | totalMatches | 2 | | per1kWords | 1.042 | | wordCount | 1920 | | matches | | 0 | "not fear, but a recalculation, the look of a woman reassessing the cost of" | | 1 | "not electric bulbs but glass spheres filled with something luminous" |
| |
| 100.00% | Overuse of "that" (subordinate clause padding) | Target: ≤2% sentences with "that" clauses | | thatCount | 0 | | totalSentences | 158 | | matches | (empty) | |
| 100.00% | Paragraph length variance | Target: CV ≥0.5 for paragraph word counts | | totalParagraphs | 61 | | mean | 31.48 | | std | 27.97 | | cv | 0.888 | | sampleLengths | | 0 | 63 | | 1 | 80 | | 2 | 11 | | 3 | 72 | | 4 | 46 | | 5 | 98 | | 6 | 23 | | 7 | 68 | | 8 | 6 | | 9 | 80 | | 10 | 29 | | 11 | 16 | | 12 | 58 | | 13 | 27 | | 14 | 44 | | 15 | 7 | | 16 | 8 | | 17 | 85 | | 18 | 83 | | 19 | 49 | | 20 | 1 | | 21 | 3 | | 22 | 8 | | 23 | 25 | | 24 | 5 | | 25 | 9 | | 26 | 24 | | 27 | 48 | | 28 | 19 | | 29 | 31 | | 30 | 12 | | 31 | 30 | | 32 | 74 | | 33 | 13 | | 34 | 5 | | 35 | 1 | | 36 | 6 | | 37 | 1 | | 38 | 7 | | 39 | 64 | | 40 | 3 | | 41 | 46 | | 42 | 18 | | 43 | 38 | | 44 | 5 | | 45 | 20 | | 46 | 52 | | 47 | 5 | | 48 | 94 | | 49 | 20 |
| |
| 100.00% | Passive voice overuse | Target: ≤2% passive sentences | | passiveCount | 2 | | totalSentences | 136 | | matches | | 0 | "being shown" | | 1 | "been trained" |
| |
| 100.00% | Past progressive (was/were + -ing) overuse | Target: ≤2% past progressive verbs | | pastProgressiveCount | 3 | | totalVerbs | 281 | | matches | | 0 | "was heading" | | 1 | "was heading" | | 2 | "was knotting" |
| |
| 0.00% | Em-dash & semicolon overuse | Target: ≤2% sentences with em-dashes/semicolons | | emDashCount | 16 | | semicolonCount | 0 | | flaggedSentences | 16 | | totalSentences | 158 | | ratio | 0.101 | | matches | | 0 | "She clocked the Saint Christopher medallion catching the neon light before she registered anything else — the way he held his left arm close to his body, the messenger bag slung tight across his chest, the quick birdlike sweep of his head as he checked the street in both directions." | | 1 | "The rain was a gift — it kept heads down, hoods up, eyes on the ground." | | 2 | "Herrera turned down a side street she didn't recognize — no, she did recognize it." | | 3 | "She rounded the dumpster and found a metal door set into the wall at knee height — an old service entrance, the kind that led down to utility tunnels or forgotten basements." | | 4 | "Heard the fading echo of footsteps descending, and beneath that, something else — a hum, like the murmur of a crowd, rising from underground." | | 5 | "The staircase was industrial — riveted iron steps, a handrail crusted with rust that she didn't trust enough to touch." | | 6 | "The hum resolved into distinct sounds — voices, the clink of glass, a low persistent drumming that might have been music or might have been a machine." | | 7 | "At the bottom of the stairs she found a corridor tiled in the old London Underground style — cream ceramic with a green border, chipped and stained but unmistakable." | | 8 | "The sounds from beyond it were louder here — a dozen conversations tangled together, laughter, the sharp crack of something that could have been wood splitting or a small explosion." | | 9 | "Something shifted in her expression — not fear, but a recalculation, the look of a woman reassessing the cost of a particular interaction." | | 10 | "The old woman held her gaze for another moment, then reached into the folds of her shawl and produced a small object — a disc the color of old ivory, roughly the size of a two-pound coin, carved with symbols Quinn didn't recognize." | | 11 | "She thought about Morris — the way he'd called her that last night, voice tight, saying he'd found something, something wrong, that he needed to see it for himself before he could explain." | | 12 | "Strings of lights crisscrossed overhead — not electric bulbs but glass spheres filled with something luminous and faintly alive, pulsing with their own slow rhythm." | | 13 | "The messenger bag, the medallion, the dark curly hair — all swallowed by the Market's throat." | | 14 | "Her warrant card was a joke down here — she'd understood that from the old woman's reaction." | | 15 | "A vendor caught her eye — a tall figure wrapped in dark linen, their stall a table covered in small glass vials." |
| |
| 100.00% | Purple prose (modifier overload) | Target: <4% adverbs, <2% -ly adverbs, no adj stacking | | wordCount | 1661 | | adjectiveStacks | 0 | | stackExamples | (empty) | | adverbCount | 26 | | adverbRatio | 0.015653220951234198 | | lyAdverbCount | 7 | | lyAdverbRatio | 0.004214328717639976 | |
| 100.00% | Repeated phrase echo | Target: ≤20% sentences with echoes (window: 2) | | totalSentences | 158 | | echoCount | 0 | | echoWords | (empty) | |
| 100.00% | Sentence length variance | Target: CV ≥0.4 for sentence word counts | | totalSentences | 158 | | mean | 12.15 | | std | 10.45 | | cv | 0.86 | | sampleLengths | | 0 | 19 | | 1 | 30 | | 2 | 9 | | 3 | 5 | | 4 | 9 | | 5 | 50 | | 6 | 11 | | 7 | 10 | | 8 | 11 | | 9 | 7 | | 10 | 18 | | 11 | 14 | | 12 | 16 | | 13 | 8 | | 14 | 9 | | 15 | 21 | | 16 | 16 | | 17 | 6 | | 18 | 3 | | 19 | 7 | | 20 | 39 | | 21 | 6 | | 22 | 10 | | 23 | 6 | | 24 | 1 | | 25 | 10 | | 26 | 1 | | 27 | 18 | | 28 | 23 | | 29 | 17 | | 30 | 9 | | 31 | 8 | | 32 | 18 | | 33 | 2 | | 34 | 7 | | 35 | 7 | | 36 | 1 | | 37 | 5 | | 38 | 21 | | 39 | 14 | | 40 | 15 | | 41 | 11 | | 42 | 3 | | 43 | 16 | | 44 | 2 | | 45 | 10 | | 46 | 17 | | 47 | 7 | | 48 | 9 | | 49 | 5 |
| |
| 48.31% | Sentence opener variety | Target: ≥60% unique sentence openers | | consecutiveRepeats | 17 | | diversityRatio | 0.35443037974683544 | | totalSentences | 158 | | uniqueOpeners | 56 | |
| 55.10% | Adverb-first sentence starts | Target: ≥3% sentences starting with an adverb | | adverbCount | 2 | | totalSentences | 121 | | matches | | 0 | "Just white, like someone had" | | 1 | "Somehow he knew, or at" |
| | ratio | 0.017 | |
| 100.00% | Pronoun-first sentence starts | Target: ≤30% sentences starting with a pronoun | | pronounCount | 36 | | totalSentences | 121 | | matches | | 0 | "Her leather watch strap had" | | 1 | "She didn't bother wiping it." | | 2 | "She clocked the Saint Christopher" | | 3 | "She gave him a twenty-metre" | | 4 | "His pace was brisk but" | | 5 | "She was just another shape" | | 6 | "He turned right onto Frith" | | 7 | "She sidestepped, caught the flash" | | 8 | "Her phone buzzed in her" | | 9 | "She ignored it." | | 10 | "She'd pushed for a second" | | 11 | "He crossed Charing Cross Road" | | 12 | "He was heading north now," | | 13 | "She could see the tension" | | 14 | "She shortened the gap to" | | 15 | "He was heading toward Camden." | | 16 | "She'd walked past it a" | | 17 | "Her hand found the extendable" | | 18 | "He veered left, ducked behind" | | 19 | "Her boots hammered the wet" |
| | ratio | 0.298 | |
| 38.51% | Subject-first sentence starts | Target: ≤72% sentences starting with a subject | | subjectCount | 102 | | totalSentences | 121 | | matches | | 0 | "The rain hit Soho in" | | 1 | "Harlow Quinn pressed her back" | | 2 | "Her leather watch strap had" | | 3 | "She didn't bother wiping it." | | 4 | "Herrera emerged from the bar's" | | 5 | "She clocked the Saint Christopher" | | 6 | "The movements of a man" | | 7 | "She gave him a twenty-metre" | | 8 | "His pace was brisk but" | | 9 | "Quinn matched it, keeping her" | | 10 | "The rain was a gift" | | 11 | "Nobody looked at anybody in" | | 12 | "She was just another shape" | | 13 | "He turned right onto Frith" | | 14 | "She sidestepped, caught the flash" | | 15 | "Her phone buzzed in her" | | 16 | "She ignored it." | | 17 | "She'd pushed for a second" | | 18 | "He crossed Charing Cross Road" | | 19 | "Quinn waited for a gap" |
| | ratio | 0.843 | |
| 0.00% | Subordinate conjunction sentence starts | Target: ≥2% sentences starting with a subordinating conjunction | | subConjCount | 0 | | totalSentences | 121 | | matches | (empty) | | ratio | 0 | |
| 28.99% | Technical jargon density | Target: ≤6% sentences with technical-jargon patterns | | analyzedSentences | 69 | | technicalSentenceCount | 11 | | matches | | 0 | "The rain hit Soho in sheets, turning the gutters into rivers that swallowed cigarette butts and takeaway wrappers whole." | | 1 | "Chain-link fence at the back, loading dock for a restaurant that had closed six months ago." | | 2 | "She rounded the dumpster and found a metal door set into the wall at knee height — an old service entrance, the kind that led down to utility tunnels or forgott…" | | 3 | "The air changed as she descended, growing warmer, carrying scents that didn't belong together: sandalwood, copper, ozone, something floral she couldn't name." | | 4 | "The hum resolved into distinct sounds — voices, the clink of glass, a low persistent drumming that might have been music or might have been a machine." | | 5 | "She'd read about them in the files she kept locked in her desk at home, the ones that would end her career if anyone found them." | | 6 | "A black market for things that shouldn't exist, things that moved every full moon to a new location beneath the city." | | 7 | "A figure sat on a wooden stool beside a heavy curtain that blocked the corridor ahead." | | 8 | "The sounds from beyond it were louder here — a dozen conversations tangled together, laughter, the sharp crack of something that could have been wood splitting …" | | 9 | "The crowd was dense but moved with a strange courtesy, bodies never quite touching, everyone maintaining a precise buffer of personal space as though the conseq…" | | 10 | "One of the vials contained something that glowed the exact white of Morris's dead eyes." |
| |
| 100.00% | Useless dialogue additions | Target: ≤5% dialogue tags with trailing filler fragments | | totalTags | 4 | | uselessAdditionCount | 0 | | matches | (empty) | |
| 100.00% | Dialogue tag variety (said vs. fancy) | Target: ≤10% fancy dialogue tags | | totalTags | 1 | | fancyCount | 0 | | fancyTags | (empty) | | dialogueSentences | 26 | | tagDensity | 0.038 | | leniency | 0.077 | | rawRatio | 0 | | effectiveRatio | 0 | |