| 75.00% | Adverbs in dialogue tags | Target: ≤10% dialogue tags with adverbs | | totalTags | 5 | | adverbTagCount | 1 | | adverbTags | | 0 | "she said quietly [quietly]" |
| | dialogueSentences | 16 | | tagDensity | 0.313 | | leniency | 0.625 | | rawRatio | 0.2 | | effectiveRatio | 0.125 | |
| 94.92% | AI-ism adverb frequency | Target: <2% AI-ism adverbs (58 tracked) | | wordCount | 984 | | totalAiIsmAdverbs | 1 | | 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) | |
| 54.27% | AI-ism word frequency | Target: <2% AI-ism words (290 tracked) | | wordCount | 984 | | totalAiIsms | 9 | | found | | | highlights | | 0 | "stomach" | | 1 | "calculated" | | 2 | "pulse" | | 3 | "footsteps" | | 4 | "echoed" | | 5 | "warmth" | | 6 | "porcelain" | | 7 | "perfect" | | 8 | "weight" |
| |
| 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 | 65 | | matches | (empty) | |
| 98.90% | Filter word density | Target: ≤3% sentences with filter/hedge words | | filterCount | 1 | | hedgeCount | 1 | | narrationSentences | 65 | | filterMatches | | | hedgeMatches | | |
| 100.00% | Gibberish response detection | Target: ≤1% gibberish-like sentences (hard fail if a sentence exceeds 800 words) | | analyzedSentences | 76 | | gibberishSentences | 0 | | adjustedGibberishSentences | 0 | | longSentenceCount | 0 | | runOnParagraphCount | 0 | | giantParagraphCount | 0 | | wordSaladCount | 0 | | repetitionLoopCount | 0 | | controlTokenCount | 0 | | repeatedSegmentCount | 0 | | maxSentenceWordsSeen | 44 | | ratio | 0 | | matches | (empty) | |
| 100.00% | Markdown formatting overuse | Target: ≤5% words in markdown formatting | | markdownSpans | 0 | | markdownWords | 0 | | totalWords | 976 | | ratio | 0 | | matches | (empty) | |
| 100.00% | Missing dialogue indicators (quotation marks) | Target: ≤10% speech attributions without quotation marks | | totalAttributions | 6 | | unquotedAttributions | 0 | | matches | (empty) | |
| 100.00% | Name drop frequency | Target: ≤1.0 per-name mentions per 100 words | | totalMentions | 17 | | wordCount | 897 | | uniqueNames | 7 | | maxNameDensity | 0.89 | | worstName | "Quinn" | | maxWindowNameDensity | 1.5 | | worstWindowName | "Morris" | | discoveredNames | | Camden | 1 | | High | 1 | | Street | 1 | | London | 1 | | Morris | 4 | | Tube | 1 | | Quinn | 8 |
| | persons | | | places | | 0 | "Camden" | | 1 | "High" | | 2 | "Street" | | 3 | "London" |
| | globalScore | 1 | | windowScore | 1 | |
| 100.00% | Narrator intent-glossing | Target: ≤2% narration sentences with intent-glossing patterns | | analyzedSentences | 45 | | 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 | 976 | | matches | (empty) | |
| 100.00% | Overuse of "that" (subordinate clause padding) | Target: ≤2% sentences with "that" clauses | | thatCount | 0 | | totalSentences | 76 | | matches | (empty) | |
| 100.00% | Paragraph length variance | Target: CV ≥0.5 for paragraph word counts | | totalParagraphs | 34 | | mean | 28.71 | | std | 21.65 | | cv | 0.754 | | sampleLengths | | 0 | 37 | | 1 | 2 | | 2 | 58 | | 3 | 20 | | 4 | 56 | | 5 | 6 | | 6 | 57 | | 7 | 48 | | 8 | 11 | | 9 | 37 | | 10 | 13 | | 11 | 25 | | 12 | 63 | | 13 | 61 | | 14 | 36 | | 15 | 19 | | 16 | 3 | | 17 | 6 | | 18 | 30 | | 19 | 20 | | 20 | 24 | | 21 | 2 | | 22 | 22 | | 23 | 18 | | 24 | 4 | | 25 | 5 | | 26 | 73 | | 27 | 15 | | 28 | 78 | | 29 | 7 | | 30 | 40 | | 31 | 38 | | 32 | 15 | | 33 | 27 |
| |
| 99.87% | Passive voice overuse | Target: ≤2% passive sentences | | passiveCount | 1 | | totalSentences | 65 | | matches | | |
| 100.00% | Past progressive (was/were + -ing) overuse | Target: ≤2% past progressive verbs | | pastProgressiveCount | 0 | | totalVerbs | 151 | | matches | (empty) | |
| 0.00% | Em-dash & semicolon overuse | Target: ≤2% sentences with em-dashes/semicolons | | emDashCount | 8 | | semicolonCount | 0 | | flaggedSentences | 6 | | totalSentences | 76 | | ratio | 0.079 | | matches | | 0 | "Eighteen years of chasing people through London streets, and she'd learned to read a runner's gait—the stumble of panic, the calculated sprint of someone who knew the terrain." | | 1 | "Three years since she'd watched her partner disappear into something the official report called \"structural collapse\" when she knew—knew—the walls hadn't moved on their own." | | 2 | "The stairwell bottomed out into a platform that shouldn't have existed—not on any map she'd seen, not on any transit plan filed with the city." | | 3 | "A man—if he was a man—weighed out powder on scales made of bone." | | 4 | "Quinn felt the weight of eighteen years of instinct screaming at her to retreat, and beneath that, something older and colder—the memory of Morris's face the last time she'd seen it, confused and afraid in a way she'd never seen him afraid before." | | 5 | "The suspect was gone, swallowed by the crowd, but the smell of him lingered—ozone and wet stone, something burnt at the edges." |
| |
| 100.00% | Purple prose (modifier overload) | Target: <4% adverbs, <2% -ly adverbs, no adj stacking | | wordCount | 907 | | adjectiveStacks | 0 | | stackExamples | (empty) | | adverbCount | 26 | | adverbRatio | 0.02866593164277839 | | lyAdverbCount | 4 | | lyAdverbRatio | 0.004410143329658214 | |
| 100.00% | Repeated phrase echo | Target: ≤20% sentences with echoes (window: 2) | | totalSentences | 76 | | echoCount | 0 | | echoWords | (empty) | |
| 100.00% | Sentence length variance | Target: CV ≥0.4 for sentence word counts | | totalSentences | 76 | | mean | 12.84 | | std | 9.9 | | cv | 0.771 | | sampleLengths | | 0 | 17 | | 1 | 20 | | 2 | 2 | | 3 | 7 | | 4 | 16 | | 5 | 28 | | 6 | 3 | | 7 | 4 | | 8 | 6 | | 9 | 3 | | 10 | 11 | | 11 | 19 | | 12 | 17 | | 13 | 20 | | 14 | 6 | | 15 | 13 | | 16 | 4 | | 17 | 25 | | 18 | 8 | | 19 | 7 | | 20 | 31 | | 21 | 17 | | 22 | 3 | | 23 | 4 | | 24 | 4 | | 25 | 28 | | 26 | 9 | | 27 | 9 | | 28 | 4 | | 29 | 2 | | 30 | 23 | | 31 | 25 | | 32 | 22 | | 33 | 16 | | 34 | 4 | | 35 | 28 | | 36 | 16 | | 37 | 13 | | 38 | 17 | | 39 | 7 | | 40 | 12 | | 41 | 15 | | 42 | 4 | | 43 | 3 | | 44 | 6 | | 45 | 22 | | 46 | 8 | | 47 | 20 | | 48 | 24 | | 49 | 2 |
| |
| 76.32% | Sentence opener variety | Target: ≥60% unique sentence openers | | consecutiveRepeats | 7 | | diversityRatio | 0.5131578947368421 | | totalSentences | 76 | | uniqueOpeners | 39 | |
| 100.00% | Adverb-first sentence starts | Target: ≥3% sentences starting with an adverb | | adverbCount | 4 | | totalSentences | 61 | | matches | | 0 | "Just a black coat, hood" | | 1 | "Just water dripping somewhere in" | | 2 | "Of course there wasn't." | | 3 | "Somewhere in this market, if" |
| | ratio | 0.066 | |
| 100.00% | Pronoun-first sentence starts | Target: ≤30% sentences starting with a pronoun | | pronounCount | 16 | | totalSentences | 61 | | matches | | 0 | "Her radio crackled against her" | | 1 | "She ignored it." | | 2 | "She ripped free and kept" | | 3 | "She didn't hesitate." | | 4 | "she called out" | | 5 | "he said, and his voice" | | 6 | "He held it up, something" | | 7 | "It rolled into a drain" | | 8 | "he said, and turned, melting" | | 9 | "Her radio crackled again." | | 10 | "She could go back." | | 11 | "She could write it up" | | 12 | "She thought of Morris." | | 13 | "She thought of the eight" | | 14 | "she said quietly, mostly to" | | 15 | "She stepped further onto the" |
| | ratio | 0.262 | |
| 74.75% | Subject-first sentence starts | Target: ≤72% sentences starting with a subject | | subjectCount | 47 | | totalSentences | 61 | | matches | | 0 | "Quinn's boots slapped through puddles" | | 1 | "The figure ahead didn't even" | | 2 | "This wasn't either." | | 3 | "This was something gliding." | | 4 | "Her radio crackled against her" | | 5 | "She ignored it." | | 6 | "Backup was eight minutes out," | | 7 | "The suspect cut left down" | | 8 | "Quinn hit the fence hard," | | 9 | "She ripped free and kept" | | 10 | "The words came out ragged," | | 11 | "This case had the same" | | 12 | "The same wrongness curling at" | | 13 | "The figure ducked through a" | | 14 | "Quinn's torch beam caught peeling" | | 15 | "She didn't hesitate." | | 16 | "Hesitation got people killed." | | 17 | "Hesitation got partners killed." | | 18 | "The suspect's footsteps echoed ahead," | | 19 | "she called out" |
| | ratio | 0.77 | |
| 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 | 33 | | technicalSentenceCount | 8 | | matches | | 0 | "Just a black coat, hood up, moving with an unnatural fluidity that made her stomach twist." | | 1 | "Eighteen years of chasing people through London streets, and she'd learned to read a runner's gait—the stumble of panic, the calculated sprint of someone who kn…" | | 2 | "She ripped free and kept going, the leather watch on her wrist ticking against her pulse like a second heartbeat." | | 3 | "Down she went, into a stairwell that swallowed the rain and the streetlight both, her torch beam swinging wild against walls scrawled with graffiti older than s…" | | 4 | "Just water dripping somewhere in the dark, and that liquid smoothness to his movement that made the hair on her arms stand up." | | 5 | "Lanterns hung along the walls, real flame flickering behind glass, casting a warmth that had no business existing in a dead station." | | 6 | "Dozens of them, moving between stalls built from old shop counters and shipping crates, haggling over goods that caught the lantern light in ways glass and meta…" | | 7 | "Climb the stairs, wait for backup that would arrive to find nothing but a boarded-up entrance and a missing suspect, another unexplained gap in a case file that…" |
| |
| 25.00% | Useless dialogue additions | Target: ≤5% dialogue tags with trailing filler fragments | | totalTags | 5 | | uselessAdditionCount | 1 | | matches | | 0 | "she said quietly, mostly to herself" |
| |
| 100.00% | Dialogue tag variety (said vs. fancy) | Target: ≤10% fancy dialogue tags | | totalTags | 3 | | fancyCount | 0 | | fancyTags | (empty) | | dialogueSentences | 16 | | tagDensity | 0.188 | | leniency | 0.375 | | rawRatio | 0 | | effectiveRatio | 0 | |