| 100.00% | Adverbs in dialogue tags | Target: ≤10% dialogue tags with adverbs | | totalTags | 7 | | adverbTagCount | 0 | | adverbTags | (empty) | | dialogueSentences | 15 | | tagDensity | 0.467 | | leniency | 0.933 | | rawRatio | 0 | | effectiveRatio | 0 | |
| 91.88% | AI-ism adverb frequency | Target: <2% AI-ism adverbs (58 tracked) | | wordCount | 1232 | | 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) | |
| 75.65% | AI-ism word frequency | Target: <2% AI-ism words (290 tracked) | | wordCount | 1232 | | totalAiIsms | 6 | | found | | | highlights | | 0 | "pulse" | | 1 | "streaming" | | 2 | "silence" | | 3 | "pulsed" | | 4 | "glinting" | | 5 | "warmth" |
| |
| 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 | 90 | | matches | (empty) | |
| 100.00% | Filter word density | Target: ≤3% sentences with filter/hedge words | | filterCount | 1 | | hedgeCount | 0 | | narrationSentences | 90 | | filterMatches | | | hedgeMatches | (empty) | |
| 100.00% | Gibberish response detection | Target: ≤1% gibberish-like sentences (hard fail if a sentence exceeds 800 words) | | analyzedSentences | 97 | | gibberishSentences | 0 | | adjustedGibberishSentences | 0 | | longSentenceCount | 0 | | runOnParagraphCount | 0 | | giantParagraphCount | 0 | | wordSaladCount | 0 | | repetitionLoopCount | 0 | | controlTokenCount | 0 | | repeatedSegmentCount | 0 | | maxSentenceWordsSeen | 38 | | ratio | 0 | | matches | (empty) | |
| 100.00% | Markdown formatting overuse | Target: ≤5% words in markdown formatting | | markdownSpans | 0 | | markdownWords | 0 | | totalWords | 1224 | | ratio | 0 | | matches | (empty) | |
| 100.00% | Missing dialogue indicators (quotation marks) | Target: ≤10% speech attributions without quotation marks | | totalAttributions | 5 | | unquotedAttributions | 0 | | matches | (empty) | |
| 100.00% | Name drop frequency | Target: ≤1.0 per-name mentions per 100 words | | totalMentions | 22 | | wordCount | 1111 | | uniqueNames | 9 | | maxNameDensity | 0.81 | | worstName | "Quinn" | | maxWindowNameDensity | 1.5 | | worstWindowName | "Herrera" | | discoveredNames | | Soho | 1 | | Herrera | 5 | | Old | 1 | | Compton | 1 | | Street | 1 | | Morris | 2 | | Tube | 1 | | Underground | 1 | | Quinn | 9 |
| | persons | | 0 | "Herrera" | | 1 | "Morris" | | 2 | "Quinn" |
| | places | | 0 | "Soho" | | 1 | "Old" | | 2 | "Compton" | | 3 | "Street" | | 4 | "Tube" |
| | globalScore | 1 | | windowScore | 1 | |
| 100.00% | Narrator intent-glossing | Target: ≤2% narration sentences with intent-glossing patterns | | analyzedSentences | 63 | | 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 | 1224 | | matches | (empty) | |
| 100.00% | Overuse of "that" (subordinate clause padding) | Target: ≤2% sentences with "that" clauses | | thatCount | 1 | | totalSentences | 97 | | matches | | |
| 100.00% | Paragraph length variance | Target: CV ≥0.5 for paragraph word counts | | totalParagraphs | 39 | | mean | 31.38 | | std | 27.68 | | cv | 0.882 | | sampleLengths | | 0 | 67 | | 1 | 2 | | 2 | 6 | | 3 | 87 | | 4 | 11 | | 5 | 7 | | 6 | 21 | | 7 | 12 | | 8 | 21 | | 9 | 24 | | 10 | 66 | | 11 | 11 | | 12 | 72 | | 13 | 11 | | 14 | 50 | | 15 | 11 | | 16 | 54 | | 17 | 27 | | 18 | 1 | | 19 | 67 | | 20 | 65 | | 21 | 19 | | 22 | 11 | | 23 | 64 | | 24 | 9 | | 25 | 19 | | 26 | 92 | | 27 | 4 | | 28 | 15 | | 29 | 99 | | 30 | 11 | | 31 | 19 | | 32 | 8 | | 33 | 35 | | 34 | 12 | | 35 | 43 | | 36 | 45 | | 37 | 16 | | 38 | 10 |
| |
| 85.77% | Passive voice overuse | Target: ≤2% passive sentences | | passiveCount | 5 | | totalSentences | 90 | | matches | | 0 | "was frightened" | | 1 | "been shut" | | 2 | "was gone" | | 3 | "were stilled" | | 4 | "been hung" |
| |
| 100.00% | Past progressive (was/were + -ing) overuse | Target: ≤2% past progressive verbs | | pastProgressiveCount | 1 | | totalVerbs | 184 | | matches | | |
| 0.00% | Em-dash & semicolon overuse | Target: ≤2% sentences with em-dashes/semicolons | | emDashCount | 7 | | semicolonCount | 0 | | flaggedSentences | 7 | | totalSentences | 97 | | ratio | 0.072 | | matches | | 0 | "Three years she'd been pulling at this thread—ever since Morris vanished, since the case that everyone above her had quietly buried." | | 1 | "The Underground line through here had been shut for years—she remembered the closure, the news about subsidence, the platforms left to the dark." | | 2 | "\"—request backup at this location, do you copy.\"" | | 3 | "Inside, the air changed—warmer, close, carrying a smell that didn't belong to a dead station." | | 4 | "The walls of the shaft had been hung with cloth—heavy dark fabric, embroidered with symbols she didn't recognise, the threadwork catching her light and throwing it back in colours that shouldn't have been there." | | 5 | "Light bloomed ahead of her—lanterns strung along the curved ceiling, braziers throwing orange heat, the dead platform transformed into something she had no word for." | | 6 | "\"The kind of place you need a token to enter.\" He held up something small and yellowed between two fingers—bone, carved, no bigger than a coin." |
| |
| 100.00% | Purple prose (modifier overload) | Target: <4% adverbs, <2% -ly adverbs, no adj stacking | | wordCount | 547 | | adjectiveStacks | 0 | | stackExamples | (empty) | | adverbCount | 10 | | adverbRatio | 0.018281535648994516 | | lyAdverbCount | 2 | | lyAdverbRatio | 0.003656307129798903 | |
| 100.00% | Repeated phrase echo | Target: ≤20% sentences with echoes (window: 2) | | totalSentences | 97 | | echoCount | 0 | | echoWords | (empty) | |
| 100.00% | Sentence length variance | Target: CV ≥0.4 for sentence word counts | | totalSentences | 97 | | mean | 12.62 | | std | 8.69 | | cv | 0.689 | | sampleLengths | | 0 | 13 | | 1 | 16 | | 2 | 38 | | 3 | 2 | | 4 | 3 | | 5 | 3 | | 6 | 25 | | 7 | 34 | | 8 | 7 | | 9 | 21 | | 10 | 11 | | 11 | 7 | | 12 | 14 | | 13 | 7 | | 14 | 12 | | 15 | 12 | | 16 | 9 | | 17 | 18 | | 18 | 6 | | 19 | 20 | | 20 | 20 | | 21 | 26 | | 22 | 2 | | 23 | 9 | | 24 | 3 | | 25 | 16 | | 26 | 3 | | 27 | 21 | | 28 | 2 | | 29 | 6 | | 30 | 11 | | 31 | 5 | | 32 | 5 | | 33 | 11 | | 34 | 1 | | 35 | 23 | | 36 | 3 | | 37 | 23 | | 38 | 11 | | 39 | 25 | | 40 | 8 | | 41 | 2 | | 42 | 15 | | 43 | 4 | | 44 | 19 | | 45 | 8 | | 46 | 1 | | 47 | 4 | | 48 | 6 | | 49 | 18 |
| |
| 61.51% | Sentence opener variety | Target: ≥60% unique sentence openers | | consecutiveRepeats | 7 | | diversityRatio | 0.41237113402061853 | | totalSentences | 97 | | uniqueOpeners | 40 | |
| 40.65% | Adverb-first sentence starts | Target: ≥3% sentences starting with an adverb | | adverbCount | 1 | | totalSentences | 82 | | matches | | | ratio | 0.012 | |
| 100.00% | Pronoun-first sentence starts | Target: ≤30% sentences starting with a pronoun | | pronounCount | 22 | | totalSentences | 82 | | matches | | 0 | "He didn't stop." | | 1 | "They never did." | | 2 | "He cut left toward Old" | | 3 | "She cut right, through a" | | 4 | "He skidded to a halt" | | 5 | "His accent thickened when he" | | 6 | "He laughed, a hollow sound," | | 7 | "He ran east, then south," | | 8 | "She shouldered through, flashing her" | | 9 | "He ducked down a flight" | | 10 | "Her hand found the radio" | | 11 | "She thumbed it anyway." | | 12 | "She lowered the radio." | | 13 | "They'd never found him." | | 14 | "She wasn't going to stand" | | 15 | "Her torch beam swept across" | | 16 | "Her voice came back flat," | | 17 | "She started down, baton in" | | 18 | "He stood ten feet inside," | | 19 | "Her mouth had gone dry." |
| | ratio | 0.268 | |
| 63.66% | Subject-first sentence starts | Target: ≤72% sentences starting with a subject | | subjectCount | 65 | | totalSentences | 82 | | matches | | 0 | "Quinn ran, boots slapping puddles," | | 1 | "He didn't stop." | | 2 | "They never did." | | 3 | "Quinn vaulted a low chain" | | 4 | "Tomás Herrera had a paramedic's" | | 5 | "He cut left toward Old" | | 6 | "She cut right, through a" | | 7 | "He skidded to a halt" | | 8 | "His accent thickened when he" | | 9 | "He laughed, a hollow sound," | | 10 | "A taxi sluiced past, its" | | 11 | "Quinn swore and went after" | | 12 | "He ran east, then south," | | 13 | "She shouldered through, flashing her" | | 14 | "The bus driver's curse chased" | | 15 | "The streets narrowed." | | 16 | "Georgian frontages gave way to" | | 17 | "Quinn's lungs burned." | | 18 | "The bar with the green" | | 19 | "The men and women who" |
| | ratio | 0.793 | |
| 60.98% | Subordinate conjunction sentence starts | Target: ≥2% sentences starting with a subordinating conjunction | | subConjCount | 1 | | totalSentences | 82 | | matches | | | ratio | 0.012 | |
| 66.87% | Technical jargon density | Target: ≤6% sentences with technical-jargon patterns | | analyzedSentences | 47 | | technicalSentenceCount | 5 | | matches | | 0 | "Quinn ran, boots slapping puddles, her breath sawing in time with the pulse behind her eyes." | | 1 | "The detective who chased a suspect alone into a derelict tunnel with no comms and no support was the detective who ended up in the incident reports she filed fo…" | | 2 | "The walls of the shaft had been hung with cloth—heavy dark fabric, embroidered with symbols she didn't recognise, the threadwork catching her light and throwing…" | | 3 | "People moved between them, hooded, masked, their voices a low murmur in languages that slid past her ears." | | 4 | "He stood ten feet inside, half-lit by a brazier, the medallion at his throat glinting, his chest still heaving from the run." |
| |
| 53.57% | Useless dialogue additions | Target: ≤5% dialogue tags with trailing filler fragments | | totalTags | 7 | | uselessAdditionCount | 1 | | matches | | 0 | "His accent thickened, the consonants sharpening" |
| |
| 100.00% | Dialogue tag variety (said vs. fancy) | Target: ≤10% fancy dialogue tags | | totalTags | 3 | | fancyCount | 0 | | fancyTags | (empty) | | dialogueSentences | 15 | | tagDensity | 0.2 | | leniency | 0.4 | | rawRatio | 0 | | effectiveRatio | 0 | |