| 100.00% | Adverbs in dialogue tags | Target: ≤10% dialogue tags with adverbs | | totalTags | 4 | | adverbTagCount | 0 | | adverbTags | (empty) | | dialogueSentences | 12 | | tagDensity | 0.333 | | leniency | 0.667 | | rawRatio | 0 | | effectiveRatio | 0 | |
| 90.68% | AI-ism adverb frequency | Target: <2% AI-ism adverbs (58 tracked) | | wordCount | 1073 | | 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) | |
| 81.36% | AI-ism word frequency | Target: <2% AI-ism words (290 tracked) | | wordCount | 1073 | | totalAiIsms | 4 | | found | | | highlights | | 0 | "weight" | | 1 | "fractured" | | 2 | "pulsed" | | 3 | "scanned" |
| |
| 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 | 89 | | matches | (empty) | |
| 100.00% | Filter word density | Target: ≤3% sentences with filter/hedge words | | filterCount | 1 | | hedgeCount | 0 | | narrationSentences | 89 | | 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 | 42 | | ratio | 0 | | matches | (empty) | |
| 100.00% | Markdown formatting overuse | Target: ≤5% words in markdown formatting | | markdownSpans | 2 | | markdownWords | 14 | | totalWords | 1069 | | ratio | 0.013 | | matches | | 0 | "The Veil Market." | | 1 | "Turn around. Go back up. Wait for the world you understand." |
| |
| 100.00% | Missing dialogue indicators (quotation marks) | Target: ≤10% speech attributions without quotation marks | | totalAttributions | 8 | | unquotedAttributions | 0 | | matches | (empty) | |
| 100.00% | Name drop frequency | Target: ≤1.0 per-name mentions per 100 words | | totalMentions | 20 | | wordCount | 980 | | uniqueNames | 10 | | maxNameDensity | 0.61 | | worstName | "Quinn" | | maxWindowNameDensity | 1 | | worstWindowName | "Street" | | discoveredNames | | Camden | 1 | | High | 1 | | Street | 2 | | Herrera | 4 | | Saint | 1 | | Christopher | 1 | | Inverness | 1 | | Morris | 2 | | Quinn | 6 | | Veil | 1 |
| | persons | | 0 | "Herrera" | | 1 | "Saint" | | 2 | "Christopher" | | 3 | "Morris" | | 4 | "Quinn" | | 5 | "Veil" |
| | places | | 0 | "Camden" | | 1 | "High" | | 2 | "Street" | | 3 | "Inverness" |
| | globalScore | 1 | | windowScore | 1 | |
| 73.08% | Narrator intent-glossing | Target: ≤2% narration sentences with intent-glossing patterns | | analyzedSentences | 65 | | glossingSentenceCount | 2 | | matches | | 0 | "something like this" | | 1 | "looked like people" |
| |
| 100.00% | "Not X but Y" pattern overuse | Target: ≤1 "not X but Y" per 1000 words | | totalMatches | 0 | | per1kWords | 0 | | wordCount | 1069 | | matches | (empty) | |
| 97.94% | Overuse of "that" (subordinate clause padding) | Target: ≤2% sentences with "that" clauses | | thatCount | 2 | | totalSentences | 97 | | matches | | 0 | "confirmed that much" | | 1 | "understood that he" |
| |
| 100.00% | Paragraph length variance | Target: CV ≥0.5 for paragraph word counts | | totalParagraphs | 40 | | mean | 26.73 | | std | 22.89 | | cv | 0.856 | | sampleLengths | | 0 | 42 | | 1 | 48 | | 2 | 2 | | 3 | 11 | | 4 | 44 | | 5 | 39 | | 6 | 62 | | 7 | 50 | | 8 | 6 | | 9 | 4 | | 10 | 53 | | 11 | 32 | | 12 | 9 | | 13 | 21 | | 14 | 9 | | 15 | 7 | | 16 | 30 | | 17 | 58 | | 18 | 6 | | 19 | 2 | | 20 | 78 | | 21 | 3 | | 22 | 13 | | 23 | 102 | | 24 | 26 | | 25 | 6 | | 26 | 31 | | 27 | 22 | | 28 | 12 | | 29 | 42 | | 30 | 3 | | 31 | 9 | | 32 | 20 | | 33 | 37 | | 34 | 37 | | 35 | 45 | | 36 | 15 | | 37 | 18 | | 38 | 3 | | 39 | 12 |
| |
| 100.00% | Passive voice overuse | Target: ≤2% passive sentences | | passiveCount | 1 | | totalSentences | 89 | | matches | | |
| 100.00% | Past progressive (was/were + -ing) overuse | Target: ≤2% past progressive verbs | | pastProgressiveCount | 2 | | totalVerbs | 165 | | matches | | 0 | "was warning" | | 1 | "was waiting" |
| |
| 25.04% | Em-dash & semicolon overuse | Target: ≤2% sentences with em-dashes/semicolons | | emDashCount | 4 | | semicolonCount | 0 | | flaggedSentences | 4 | | totalSentences | 97 | | ratio | 0.041 | | matches | | 0 | "The green glow strengthened, and with it came sound—voices, low and overlapping, the clink of metal, a stringed instrument plucking notes that didn't belong to any scale she knew." | | 1 | "Or it had been—the curved walls and the ghost of an old platform sign confirmed that much." | | 2 | "There—a flash of olive skin, dark curls matted with rain, moving fast along the far wall toward another tunnel mouth." | | 3 | "He paused at its lip, and she understood that he was waiting to see what she would do—whether the detective would follow him into the dark, or stay safe in the half-light where the rules still bent the right way." |
| |
| 100.00% | Purple prose (modifier overload) | Target: <4% adverbs, <2% -ly adverbs, no adj stacking | | wordCount | 989 | | adjectiveStacks | 0 | | stackExamples | (empty) | | adverbCount | 25 | | adverbRatio | 0.025278058645096056 | | lyAdverbCount | 6 | | lyAdverbRatio | 0.006066734074823054 | |
| 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 | 11.02 | | std | 7.42 | | cv | 0.674 | | sampleLengths | | 0 | 21 | | 1 | 21 | | 2 | 13 | | 3 | 15 | | 4 | 20 | | 5 | 2 | | 6 | 8 | | 7 | 3 | | 8 | 7 | | 9 | 17 | | 10 | 20 | | 11 | 12 | | 12 | 8 | | 13 | 19 | | 14 | 15 | | 15 | 2 | | 16 | 18 | | 17 | 27 | | 18 | 10 | | 19 | 6 | | 20 | 20 | | 21 | 14 | | 22 | 6 | | 23 | 4 | | 24 | 11 | | 25 | 12 | | 26 | 17 | | 27 | 13 | | 28 | 11 | | 29 | 2 | | 30 | 5 | | 31 | 14 | | 32 | 6 | | 33 | 3 | | 34 | 21 | | 35 | 3 | | 36 | 6 | | 37 | 7 | | 38 | 3 | | 39 | 14 | | 40 | 4 | | 41 | 9 | | 42 | 10 | | 43 | 7 | | 44 | 20 | | 45 | 2 | | 46 | 2 | | 47 | 17 | | 48 | 4 | | 49 | 2 |
| |
| 63.23% | Sentence opener variety | Target: ≥60% unique sentence openers | | consecutiveRepeats | 7 | | diversityRatio | 0.422680412371134 | | totalSentences | 97 | | uniqueOpeners | 41 | |
| 82.30% | Adverb-first sentence starts | Target: ≥3% sentences starting with an adverb | | adverbCount | 2 | | totalSentences | 81 | | matches | | 0 | "Then a voice, fractured and" | | 1 | "Just his torch still burning" |
| | ratio | 0.025 | |
| 86.67% | Pronoun-first sentence starts | Target: ≤30% sentences starting with a pronoun | | pronounCount | 27 | | totalSentences | 81 | | matches | | 0 | "He vaulted a low railing," | | 1 | "Her voice cracked against the" | | 2 | "He didn't slow." | | 3 | "She'd been watching him for" | | 4 | "She hooked her fingers through" | | 5 | "She swore and let go," | | 6 | "She pulled her torch and" | | 7 | "Her radio crackled at her" | | 8 | "She thumbed it." | | 9 | "She stared at the handset," | | 10 | "Her watch read 11:48." | | 11 | "She'd waited at the surface" | | 12 | "She hadn't waited since." | | 13 | "She stopped at the threshold" | | 14 | "It was a station." | | 15 | "She'd heard whispers." | | 16 | "She showed him the warrant" | | 17 | "He looked at it the" | | 18 | "She scanned the crowd over" | | 19 | "It was warning." |
| | ratio | 0.333 | |
| 64.94% | Subject-first sentence starts | Target: ≤72% sentences starting with a subject | | subjectCount | 64 | | totalSentences | 81 | | matches | | 0 | "Quinn ran with her coat" | | 1 | "Tomás Herrera moved like a" | | 2 | "He vaulted a low railing," | | 3 | "The Saint Christopher medallion at" | | 4 | "Her voice cracked against the" | | 5 | "He didn't slow." | | 6 | "She'd been watching him for" | | 7 | "The former paramedic with no" | | 8 | "Tonight she'd finally cornered him" | | 9 | "Quinn's boots punched through a" | | 10 | "The cold bit, but she'd" | | 11 | "Herrera cut left into an" | | 12 | "The walls pressed close, slick" | | 13 | "She hooked her fingers through" | | 14 | "The fence shuddered under her" | | 15 | "She swore and let go," | | 16 | "The alley dead-ended at a" | | 17 | "Steam curled up from below," | | 18 | "She pulled her torch and" | | 19 | "A handrail furred with rust." |
| | ratio | 0.79 | |
| 100.00% | Subordinate conjunction sentence starts | Target: ≥2% sentences starting with a subordinating conjunction | | subConjCount | 2 | | totalSentences | 81 | | matches | | 0 | "To the right, a narrow" | | 1 | "To the left, an iron" |
| | ratio | 0.025 | |
| 61.69% | Technical jargon density | Target: ≤6% sentences with technical-jargon patterns | | analyzedSentences | 44 | | technicalSentenceCount | 5 | | matches | | 0 | "Rain hammered the pavement of Camden High Street, turning the gutters into black rivers that swallowed cigarette ends and broken glass." | | 1 | "Tomás Herrera moved like a man who knew these streets in his bones." | | 2 | "The former paramedic with no license and a habit of vanishing into doorways that didn't lead anywhere." | | 3 | "To the left, an iron gate hung open over a flight of stairs that descended into blackness." | | 4 | "The green glow strengthened, and with it came sound—voices, low and overlapping, the clink of metal, a stringed instrument plucking notes that didn't belong to …" |
| |
| 0.00% | Useless dialogue additions | Target: ≤5% dialogue tags with trailing filler fragments | | totalTags | 4 | | uselessAdditionCount | 1 | | matches | | 0 | "she said, not looking at him," |
| |
| 100.00% | Dialogue tag variety (said vs. fancy) | Target: ≤10% fancy dialogue tags | | totalTags | 2 | | fancyCount | 0 | | fancyTags | (empty) | | dialogueSentences | 12 | | tagDensity | 0.167 | | leniency | 0.333 | | rawRatio | 0 | | effectiveRatio | 0 | |