| 100.00% | Adverbs in dialogue tags | Target: ≤10% dialogue tags with adverbs | | totalTags | 3 | | adverbTagCount | 0 | | adverbTags | (empty) | | dialogueSentences | 0 | | tagDensity | 1 | | leniency | 1 | | rawRatio | 0 | | effectiveRatio | 0 | |
| 92.65% | AI-ism adverb frequency | Target: <2% AI-ism adverbs (58 tracked) | | wordCount | 1360 | | 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) | |
| 92.65% | AI-ism word frequency | Target: <2% AI-ism words (290 tracked) | | wordCount | 1360 | | totalAiIsms | 2 | | found | | | highlights | | |
| 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 | 99 | | matches | (empty) | |
| 100.00% | Filter word density | Target: ≤3% sentences with filter/hedge words | | filterCount | 2 | | hedgeCount | 0 | | narrationSentences | 99 | | filterMatches | | | hedgeMatches | (empty) | |
| 100.00% | Gibberish response detection | Target: ≤1% gibberish-like sentences (hard fail if a sentence exceeds 800 words) | | analyzedSentences | 109 | | gibberishSentences | 0 | | adjustedGibberishSentences | 0 | | longSentenceCount | 0 | | runOnParagraphCount | 0 | | giantParagraphCount | 0 | | wordSaladCount | 0 | | repetitionLoopCount | 0 | | controlTokenCount | 0 | | repeatedSegmentCount | 0 | | maxSentenceWordsSeen | 66 | | ratio | 0 | | matches | (empty) | |
| 100.00% | Markdown formatting overuse | Target: ≤5% words in markdown formatting | | markdownSpans | 1 | | markdownWords | 10 | | totalWords | 1378 | | ratio | 0.007 | | matches | | 0 | "give it a minute, Harlow, let's wait for the shout" |
| |
| 100.00% | Missing dialogue indicators (quotation marks) | Target: ≤10% speech attributions without quotation marks | | totalAttributions | 11 | | unquotedAttributions | 0 | | matches | (empty) | |
| 100.00% | Name drop frequency | Target: ≤1.0 per-name mentions per 100 words | | totalMentions | 24 | | wordCount | 1303 | | uniqueNames | 16 | | maxNameDensity | 0.31 | | worstName | "Harlow" | | maxWindowNameDensity | 1 | | worstWindowName | "Harlow" | | discoveredNames | | Soho | 1 | | Harlow | 4 | | Quinn | 2 | | Raven | 1 | | Nest | 1 | | Herrera | 2 | | General | 1 | | Medical | 1 | | Council | 1 | | Saint | 1 | | Christopher | 1 | | Northern | 1 | | Morris | 3 | | Tomás | 2 | | Veil | 1 | | Market | 1 |
| | persons | | 0 | "Harlow" | | 1 | "Quinn" | | 2 | "Raven" | | 3 | "Nest" | | 4 | "Herrera" | | 5 | "Council" | | 6 | "Saint" | | 7 | "Christopher" | | 8 | "Morris" | | 9 | "Tomás" | | 10 | "Market" |
| | places | | | globalScore | 1 | | windowScore | 1 | |
| 100.00% | Narrator intent-glossing | Target: ≤2% narration sentences with intent-glossing patterns | | analyzedSentences | 64 | | glossingSentenceCount | 1 | | matches | | 0 | "something like burnt sugar, something like t" | | 1 | "something like the inside of a church" |
| |
| 100.00% | "Not X but Y" pattern overuse | Target: ≤1 "not X but Y" per 1000 words | | totalMatches | 0 | | per1kWords | 0 | | wordCount | 1378 | | matches | (empty) | |
| 100.00% | Overuse of "that" (subordinate clause padding) | Target: ≤2% sentences with "that" clauses | | thatCount | 0 | | totalSentences | 109 | | matches | (empty) | |
| 100.00% | Paragraph length variance | Target: CV ≥0.5 for paragraph word counts | | totalParagraphs | 42 | | mean | 32.81 | | std | 30.94 | | cv | 0.943 | | sampleLengths | | 0 | 41 | | 1 | 66 | | 2 | 14 | | 3 | 68 | | 4 | 8 | | 5 | 1 | | 6 | 4 | | 7 | 69 | | 8 | 3 | | 9 | 16 | | 10 | 77 | | 11 | 59 | | 12 | 9 | | 13 | 9 | | 14 | 10 | | 15 | 82 | | 16 | 23 | | 17 | 118 | | 18 | 3 | | 19 | 52 | | 20 | 37 | | 21 | 6 | | 22 | 41 | | 23 | 10 | | 24 | 7 | | 25 | 73 | | 26 | 14 | | 27 | 13 | | 28 | 36 | | 29 | 6 | | 30 | 5 | | 31 | 5 | | 32 | 91 | | 33 | 49 | | 34 | 16 | | 35 | 97 | | 36 | 14 | | 37 | 28 | | 38 | 12 | | 39 | 59 | | 40 | 25 | | 41 | 2 |
| |
| 98.17% | Passive voice overuse | Target: ≤2% passive sentences | | passiveCount | 2 | | totalSentences | 99 | | matches | | 0 | "was armed" | | 1 | "was rolled" |
| |
| 66.67% | Past progressive (was/were + -ing) overuse | Target: ≤2% past progressive verbs | | pastProgressiveCount | 4 | | totalVerbs | 200 | | matches | | 0 | "was gaining" | | 1 | "was looking" | | 2 | "was handing" | | 3 | "were speaking" |
| |
| 0.00% | Em-dash & semicolon overuse | Target: ≤2% sentences with em-dashes/semicolons | | emDashCount | 17 | | semicolonCount | 2 | | flaggedSentences | 13 | | totalSentences | 109 | | ratio | 0.119 | | matches | | 0 | "That was the thing about a tail — your body recognized people before your brain caught up." | | 1 | "She saw his face properly then — olive skin, dark eyes, young." | | 2 | "Something in her coat pocket cracked — her phone, probably — and she was up and running before she'd finished the thought." | | 3 | "This was a disused section of the Northern line, bricked off in the nineties, fenced, sealed, chained — she'd read the files." | | 4 | "And there was a hard little voice at the back of her skull — the voice that had been there three years ago, in a different stairwell, in a different borough, with Morris standing beside her saying *give it a minute, Harlow, let's wait for the shout* — and Morris had died anyway, and the report into it had been six pages of things that didn't add up." | | 5 | "This was worse and better at once — tallow, ozone, something like burnt sugar, something like the inside of a church." | | 6 | "She was fast; she was armed; she was a detective with eighteen years and a commendation or two." | | 7 | "Then he put his hand into the bowl and drew out a bone — a finger bone, small and yellowed — and held it up between two fingers, and said, 'First one's on the house, Detective.'" | | 8 | "Stalls lined both walls, hung with cloth and lit with lamps of a colour she had no word for — amber, but not amber." | | 9 | "They moved between the tables and nobody — nobody — was looking at her." | | 10 | "He was handing something to the woman behind the table — a package wrapped in cloth, small, and she was handing him something back — coins?" | | 11 | "— and they were speaking low and fast in a language Harlow didn't know." | | 12 | "And somewhere behind her, in the dark past the end of the platform, in the place the light didn't reach, a door opened — and it was the same soft amber, and the same tallow smell, and it was the same sound the door had made three years ago when Morris had walked through it and never come back." |
| |
| 100.00% | Purple prose (modifier overload) | Target: <4% adverbs, <2% -ly adverbs, no adj stacking | | wordCount | 275 | | adjectiveStacks | 0 | | stackExamples | (empty) | | adverbCount | 7 | | adverbRatio | 0.025454545454545455 | | lyAdverbCount | 3 | | lyAdverbRatio | 0.01090909090909091 | |
| 100.00% | Repeated phrase echo | Target: ≤20% sentences with echoes (window: 2) | | totalSentences | 109 | | echoCount | 0 | | echoWords | (empty) | |
| 100.00% | Sentence length variance | Target: CV ≥0.4 for sentence word counts | | totalSentences | 109 | | mean | 12.64 | | std | 12.71 | | cv | 1.005 | | sampleLengths | | 0 | 41 | | 1 | 9 | | 2 | 17 | | 3 | 18 | | 4 | 2 | | 5 | 1 | | 6 | 19 | | 7 | 4 | | 8 | 3 | | 9 | 7 | | 10 | 3 | | 11 | 6 | | 12 | 30 | | 13 | 29 | | 14 | 8 | | 15 | 1 | | 16 | 4 | | 17 | 18 | | 18 | 12 | | 19 | 4 | | 20 | 20 | | 21 | 15 | | 22 | 3 | | 23 | 13 | | 24 | 3 | | 25 | 45 | | 26 | 5 | | 27 | 5 | | 28 | 22 | | 29 | 20 | | 30 | 7 | | 31 | 32 | | 32 | 4 | | 33 | 5 | | 34 | 9 | | 35 | 10 | | 36 | 2 | | 37 | 18 | | 38 | 5 | | 39 | 22 | | 40 | 35 | | 41 | 23 | | 42 | 7 | | 43 | 9 | | 44 | 8 | | 45 | 26 | | 46 | 68 | | 47 | 3 | | 48 | 20 | | 49 | 5 |
| |
| 67.58% | Sentence opener variety | Target: ≥60% unique sentence openers | | consecutiveRepeats | 8 | | diversityRatio | 0.44954128440366975 | | totalSentences | 109 | | uniqueOpeners | 49 | |
| 100.00% | Adverb-first sentence starts | Target: ≥3% sentences starting with an adverb | | adverbCount | 4 | | totalSentences | 89 | | matches | | 0 | "Then she stepped out into" | | 1 | "Then he ran." | | 2 | "Then he put his hand" | | 3 | "Somewhere with spray-paint and sleeping" |
| | ratio | 0.045 | |
| 62.70% | Pronoun-first sentence starts | Target: ≤30% sentences starting with a pronoun | | pronounCount | 35 | | totalSentences | 89 | | matches | | 0 | "She knew him before she" | | 1 | "She checked her watch." | | 2 | "She didn't hurry." | | 3 | "She kept to the far" | | 4 | "He walked east, hands in" | | 5 | "She saw his face properly" | | 6 | "He wore it outside his" | | 7 | "He went over a low" | | 8 | "Her palms hit wet brick." | | 9 | "Her knees took the landing." | | 10 | "He was fast but he" | | 11 | "She was gaining on him," | | 12 | "He cut left through a" | | 13 | "She came through it at" | | 14 | "It shouldn't have been there." | | 15 | "She stood at the top" | | 16 | "Her radio had been hissing" | | 17 | "Her phone was likely dead" | | 18 | "She went down." | | 19 | "It stood open in a" |
| | ratio | 0.393 | |
| 100.00% | Subject-first sentence starts | Target: ≤72% sentences starting with a subject | | subjectCount | 59 | | totalSentences | 89 | | matches | | 0 | "The rain came off the" | | 1 | "She knew him before she" | | 2 | "That was the thing about" | | 3 | "She checked her watch." | | 4 | "She didn't hurry." | | 5 | "Hurrying was how you lost" | | 6 | "She kept to the far" | | 7 | "He walked east, hands in" | | 8 | "She saw his face properly" | | 9 | "He wore it outside his" | | 10 | "He went over a low" | | 11 | "Her palms hit wet brick." | | 12 | "Her knees took the landing." | | 13 | "Something in her coat pocket" | | 14 | "Camden by then, or the" | | 15 | "He was fast but he" | | 16 | "She was gaining on him," | | 17 | "He cut left through a" | | 18 | "She came through it at" | | 19 | "A stairwell, mouth open in" |
| | ratio | 0.663 | |
| 100.00% | Subordinate conjunction sentence starts | Target: ≥2% sentences starting with a subordinating conjunction | | subConjCount | 2 | | totalSentences | 89 | | matches | | 0 | "If she went down there" | | 1 | "— and they were speaking" |
| | ratio | 0.022 | |
| 35.71% | Technical jargon density | Target: ≤6% sentences with technical-jargon patterns | | analyzedSentences | 40 | | technicalSentenceCount | 6 | | matches | | 0 | "Five-ten, compact, dark curls plastered flat by the downpour, moving like a man who'd rather not be seen." | | 1 | "He went over a low wall like a man who'd done it before and dropped into the railway cutting beyond, and she went after him without thinking, because thinking w…" | | 2 | "But the chain lay coiled on the wet ground like something shed, and a light burned somewhere far below, a soft amber glow that had no business being underground…" | | 3 | "If she went down there she went alone, without a warrant, without a cross-reference, into a place that wasn't on any map she'd ever signed for." | | 4 | "And there was a hard little voice at the back of her skull — the voice that had been there three years ago, in a different stairwell, in a different borough, wi…" | | 5 | "The ceiling arched away into gloom, ribbed with old tube tunnel brick, and under it the market stretched the length of a platform and then further, deeper, past…" |
| |
| 100.00% | Useless dialogue additions | Target: ≤5% dialogue tags with trailing filler fragments | | totalTags | 3 | | uselessAdditionCount | 0 | | matches | (empty) | |
| 100.00% | Dialogue tag variety (said vs. fancy) | Target: ≤10% fancy dialogue tags | |