| 100.00% | Adverbs in dialogue tags | Target: ≤10% dialogue tags with adverbs | | totalTags | 4 | | adverbTagCount | 0 | | adverbTags | (empty) | | dialogueSentences | 6 | | tagDensity | 0.667 | | leniency | 1 | | rawRatio | 0 | | effectiveRatio | 0 | |
| 93.59% | AI-ism adverb frequency | Target: <2% AI-ism adverbs (58 tracked) | | wordCount | 1561 | | 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) | |
| 87.19% | AI-ism word frequency | Target: <2% AI-ism words (290 tracked) | | wordCount | 1561 | | totalAiIsms | 4 | | found | | | highlights | | 0 | "weight" | | 1 | "resolve" | | 2 | "pulse" | | 3 | "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 | 103 | | matches | (empty) | |
| 87.38% | Filter word density | Target: ≤3% sentences with filter/hedge words | | filterCount | 4 | | hedgeCount | 0 | | narrationSentences | 103 | | filterMatches | | | hedgeMatches | (empty) | |
| 100.00% | Gibberish response detection | Target: ≤1% gibberish-like sentences (hard fail if a sentence exceeds 800 words) | | analyzedSentences | 105 | | gibberishSentences | 0 | | adjustedGibberishSentences | 0 | | longSentenceCount | 0 | | runOnParagraphCount | 0 | | giantParagraphCount | 0 | | wordSaladCount | 0 | | repetitionLoopCount | 0 | | controlTokenCount | 0 | | repeatedSegmentCount | 0 | | maxSentenceWordsSeen | 51 | | ratio | 0 | | matches | (empty) | |
| 100.00% | Markdown formatting overuse | Target: ≤5% words in markdown formatting | | markdownSpans | 0 | | markdownWords | 0 | | totalWords | 1572 | | ratio | 0 | | matches | (empty) | |
| 100.00% | Missing dialogue indicators (quotation marks) | Target: ≤10% speech attributions without quotation marks | | totalAttributions | 7 | | unquotedAttributions | 0 | | matches | (empty) | |
| 100.00% | Name drop frequency | Target: ≤1.0 per-name mentions per 100 words | | totalMentions | 38 | | wordCount | 1552 | | uniqueNames | 21 | | maxNameDensity | 0.58 | | worstName | "Quinn" | | maxWindowNameDensity | 1.5 | | worstWindowName | "Herrera" | | discoveredNames | | Raven | 1 | | Nest | 1 | | Detective | 1 | | Harlow | 1 | | Quinn | 9 | | Met | 1 | | Office | 1 | | Soho | 1 | | Herrera | 8 | | General | 1 | | Medical | 1 | | Council | 1 | | Seville | 1 | | London | 1 | | Court | 1 | | Road | 1 | | Tube | 1 | | Morris | 2 | | Cable | 1 | | Street | 1 | | Tomás | 2 |
| | persons | | 0 | "Raven" | | 1 | "Nest" | | 2 | "Detective" | | 3 | "Harlow" | | 4 | "Quinn" | | 5 | "Office" | | 6 | "Herrera" | | 7 | "Council" | | 8 | "Morris" | | 9 | "Tomás" |
| | places | | 0 | "Soho" | | 1 | "Seville" | | 2 | "London" | | 3 | "Court" | | 4 | "Road" | | 5 | "Cable" | | 6 | "Street" |
| | globalScore | 1 | | windowScore | 1 | |
| 100.00% | Narrator intent-glossing | Target: ≤2% narration sentences with intent-glossing patterns | | analyzedSentences | 71 | | glossingSentenceCount | 1 | | matches | | 0 | "Time, apparently, was not going to b" |
| |
| 100.00% | "Not X but Y" pattern overuse | Target: ≤1 "not X but Y" per 1000 words | | totalMatches | 0 | | per1kWords | 0 | | wordCount | 1572 | | matches | (empty) | |
| 39.68% | Overuse of "that" (subordinate clause padding) | Target: ≤2% sentences with "that" clauses | | thatCount | 4 | | totalSentences | 105 | | matches | | 0 | "noted that he have — that he" | | 1 | "doing that less" | | 2 | "learning that the" |
| |
| 100.00% | Paragraph length variance | Target: CV ≥0.5 for paragraph word counts | | totalParagraphs | 30 | | mean | 52.4 | | std | 33.89 | | cv | 0.647 | | sampleLengths | | 0 | 85 | | 1 | 60 | | 2 | 72 | | 3 | 4 | | 4 | 36 | | 5 | 90 | | 6 | 9 | | 7 | 30 | | 8 | 88 | | 9 | 59 | | 10 | 94 | | 11 | 45 | | 12 | 49 | | 13 | 95 | | 14 | 17 | | 15 | 56 | | 16 | 31 | | 17 | 24 | | 18 | 137 | | 19 | 71 | | 20 | 19 | | 21 | 86 | | 22 | 19 | | 23 | 74 | | 24 | 16 | | 25 | 28 | | 26 | 103 | | 27 | 15 | | 28 | 9 | | 29 | 51 |
| |
| 95.04% | Passive voice overuse | Target: ≤2% passive sentences | | passiveCount | 3 | | totalSentences | 103 | | matches | | 0 | "was gone" | | 1 | "been held" | | 2 | "been sold" |
| |
| 94.60% | Past progressive (was/were + -ing) overuse | Target: ≤2% past progressive verbs | | pastProgressiveCount | 4 | | totalVerbs | 253 | | matches | | 0 | "was choosing" | | 1 | "was pouring" | | 2 | "was reading" | | 3 | "was learning" |
| |
| 0.00% | Em-dash & semicolon overuse | Target: ≤2% sentences with em-dashes/semicolons | | emDashCount | 11 | | semicolonCount | 0 | | flaggedSentences | 8 | | totalSentences | 105 | | ratio | 0.076 | | matches | | 0 | "The brass had closed her file on the Soho clique four months ago — insufficient evidence, veiled suggestion that she see someone about her stress levels — and so she burned her leave standing in doorways, watching a bar that kept the wrong hours for the wrong people." | | 1 | "For half a second they regarded each other across forty feet of wet pavement, and Quinn saw the exact moment he made her — the small stillness, the weight settling into his heels." | | 2 | "He'd known her all along, then — known the doorways, the watching." | | 3 | "Warm — absurdly warm, as if it had been held in a fist for hours." | | 4 | "Herrera stayed ahead of her like a lure, never quite losing her, and some cold professional instinct noted that he could have — that he was choosing his turns, leading rather than fleeing — but the anger was louder than the instinct, and the rain was louder than both." | | 5 | "The stairs turned, and turned again, and then she heard it — a sound that stopped her on the steps with one hand on the cold rail." | | 6 | "And there — at a rusted turnstile set into an arch of iron at the platform's far end — Herrera." | | 7 | "It looked at her for a long moment, and she had the sudden certainty that it was reading her the way she read crime scenes — every doorway she'd stood in, every lie in every report, three years of a dead man's face." |
| |
| 94.00% | Purple prose (modifier overload) | Target: <4% adverbs, <2% -ly adverbs, no adj stacking | | wordCount | 1544 | | adjectiveStacks | 1 | | stackExamples | | 0 | "Short curly dark hair," |
| | adverbCount | 37 | | adverbRatio | 0.023963730569948185 | | lyAdverbCount | 9 | | lyAdverbRatio | 0.005829015544041451 | |
| 100.00% | Repeated phrase echo | Target: ≤20% sentences with echoes (window: 2) | | totalSentences | 105 | | echoCount | 0 | | echoWords | (empty) | |
| 100.00% | Sentence length variance | Target: CV ≥0.4 for sentence word counts | | totalSentences | 105 | | mean | 14.97 | | std | 13.37 | | cv | 0.893 | | sampleLengths | | 0 | 34 | | 1 | 7 | | 2 | 18 | | 3 | 16 | | 4 | 10 | | 5 | 5 | | 6 | 7 | | 7 | 48 | | 8 | 3 | | 9 | 25 | | 10 | 2 | | 11 | 16 | | 12 | 5 | | 13 | 11 | | 14 | 10 | | 15 | 4 | | 16 | 33 | | 17 | 3 | | 18 | 18 | | 19 | 3 | | 20 | 37 | | 21 | 7 | | 22 | 25 | | 23 | 8 | | 24 | 1 | | 25 | 6 | | 26 | 8 | | 27 | 13 | | 28 | 3 | | 29 | 3 | | 30 | 12 | | 31 | 34 | | 32 | 4 | | 33 | 35 | | 34 | 19 | | 35 | 13 | | 36 | 2 | | 37 | 1 | | 38 | 15 | | 39 | 9 | | 40 | 4 | | 41 | 6 | | 42 | 5 | | 43 | 30 | | 44 | 49 | | 45 | 45 | | 46 | 4 | | 47 | 5 | | 48 | 40 | | 49 | 4 |
| |
| 55.24% | Sentence opener variety | Target: ≥60% unique sentence openers | | consecutiveRepeats | 17 | | diversityRatio | 0.42857142857142855 | | totalSentences | 105 | | uniqueOpeners | 45 | |
| 100.00% | Adverb-first sentence starts | Target: ≥3% sentences starting with an adverb | | adverbCount | 4 | | totalSentences | 91 | | matches | | 0 | "Then directly at her." | | 1 | "Then Herrera ran." | | 2 | "Almost sorry for her." | | 3 | "Then it looked down at" |
| | ratio | 0.044 | |
| 61.76% | Pronoun-first sentence starts | Target: ≤30% sentences starting with a pronoun | | pronounCount | 36 | | totalSentences | 91 | | matches | | 0 | "Her coffee had gone cold" | | 1 | "Her left knee, the one" | | 2 | "She checked her watch out" | | 3 | "She was off the clock." | | 4 | "He pulled his collar up" | | 5 | "She was after him before" | | 6 | "He was fast." | | 7 | "He cut left off the" | | 8 | "Her lungs burned by the" | | 9 | "she shouted, because procedure died" | | 10 | "His voice carried a trace" | | 11 | "He knew her." | | 12 | "He'd known her all along," | | 13 | "He wrenched it free." | | 14 | "She dropped down on the" | | 15 | "She shoved it into her" | | 16 | "Her watch said 2:40 when" | | 17 | "He vanished at last through" | | 18 | "She thought of Morris." | | 19 | "She'd been doing that less," |
| | ratio | 0.396 | |
| 75.38% | Subject-first sentence starts | Target: ≤72% sentences starting with a subject | | subjectCount | 70 | | totalSentences | 91 | | matches | | 0 | "The green neon of the" | | 1 | "Her coffee had gone cold" | | 2 | "Her left knee, the one" | | 3 | "She checked her watch out" | | 4 | "She was off the clock." | | 5 | "The brass had closed her" | | 6 | "The door opened." | | 7 | "A man stepped out into" | | 8 | "Quinn had memorized his file." | | 9 | "He pulled his collar up" | | 10 | "She was after him before" | | 11 | "He was fast." | | 12 | "He cut left off the" | | 13 | "Her lungs burned by the" | | 14 | "she shouted, because procedure died" | | 15 | "Herrera looked back over his" | | 16 | "Rain had flattened his curls" | | 17 | "His voice carried a trace" | | 18 | "He knew her." | | 19 | "He'd known her all along," |
| | ratio | 0.769 | |
| 0.00% | Subordinate conjunction sentence starts | Target: ≥2% sentences starting with a subordinating conjunction | | subConjCount | 0 | | totalSentences | 91 | | matches | (empty) | | ratio | 0 | |
| 14.29% | Technical jargon density | Target: ≤6% sentences with technical-jargon patterns | | analyzedSentences | 50 | | technicalSentenceCount | 9 | | matches | | 0 | "The brass had closed her file on the Soho clique four months ago — insufficient evidence, veiled suggestion that she see someone about her stress levels — and s…" | | 1 | "He cut left off the main drag into a lane barely wide enough for the bins that lined it, and she followed, boots hammering water, rain needling her cropped hair…" | | 2 | "Herrera stayed ahead of her like a lure, never quite losing her, and some cold professional instinct noted that he could have — that he was choosing his turns, …" | | 3 | "A smell came up out of the gap that did not belong to any abandoned station she had ever entered: wet stone, yes, and rust, but under it incense, and under that…" | | 4 | "Down and down, tiled walls weeping damp, adverts for cigarettes that hadn't been sold in fifty years flaking off in scabs." | | 5 | "Stalls lined the platform edge and the track bed both, rigged from driftwood and bone-white poles and canvas that breathed as if the wind down here had a pulse." | | 6 | "A woman behind a trestle of bell jars watched Quinn with eyes that caught the light like a cat's, and in the jars, small hearts beat on, ownerless." | | 7 | "Quinn stood at the edge of the lamplight with the rain still dripping off her coat and understood, with the clean cold clarity that had made her good at her job…" | | 8 | "She thought of Morris's flashlight rolling its slow circle, and the light that had stood over him like a man struck from a match, and how she had walked past th…" |
| |
| 100.00% | Useless dialogue additions | Target: ≤5% dialogue tags with trailing filler fragments | | totalTags | 4 | | uselessAdditionCount | 0 | | matches | (empty) | |
| 0.00% | Dialogue tag variety (said vs. fancy) | Target: ≤10% fancy dialogue tags | | totalTags | 2 | | fancyCount | 1 | | fancyTags | | | dialogueSentences | 6 | | tagDensity | 0.333 | | leniency | 0.667 | | rawRatio | 0.5 | | effectiveRatio | 0.333 | |