| 100.00% | Adverbs in dialogue tags | Target: ≤10% dialogue tags with adverbs | |
| 75.43% | AI-ism adverb frequency | Target: <2% AI-ism adverbs (58 tracked) | | wordCount | 814 | | totalAiIsmAdverbs | 4 | | found | | | highlights | | 0 | "completely" | | 1 | "slowly" | | 2 | "tightly" |
| |
| 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.43% | AI-ism word frequency | Target: <2% AI-ism words (290 tracked) | | wordCount | 814 | | totalAiIsms | 4 | | found | | | highlights | | 0 | "etched" | | 1 | "magnetic" | | 2 | "mechanical" | | 3 | "pulsed" |
| |
| 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 | 61 | | matches | (empty) | |
| 96.02% | Filter word density | Target: ≤3% sentences with filter/hedge words | | filterCount | 1 | | hedgeCount | 1 | | narrationSentences | 61 | | filterMatches | | | hedgeMatches | | |
| 100.00% | Gibberish response detection | Target: ≤1% gibberish-like sentences (hard fail if a sentence exceeds 800 words) | | analyzedSentences | 61 | | gibberishSentences | 0 | | adjustedGibberishSentences | 0 | | longSentenceCount | 0 | | runOnParagraphCount | 0 | | giantParagraphCount | 0 | | wordSaladCount | 0 | | repetitionLoopCount | 0 | | controlTokenCount | 0 | | repeatedSegmentCount | 0 | | maxSentenceWordsSeen | 48 | | ratio | 0 | | matches | (empty) | |
| 100.00% | Markdown formatting overuse | Target: ≤5% words in markdown formatting | | markdownSpans | 0 | | markdownWords | 0 | | totalWords | 812 | | ratio | 0 | | matches | (empty) | |
| 0.00% | Missing dialogue indicators (quotation marks) | Target: ≤10% speech attributions without quotation marks | | totalAttributions | 4 | | unquotedAttributions | 2 | | matches | | 0 | "Open and shut, Vance muttered, not looking up from his crouching position." | | 1 | "Look closer, Vance, she said, her voice dropping into that low, flat register that usually preceded a suspension or a co…" |
| |
| 83.33% | Name drop frequency | Target: ≤1.0 per-name mentions per 100 words | | totalMentions | 34 | | wordCount | 812 | | uniqueNames | 14 | | maxNameDensity | 1.23 | | worstName | "Vance" | | maxWindowNameDensity | 2.5 | | worstWindowName | "Vance" | | discoveredNames | | Harlow | 2 | | Quinn | 9 | | Tube | 1 | | Camden | 2 | | Northern | 1 | | Line | 1 | | Metropolitan | 1 | | Police | 1 | | London | 2 | | Transport | 1 | | Inspector | 1 | | Vance | 10 | | Tuesday | 1 | | Morris | 1 |
| | persons | | 0 | "Harlow" | | 1 | "Quinn" | | 2 | "Camden" | | 3 | "Line" | | 4 | "Police" | | 5 | "Transport" | | 6 | "Inspector" | | 7 | "Vance" | | 8 | "Morris" |
| | places | | | globalScore | 0.884 | | windowScore | 0.833 | |
| 100.00% | Narrator intent-glossing | Target: ≤2% narration sentences with intent-glossing patterns | | analyzedSentences | 49 | | glossingSentenceCount | 0 | | matches | (empty) | |
| 76.85% | "Not X but Y" pattern overuse | Target: ≤1 "not X but Y" per 1000 words | | totalMatches | 1 | | per1kWords | 1.232 | | wordCount | 812 | | matches | | 0 | "not on the victim, but on the dust" |
| |
| 100.00% | Overuse of "that" (subordinate clause padding) | Target: ≤2% sentences with "that" clauses | | thatCount | 0 | | totalSentences | 61 | | matches | (empty) | |
| 100.00% | Paragraph length variance | Target: CV ≥0.5 for paragraph word counts | | totalParagraphs | 20 | | mean | 40.6 | | std | 24.69 | | cv | 0.608 | | sampleLengths | | 0 | 49 | | 1 | 52 | | 2 | 96 | | 3 | 34 | | 4 | 59 | | 5 | 33 | | 6 | 21 | | 7 | 44 | | 8 | 28 | | 9 | 57 | | 10 | 19 | | 11 | 41 | | 12 | 61 | | 13 | 43 | | 14 | 26 | | 15 | 98 | | 16 | 21 | | 17 | 6 | | 18 | 17 | | 19 | 7 |
| |
| 82.25% | Passive voice overuse | Target: ≤2% passive sentences | | passiveCount | 4 | | totalSentences | 61 | | matches | | 0 | "been bricked" | | 1 | "got tossed" | | 2 | "is rusted" | | 3 | "were curled" |
| |
| 0.00% | Past progressive (was/were + -ing) overuse | Target: ≤2% past progressive verbs | | pastProgressiveCount | 4 | | totalVerbs | 128 | | matches | | 0 | "was spinning" | | 1 | "was carrying" | | 2 | "was ticking" | | 3 | "wasn't pointing" |
| |
| 2.34% | Em-dash & semicolon overuse | Target: ≤2% sentences with em-dashes/semicolons | | emDashCount | 2 | | semicolonCount | 1 | | flaggedSentences | 3 | | totalSentences | 61 | | ratio | 0.049 | | matches | | 0 | "They were curled tightly around a small, scorched bone token, the kind she had started seeing turning up in pockets of strange young people she’d been tracking for months—a clique of university researchers and occult dabblers who seemed to operate outside the normal laws of the city." | | 1 | "The brass compass was ticking now—a faint, mechanical stutter that sounded almost like a heartbeat." | | 2 | "The needle wasn't pointing north; it was trembling violently toward a crack in the damp brickwork where a faint, violet luminescence pulsed just beneath the surface of the stone." |
| |
| 100.00% | Purple prose (modifier overload) | Target: <4% adverbs, <2% -ly adverbs, no adj stacking | | wordCount | 819 | | adjectiveStacks | 0 | | stackExamples | (empty) | | adverbCount | 25 | | adverbRatio | 0.030525030525030524 | | lyAdverbCount | 14 | | lyAdverbRatio | 0.017094017094017096 | |
| 100.00% | Repeated phrase echo | Target: ≤20% sentences with echoes (window: 2) | | totalSentences | 61 | | echoCount | 0 | | echoWords | (empty) | |
| 100.00% | Sentence length variance | Target: CV ≥0.4 for sentence word counts | | totalSentences | 61 | | mean | 13.31 | | std | 8.37 | | cv | 0.629 | | sampleLengths | | 0 | 26 | | 1 | 23 | | 2 | 21 | | 3 | 31 | | 4 | 12 | | 5 | 14 | | 6 | 9 | | 7 | 4 | | 8 | 16 | | 9 | 22 | | 10 | 19 | | 11 | 17 | | 12 | 17 | | 13 | 12 | | 14 | 13 | | 15 | 15 | | 16 | 9 | | 17 | 10 | | 18 | 3 | | 19 | 19 | | 20 | 11 | | 21 | 21 | | 22 | 10 | | 23 | 5 | | 24 | 5 | | 25 | 3 | | 26 | 21 | | 27 | 11 | | 28 | 12 | | 29 | 5 | | 30 | 10 | | 31 | 15 | | 32 | 10 | | 33 | 7 | | 34 | 15 | | 35 | 8 | | 36 | 5 | | 37 | 6 | | 38 | 10 | | 39 | 15 | | 40 | 14 | | 41 | 2 | | 42 | 14 | | 43 | 47 | | 44 | 22 | | 45 | 13 | | 46 | 3 | | 47 | 5 | | 48 | 9 | | 49 | 5 |
| |
| 85.25% | Sentence opener variety | Target: ≥60% unique sentence openers | | consecutiveRepeats | 3 | | diversityRatio | 0.5409836065573771 | | totalSentences | 61 | | uniqueOpeners | 33 | |
| 100.00% | Adverb-first sentence starts | Target: ≥3% sentences starting with an adverb | | adverbCount | 2 | | totalSentences | 60 | | matches | | 0 | "Maybe they used a crane." | | 1 | "Then how did he get" |
| | ratio | 0.033 | |
| 100.00% | Pronoun-first sentence starts | Target: ≤30% sentences starting with a pronoun | | pronounCount | 16 | | totalSentences | 60 | | matches | | 0 | "Her sharp jaw tightened as" | | 1 | "It was the logistics." | | 2 | "He nudged the small brass" | | 3 | "Her closely cropped salt-and-pepper hair" | | 4 | "Her bearing was one of" | | 5 | "We find the local dealer" | | 6 | "She trained her torch not" | | 7 | "she asked, her brown eyes" | | 8 | "She crouched down next to" | | 9 | "They were curled tightly around" | | 10 | "It shouldn't be." | | 11 | "It's forty degrees down here." | | 12 | "You sound like one of" | | 13 | "Her mind tracked back three" | | 14 | "They didn't push him, Vance," | | 15 | "He didn't come from London" |
| | ratio | 0.267 | |
| 100.00% | Subject-first sentence starts | Target: ≤72% sentences starting with a subject | | subjectCount | 39 | | totalSentences | 60 | | matches | | 0 | "Detective Harlow Quinn stood on" | | 1 | "Quinn adjusted the worn leather" | | 2 | "Her sharp jaw tightened as" | | 3 | "A body lay sprawled across" | | 4 | "It was the logistics." | | 5 | "The station had been bricked" | | 6 | "Vance was a company man" | | 7 | "He nudged the small brass" | | 8 | "Face etched with protective sigils," | | 9 | "Looks like a turf war" | | 10 | "Someone got tossed over the" | | 11 | "Quinn didn't move." | | 12 | "Her closely cropped salt-and-pepper hair" | | 13 | "Her bearing was one of" | | 14 | "Vance sighed, standing up and" | | 15 | "Cause of death is obvious." | | 16 | "We find the local dealer" | | 17 | "Quinn walked the perimeter of" | | 18 | "She trained her torch not" | | 19 | "The absolute absence of it." |
| | ratio | 0.65 | |
| 100.00% | Subordinate conjunction sentence starts | Target: ≥2% sentences starting with a subordinating conjunction | | subConjCount | 2 | | totalSentences | 60 | | matches | | 0 | "If someone threw him over," | | 1 | "If a wrench had touched" |
| | ratio | 0.033 | |
| 100.00% | Technical jargon density | Target: ≤6% sentences with technical-jargon patterns | | analyzedSentences | 41 | | technicalSentenceCount | 2 | | matches | | 0 | "They were curled tightly around a small, scorched bone token, the kind she had started seeing turning up in pockets of strange young people she’d been tracking …" | | 1 | "The brass compass was ticking now—a faint, mechanical stutter that sounded almost like a heartbeat." |
| |
| 100.00% | Useless dialogue additions | Target: ≤5% dialogue tags with trailing filler fragments | | totalTags | 0 | | uselessAdditionCount | 0 | | matches | (empty) | |
| 100.00% | Dialogue tag variety (said vs. fancy) | Target: ≤10% fancy dialogue tags | |