| 100.00% | Adverbs in dialogue tags | Target: ≤10% dialogue tags with adverbs | | totalTags | 8 | | adverbTagCount | 0 | | adverbTags | (empty) | | dialogueSentences | 43 | | tagDensity | 0.186 | | leniency | 0.372 | | rawRatio | 0 | | effectiveRatio | 0 | |
| 94.74% | AI-ism adverb frequency | Target: <2% AI-ism adverbs (58 tracked) | | wordCount | 1901 | | 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) | |
| 71.07% | AI-ism word frequency | Target: <2% AI-ism words (290 tracked) | | wordCount | 1901 | | totalAiIsms | 11 | | found | | | highlights | | 0 | "measured" | | 1 | "flickered" | | 2 | "footsteps" | | 3 | "electric" | | 4 | "velvet" | | 5 | "pulse" | | 6 | "vibrated" | | 7 | "familiar" | | 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 | 189 | | matches | (empty) | |
| 100.00% | Filter word density | Target: ≤3% sentences with filter/hedge words | | filterCount | 1 | | hedgeCount | 1 | | narrationSentences | 189 | | filterMatches | | | hedgeMatches | | |
| 100.00% | Gibberish response detection | Target: ≤1% gibberish-like sentences (hard fail if a sentence exceeds 800 words) | | analyzedSentences | 224 | | gibberishSentences | 0 | | adjustedGibberishSentences | 0 | | longSentenceCount | 0 | | runOnParagraphCount | 0 | | giantParagraphCount | 0 | | wordSaladCount | 0 | | repetitionLoopCount | 0 | | controlTokenCount | 0 | | repeatedSegmentCount | 0 | | maxSentenceWordsSeen | 39 | | ratio | 0 | | matches | (empty) | |
| 100.00% | Markdown formatting overuse | Target: ≤5% words in markdown formatting | | markdownSpans | 0 | | markdownWords | 0 | | totalWords | 1897 | | ratio | 0 | | matches | (empty) | |
| 100.00% | Missing dialogue indicators (quotation marks) | Target: ≤10% speech attributions without quotation marks | | totalAttributions | 13 | | unquotedAttributions | 0 | | matches | (empty) | |
| 54.51% | Name drop frequency | Target: ≤1.0 per-name mentions per 100 words | | totalMentions | 48 | | wordCount | 1728 | | uniqueNames | 9 | | maxNameDensity | 1.91 | | worstName | "Quinn" | | maxWindowNameDensity | 3 | | worstWindowName | "Quinn" | | discoveredNames | | Harlow | 1 | | Quinn | 33 | | Tube | 1 | | Camden | 1 | | Veil | 1 | | Market | 1 | | Morris | 3 | | Rain | 4 | | Watch | 3 |
| | persons | | 0 | "Harlow" | | 1 | "Quinn" | | 2 | "Veil" | | 3 | "Morris" | | 4 | "Rain" | | 5 | "Watch" |
| | places | | | globalScore | 0.545 | | windowScore | 0.667 | |
| 100.00% | Narrator intent-glossing | Target: ≤2% narration sentences with intent-glossing patterns | | analyzedSentences | 122 | | glossingSentenceCount | 1 | | matches | | 0 | "something like it, and the city had swallowe" |
| |
| 100.00% | "Not X but Y" pattern overuse | Target: ≤1 "not X but Y" per 1000 words | | totalMatches | 1 | | per1kWords | 0.527 | | wordCount | 1897 | | matches | | 0 | "not the empty coat this time, but his laugh over bad coffee, his impatience with bureaucracy" |
| |
| 100.00% | Overuse of "that" (subordinate clause padding) | Target: ≤2% sentences with "that" clauses | | thatCount | 1 | | totalSentences | 224 | | matches | | |
| 100.00% | Paragraph length variance | Target: CV ≥0.5 for paragraph word counts | | totalParagraphs | 108 | | mean | 17.56 | | std | 18.34 | | cv | 1.044 | | sampleLengths | | 0 | 10 | | 1 | 60 | | 2 | 4 | | 3 | 4 | | 4 | 23 | | 5 | 2 | | 6 | 40 | | 7 | 34 | | 8 | 44 | | 9 | 20 | | 10 | 1 | | 11 | 41 | | 12 | 13 | | 13 | 3 | | 14 | 46 | | 15 | 15 | | 16 | 31 | | 17 | 63 | | 18 | 31 | | 19 | 11 | | 20 | 3 | | 21 | 13 | | 22 | 7 | | 23 | 85 | | 24 | 8 | | 25 | 16 | | 26 | 36 | | 27 | 29 | | 28 | 3 | | 29 | 37 | | 30 | 4 | | 31 | 2 | | 32 | 4 | | 33 | 13 | | 34 | 1 | | 35 | 4 | | 36 | 7 | | 37 | 10 | | 38 | 46 | | 39 | 12 | | 40 | 61 | | 41 | 2 | | 42 | 21 | | 43 | 11 | | 44 | 19 | | 45 | 18 | | 46 | 4 | | 47 | 4 | | 48 | 56 | | 49 | 4 |
| |
| 97.84% | Passive voice overuse | Target: ≤2% passive sentences | | passiveCount | 4 | | totalSentences | 189 | | matches | | 0 | "was stamped" | | 1 | "been scrubbed" | | 2 | "been wedged" | | 3 | "been told" |
| |
| 100.00% | Past progressive (was/were + -ing) overuse | Target: ≤2% past progressive verbs | | pastProgressiveCount | 4 | | totalVerbs | 283 | | matches | | 0 | "was looking" | | 1 | "was trying" | | 2 | "was standing" | | 3 | "were still screaming" |
| |
| 66.33% | Em-dash & semicolon overuse | Target: ≤2% sentences with em-dashes/semicolons | | emDashCount | 5 | | semicolonCount | 2 | | flaggedSentences | 6 | | totalSentences | 224 | | ratio | 0.027 | | matches | | 0 | "The air that breathed up from below was cold and dry, carrying a smell of dust, iron, and something sharp beneath it—like crushed roots." | | 1 | "If she went deeper, she didn’t know what kind of ground she was standing on—or what waited beneath it." | | 2 | "She thought of Morris again—not the empty coat this time, but his laugh over bad coffee, his impatience with bureaucracy, the way he used to say that every locked door was only an invitation to find a window." | | 3 | "She tracked the suspect by signs: a wet footprint on a dry patch of tile; a stallholder glancing toward the east tunnel; the bitter scent of blood beneath the market’s other smells." | | 4 | "There—movement." | | 5 | "She felt the change in the air before she heard the crowd react—an abrupt hush, then a rustle of movement as people began packing goods, killing lamps, abandoning arguments mid-sentence." |
| |
| 100.00% | Purple prose (modifier overload) | Target: <4% adverbs, <2% -ly adverbs, no adj stacking | | wordCount | 1735 | | adjectiveStacks | 0 | | stackExamples | (empty) | | adverbCount | 41 | | adverbRatio | 0.02363112391930836 | | lyAdverbCount | 8 | | lyAdverbRatio | 0.004610951008645533 | |
| 100.00% | Repeated phrase echo | Target: ≤20% sentences with echoes (window: 2) | | totalSentences | 224 | | echoCount | 0 | | echoWords | (empty) | |
| 100.00% | Sentence length variance | Target: CV ≥0.4 for sentence word counts | | totalSentences | 224 | | mean | 8.47 | | std | 6.38 | | cv | 0.753 | | sampleLengths | | 0 | 10 | | 1 | 31 | | 2 | 14 | | 3 | 7 | | 4 | 8 | | 5 | 3 | | 6 | 1 | | 7 | 4 | | 8 | 11 | | 9 | 12 | | 10 | 2 | | 11 | 10 | | 12 | 15 | | 13 | 8 | | 14 | 7 | | 15 | 19 | | 16 | 3 | | 17 | 3 | | 18 | 9 | | 19 | 14 | | 20 | 3 | | 21 | 27 | | 22 | 12 | | 23 | 8 | | 24 | 1 | | 25 | 9 | | 26 | 8 | | 27 | 10 | | 28 | 9 | | 29 | 5 | | 30 | 13 | | 31 | 3 | | 32 | 8 | | 33 | 24 | | 34 | 7 | | 35 | 7 | | 36 | 2 | | 37 | 9 | | 38 | 4 | | 39 | 4 | | 40 | 18 | | 41 | 9 | | 42 | 10 | | 43 | 4 | | 44 | 16 | | 45 | 10 | | 46 | 3 | | 47 | 5 | | 48 | 15 | | 49 | 7 |
| |
| 47.47% | Sentence opener variety | Target: ≥60% unique sentence openers | | consecutiveRepeats | 12 | | diversityRatio | 0.3169642857142857 | | totalSentences | 224 | | uniqueOpeners | 71 | |
| 38.54% | Adverb-first sentence starts | Target: ≥3% sentences starting with an adverb | | adverbCount | 2 | | totalSentences | 173 | | matches | | 0 | "Then he swung around a" | | 1 | "Then she spotted the hooded" |
| | ratio | 0.012 | |
| 100.00% | Pronoun-first sentence starts | Target: ≤30% sentences starting with a pronoun | | pronounCount | 45 | | totalSentences | 173 | | matches | | 0 | "His left hand clutched something" | | 1 | "She went around the rear" | | 2 | "Her worn leather watch knocked" | | 3 | "He cut north, away from" | | 4 | "He darted through a gate" | | 5 | "It slammed shut behind him." | | 6 | "She reached it in three" | | 7 | "She holstered her weapon." | | 8 | "She drew her torch instead" | | 9 | "It was too long, too" | | 10 | "She passed a stack of" | | 11 | "Her hand went to her" | | 12 | "She could call for backup." | | 13 | "She could retreat and return" | | 14 | "She could pretend she had" | | 15 | "He was trying to force" | | 16 | "She wore a man’s overcoat," | | 17 | "She had not believed in" | | 18 | "She had believed in her" | | 19 | "His radio, still transmitting a" |
| | ratio | 0.26 | |
| 43.82% | Subject-first sentence starts | Target: ≤72% sentences starting with a subject | | subjectCount | 144 | | totalSentences | 173 | | matches | | 0 | "Rain blurred the city into" | | 1 | "Detective Harlow Quinn cut through" | | 2 | "A hood hid most of" | | 3 | "His left hand clutched something" | | 4 | "The man looked back." | | 5 | "A bus groaned between them," | | 6 | "She went around the rear" | | 7 | "Her worn leather watch knocked" | | 8 | "The second hand kept its" | | 9 | "Watch where the crowd opens" | | 10 | "The hooded man was fast," | | 11 | "He cut north, away from" | | 12 | "Quinn drew her weapon and" | | 13 | "Rain gathered at the end" | | 14 | "He darted through a gate" | | 15 | "Quinn followed, boots splashing through" | | 16 | "The yard stank of wet" | | 17 | "It slammed shut behind him." | | 18 | "She reached it in three" | | 19 | "The door gave." |
| | ratio | 0.832 | |
| 57.80% | Subordinate conjunction sentence starts | Target: ≥2% sentences starting with a subordinating conjunction | | subConjCount | 2 | | totalSentences | 173 | | matches | | 0 | "If she let him go," | | 1 | "If she went deeper, she" |
| | ratio | 0.012 | |
| 100.00% | Technical jargon density | Target: ≤6% sentences with technical-jargon patterns | | analyzedSentences | 69 | | technicalSentenceCount | 3 | | matches | | 0 | "Detective Harlow Quinn cut through the downpour with her collar turned up, boots striking the pavement in a measured rhythm that had nothing to do with the pani…" | | 1 | "The air that breathed up from below was cold and dry, carrying a smell of dust, iron, and something sharp beneath it—like crushed roots." | | 2 | "In its glass, something dark moved as if it were liquid with a pulse." |
| |
| 100.00% | Useless dialogue additions | Target: ≤5% dialogue tags with trailing filler fragments | | totalTags | 8 | | uselessAdditionCount | 0 | | matches | (empty) | |
| 100.00% | Dialogue tag variety (said vs. fancy) | Target: ≤10% fancy dialogue tags | | totalTags | 8 | | fancyCount | 1 | | fancyTags | | | dialogueSentences | 43 | | tagDensity | 0.186 | | leniency | 0.372 | | rawRatio | 0.125 | | effectiveRatio | 0.047 | |