| 100.00% | Adverbs in dialogue tags | Target: ≤10% dialogue tags with adverbs | | totalTags | 9 | | adverbTagCount | 0 | | adverbTags | (empty) | | dialogueSentences | 17 | | tagDensity | 0.529 | | leniency | 1 | | rawRatio | 0 | | effectiveRatio | 0 | |
| 100.00% | AI-ism adverb frequency | Target: <2% AI-ism adverbs (58 tracked) | | wordCount | 1508 | | 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) | |
| 76.79% | AI-ism word frequency | Target: <2% AI-ism words (290 tracked) | | wordCount | 1508 | | totalAiIsms | 7 | | found | | | highlights | | 0 | "streaming" | | 1 | "weight" | | 2 | "pulse" | | 3 | "footsteps" | | 4 | "electric" |
| |
| 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 | 98 | | matches | (empty) | |
| 100.00% | Filter word density | Target: ≤3% sentences with filter/hedge words | | filterCount | 2 | | hedgeCount | 0 | | narrationSentences | 98 | | filterMatches | | | hedgeMatches | (empty) | |
| 100.00% | Gibberish response detection | Target: ≤1% gibberish-like sentences (hard fail if a sentence exceeds 800 words) | | analyzedSentences | 106 | | gibberishSentences | 0 | | adjustedGibberishSentences | 0 | | longSentenceCount | 0 | | runOnParagraphCount | 0 | | giantParagraphCount | 0 | | wordSaladCount | 0 | | repetitionLoopCount | 0 | | controlTokenCount | 0 | | repeatedSegmentCount | 0 | | maxSentenceWordsSeen | 45 | | ratio | 0 | | matches | (empty) | |
| 100.00% | Markdown formatting overuse | Target: ≤5% words in markdown formatting | | markdownSpans | 0 | | markdownWords | 0 | | totalWords | 1515 | | ratio | 0 | | matches | (empty) | |
| 100.00% | Missing dialogue indicators (quotation marks) | Target: ≤10% speech attributions without quotation marks | | totalAttributions | 7 | | unquotedAttributions | 0 | | matches | (empty) | |
| 83.33% | Name drop frequency | Target: ≤1.0 per-name mentions per 100 words | | totalMentions | 36 | | wordCount | 1437 | | uniqueNames | 14 | | maxNameDensity | 0.77 | | worstName | "Herrera" | | maxWindowNameDensity | 2.5 | | worstWindowName | "Herrera" | | discoveredNames | | Frith | 1 | | Street | 2 | | Soho | 2 | | Quinn | 10 | | Raven | 1 | | Nest | 1 | | Herrera | 11 | | Charing | 1 | | Cross | 1 | | Road | 1 | | Old | 1 | | Compton | 1 | | Morris | 2 | | Underground | 1 |
| | persons | | 0 | "Quinn" | | 1 | "Raven" | | 2 | "Herrera" | | 3 | "Morris" |
| | places | | 0 | "Frith" | | 1 | "Street" | | 2 | "Soho" | | 3 | "Charing" | | 4 | "Cross" | | 5 | "Road" | | 6 | "Old" | | 7 | "Compton" |
| | globalScore | 1 | | windowScore | 0.833 | |
| 100.00% | Narrator intent-glossing | Target: ≤2% narration sentences with intent-glossing patterns | | analyzedSentences | 68 | | glossingSentenceCount | 1 | | matches | | 0 | "as if keeping something under his jacket dry" |
| |
| 100.00% | "Not X but Y" pattern overuse | Target: ≤1 "not X but Y" per 1000 words | | totalMatches | 1 | | per1kWords | 0.66 | | wordCount | 1515 | | matches | | 0 | "not friendliness, but a kind of grudging arithmetic, like a man recalculating a pr" |
| |
| 100.00% | Overuse of "that" (subordinate clause padding) | Target: ≤2% sentences with "that" clauses | | thatCount | 1 | | totalSentences | 106 | | matches | | |
| 100.00% | Paragraph length variance | Target: CV ≥0.5 for paragraph word counts | | totalParagraphs | 40 | | mean | 37.88 | | std | 30.07 | | cv | 0.794 | | sampleLengths | | 0 | 64 | | 1 | 5 | | 2 | 32 | | 3 | 88 | | 4 | 9 | | 5 | 38 | | 6 | 9 | | 7 | 62 | | 8 | 6 | | 9 | 21 | | 10 | 66 | | 11 | 60 | | 12 | 44 | | 13 | 7 | | 14 | 11 | | 15 | 68 | | 16 | 76 | | 17 | 5 | | 18 | 115 | | 19 | 43 | | 20 | 22 | | 21 | 15 | | 22 | 40 | | 23 | 9 | | 24 | 105 | | 25 | 12 | | 26 | 12 | | 27 | 6 | | 28 | 51 | | 29 | 70 | | 30 | 75 | | 31 | 62 | | 32 | 15 | | 33 | 56 | | 34 | 11 | | 35 | 18 | | 36 | 25 | | 37 | 61 | | 38 | 17 | | 39 | 4 |
| |
| 94.52% | Passive voice overuse | Target: ≤2% passive sentences | | passiveCount | 3 | | totalSentences | 98 | | matches | | 0 | "being followed " | | 1 | "was gone" | | 2 | "been told" |
| |
| 85.55% | Past progressive (was/were + -ing) overuse | Target: ≤2% past progressive verbs | | pastProgressiveCount | 4 | | totalVerbs | 233 | | matches | | 0 | "was walking" | | 1 | "was sprinting" | | 2 | "was standing" | | 3 | "was following" |
| |
| 0.00% | Em-dash & semicolon overuse | Target: ≤2% sentences with em-dashes/semicolons | | emDashCount | 7 | | semicolonCount | 0 | | flaggedSentences | 7 | | totalSentences | 106 | | ratio | 0.066 | | matches | | 0 | "Herrera walked like a man who knew he was being followed — too casual, checking reflections in darkened shopfronts, pausing at corners he didn't need to pause at." | | 1 | "No — she didn't slow, her body slowed, the street ending at a hoarding of chipboard and spray paint where he'd been standing a second before." | | 2 | "Herrera said something quieter, and his hand came out of his jacket — and Quinn saw it, the small pale thing he'd been keeping dry all night." | | 3 | "Not this one — a door like it, a place that shouldn't have been there, a case file that ended in a single line about an unexplained absence of evidence." | | 4 | "That she could walk back up those stairs, back into the rain, back to a station and a cold desk and a file with a number on it — and spend the rest of her eighteen years reading that same line about the absence of evidence." | | 5 | "The smell from behind the wall was stronger here, and under the sweetness there was something else — old stone, and rain, and the faint electric hum of a city that kept its second self hidden." | | 6 | "He looked at her for a long moment, and something in his face shifted — not friendliness, but a kind of grudging arithmetic, like a man recalculating a price." |
| |
| 100.00% | Purple prose (modifier overload) | Target: <4% adverbs, <2% -ly adverbs, no adj stacking | | wordCount | 1434 | | adjectiveStacks | 0 | | stackExamples | (empty) | | adverbCount | 41 | | adverbRatio | 0.028591352859135284 | | lyAdverbCount | 4 | | lyAdverbRatio | 0.002789400278940028 | |
| 100.00% | Repeated phrase echo | Target: ≤20% sentences with echoes (window: 2) | | totalSentences | 106 | | echoCount | 0 | | echoWords | (empty) | |
| 100.00% | Sentence length variance | Target: CV ≥0.4 for sentence word counts | | totalSentences | 106 | | mean | 14.29 | | std | 11.73 | | cv | 0.821 | | sampleLengths | | 0 | 22 | | 1 | 23 | | 2 | 19 | | 3 | 2 | | 4 | 3 | | 5 | 26 | | 6 | 6 | | 7 | 34 | | 8 | 28 | | 9 | 26 | | 10 | 9 | | 11 | 38 | | 12 | 7 | | 13 | 2 | | 14 | 30 | | 15 | 16 | | 16 | 16 | | 17 | 5 | | 18 | 1 | | 19 | 2 | | 20 | 11 | | 21 | 8 | | 22 | 4 | | 23 | 3 | | 24 | 28 | | 25 | 21 | | 26 | 7 | | 27 | 3 | | 28 | 32 | | 29 | 28 | | 30 | 33 | | 31 | 5 | | 32 | 2 | | 33 | 4 | | 34 | 7 | | 35 | 11 | | 36 | 6 | | 37 | 20 | | 38 | 26 | | 39 | 16 | | 40 | 2 | | 41 | 26 | | 42 | 34 | | 43 | 14 | | 44 | 2 | | 45 | 3 | | 46 | 20 | | 47 | 44 | | 48 | 8 | | 49 | 10 |
| |
| 63.21% | Sentence opener variety | Target: ≥60% unique sentence openers | | consecutiveRepeats | 8 | | diversityRatio | 0.42452830188679247 | | totalSentences | 106 | | uniqueOpeners | 45 | |
| 100.00% | Adverb-first sentence starts | Target: ≥3% sentences starting with an adverb | | adverbCount | 5 | | totalSentences | 88 | | matches | | 0 | "Actually laughed, breathless, over his" | | 1 | "Somewhere in the last ten" | | 2 | "Then it did, and warm" | | 3 | "Then he reached out and" | | 4 | "Then she stepped through." |
| | ratio | 0.057 | |
| 100.00% | Pronoun-first sentence starts | Target: ≤30% sentences starting with a pronoun | | pronounCount | 26 | | totalSentences | 88 | | matches | | 0 | "He turned south toward Charing" | | 1 | "She kept a half-street gap" | | 2 | "He had the lighter frame" | | 3 | "He vaulted a delivery bike" | | 4 | "She hurdled the same bike" | | 5 | "she called out" | | 6 | "He knew her rank." | | 7 | "He knew her." | | 8 | "She followed him over a" | | 9 | "She didn't look." | | 10 | "She had her radio out," | | 11 | "She looked at the display." | | 12 | "She shoved the radio back" | | 13 | "She approached it with her" | | 14 | "She went anyway." | | 15 | "Her hand had gone to" | | 16 | "She'd stopped winding it the" | | 17 | "She wore it the way" | | 18 | "She'd read that line so" | | 19 | "She thought about backup." |
| | ratio | 0.295 | |
| 67.95% | Subject-first sentence starts | Target: ≤72% sentences starting with a subject | | subjectCount | 69 | | totalSentences | 88 | | matches | | 0 | "The rain had turned Frith" | | 1 | "Harlow Quinn stood beneath the" | | 2 | "The sign buzzed and stuttered," | | 3 | "He turned south toward Charing" | | 4 | "Quinn counted to ten, then" | | 5 | "She kept a half-street gap" | | 6 | "Herrera walked like a man" | | 7 | "One second he was walking," | | 8 | "Quinn's shout vanished into the" | | 9 | "He had the lighter frame" | | 10 | "He vaulted a delivery bike" | | 11 | "She hurdled the same bike" | | 12 | "she called out" | | 13 | "He knew her rank." | | 14 | "He knew her." | | 15 | "That landed somewhere under her" | | 16 | "She followed him over a" | | 17 | "She didn't look." | | 18 | "The alley spat them out" | | 19 | "Quinn went around, through a" |
| | ratio | 0.784 | |
| 0.00% | Subordinate conjunction sentence starts | Target: ≥2% sentences starting with a subordinating conjunction | | subConjCount | 0 | | totalSentences | 88 | | matches | (empty) | | ratio | 0 | |
| 26.24% | Technical jargon density | Target: ≤6% sentences with technical-jargon patterns | | analyzedSentences | 49 | | technicalSentenceCount | 8 | | matches | | 0 | "He turned south toward Charing Cross Road, head bent against the rain, one hand pressed to his chest as if keeping something under his jacket dry." | | 1 | "Herrera walked like a man who knew he was being followed — too casual, checking reflections in darkened shopfronts, pausing at corners he didn't need to pause a…" | | 2 | "One second he was walking, the next he was sprinting, cutting across the wet road between two black cabs, one of which leaned on its horn long enough to cover t…" | | 3 | "Below her stretched a stairwell, its railing rusted to lace, its steps slick with rain that ran down from somewhere above and pooled at the bottom around a tile…" | | 4 | "Camden had half a dozen of them, sealed off and forgotten, and she was standing at the top of one with her pulse hammering in her ears." | | 5 | "Not this one — a door like it, a place that shouldn't have been there, a case file that ended in a single line about an unexplained absence of evidence." | | 6 | "She thought about Herrera's laugh in the street, the ease of it, a man who'd been told exactly who was following him and hadn't bothered to run properly until i…" | | 7 | "The smell from behind the wall was stronger here, and under the sweetness there was something else — old stone, and rain, and the faint electric hum of a city t…" |
| |
| 100.00% | Useless dialogue additions | Target: ≤5% dialogue tags with trailing filler fragments | | totalTags | 9 | | uselessAdditionCount | 0 | | matches | (empty) | |
| 100.00% | Dialogue tag variety (said vs. fancy) | Target: ≤10% fancy dialogue tags | | totalTags | 2 | | fancyCount | 0 | | fancyTags | (empty) | | dialogueSentences | 17 | | tagDensity | 0.118 | | leniency | 0.235 | | rawRatio | 0 | | effectiveRatio | 0 | |