| 100.00% | Adverbs in dialogue tags | Target: ≤10% dialogue tags with adverbs | |
| 86.03% | AI-ism adverb frequency | Target: <2% AI-ism adverbs (58 tracked) | | wordCount | 1074 | | totalAiIsmAdverbs | 3 | | found | | | highlights | | 0 | "tightly" | | 1 | "softly" | | 2 | "slightly" |
| |
| 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) | |
| 53.45% | AI-ism word frequency | Target: <2% AI-ism words (290 tracked) | | wordCount | 1074 | | totalAiIsms | 10 | | found | | | highlights | | 0 | "chill" | | 1 | "measured" | | 2 | "weight" | | 3 | "aligned" | | 4 | "glint" | | 5 | "etched" | | 6 | "magnetic" | | 7 | "dance" | | 8 | "familiar" |
| |
| 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 | 88 | | matches | (empty) | |
| 100.00% | Filter word density | Target: ≤3% sentences with filter/hedge words | | filterCount | 1 | | hedgeCount | 0 | | narrationSentences | 88 | | filterMatches | | | hedgeMatches | (empty) | |
| 100.00% | Gibberish response detection | Target: ≤1% gibberish-like sentences (hard fail if a sentence exceeds 800 words) | | analyzedSentences | 88 | | gibberishSentences | 0 | | adjustedGibberishSentences | 0 | | longSentenceCount | 0 | | runOnParagraphCount | 0 | | giantParagraphCount | 0 | | wordSaladCount | 0 | | repetitionLoopCount | 0 | | controlTokenCount | 0 | | repeatedSegmentCount | 0 | | maxSentenceWordsSeen | 45 | | ratio | 0 | | matches | (empty) | |
| 100.00% | Markdown formatting overuse | Target: ≤5% words in markdown formatting | | markdownSpans | 0 | | markdownWords | 0 | | totalWords | 1069 | | ratio | 0 | | matches | (empty) | |
| 62.50% | Missing dialogue indicators (quotation marks) | Target: ≤10% speech attributions without quotation marks | | totalAttributions | 4 | | unquotedAttributions | 1 | | matches | | 0 | "Not just mud, Quinn said, her voice dropping to a dangerous register." |
| |
| 89.20% | Name drop frequency | Target: ≤1.0 per-name mentions per 100 words | | totalMentions | 47 | | wordCount | 1069 | | uniqueNames | 18 | | maxNameDensity | 1.22 | | worstName | "Quinn" | | maxWindowNameDensity | 2 | | worstWindowName | "Quinn" | | discoveredNames | | Camden | 1 | | Tube | 1 | | Detective | 2 | | Harlow | 2 | | Quinn | 13 | | Metropolitan | 2 | | Police | 2 | | Sergeant | 1 | | Vance | 13 | | God | 1 | | Veil | 2 | | Market | 1 | | Kowalski | 1 | | Oxford | 1 | | Compass | 1 | | Morris | 1 | | Fleet | 1 | | River | 1 |
| | persons | | 0 | "Harlow" | | 1 | "Quinn" | | 2 | "Police" | | 3 | "Sergeant" | | 4 | "Vance" | | 5 | "Kowalski" | | 6 | "Morris" |
| | places | | 0 | "Detective" | | 1 | "Metropolitan" | | 2 | "Oxford" | | 3 | "Fleet" | | 4 | "River" |
| | globalScore | 0.892 | | windowScore | 1 | |
| 100.00% | Narrator intent-glossing | Target: ≤2% narration sentences with intent-glossing patterns | | analyzedSentences | 59 | | 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 | 1069 | | matches | (empty) | |
| 100.00% | Overuse of "that" (subordinate clause padding) | Target: ≤2% sentences with "that" clauses | | thatCount | 1 | | totalSentences | 88 | | matches | | |
| 100.00% | Paragraph length variance | Target: CV ≥0.5 for paragraph word counts | | totalParagraphs | 28 | | mean | 38.18 | | std | 21.53 | | cv | 0.564 | | sampleLengths | | 0 | 85 | | 1 | 35 | | 2 | 45 | | 3 | 17 | | 4 | 67 | | 5 | 51 | | 6 | 13 | | 7 | 33 | | 8 | 27 | | 9 | 48 | | 10 | 57 | | 11 | 18 | | 12 | 79 | | 13 | 54 | | 14 | 40 | | 15 | 10 | | 16 | 63 | | 17 | 9 | | 18 | 53 | | 19 | 32 | | 20 | 28 | | 21 | 10 | | 22 | 55 | | 23 | 26 | | 24 | 17 | | 25 | 62 | | 26 | 17 | | 27 | 18 |
| |
| 89.31% | Passive voice overuse | Target: ≤2% passive sentences | | passiveCount | 4 | | totalSentences | 88 | | matches | | 0 | "been drawn" | | 1 | "been sheared" | | 2 | "been parted" | | 3 | "attacked" |
| |
| 43.14% | Past progressive (was/were + -ing) overuse | Target: ≤2% past progressive verbs | | pastProgressiveCount | 4 | | totalVerbs | 170 | | matches | | 0 | "was already squatting" | | 1 | "was running" | | 2 | "was hunting" | | 3 | "was carrying" |
| |
| 0.00% | Em-dash & semicolon overuse | Target: ≤2% sentences with em-dashes/semicolons | | emDashCount | 5 | | semicolonCount | 0 | | flaggedSentences | 5 | | totalSentences | 88 | | ratio | 0.057 | | matches | | 0 | "The heat radiating from it was impossible—faint, residual thermal energy in a room where her own breath plumed in white clouds." | | 1 | "I’ve read the case files on the Veil Market—rumors of an underground bazaar that shifts with the moon." | | 2 | "Etched intricately across its face were defensive sigils—lines and wards meant to deflect unseen forces." | | 3 | "It's a Veil Compass, Quinn whispered, the memory of DS Morris flashing uninvited behind her eyelids—the strange, cold draft the night her partner vanished three years ago, the inexplicable burn marks on the pavement where no fire had been." | | 4 | "He came in through the sealed junction three levels down—the one that requires a bone token to trip the latch." |
| |
| 88.00% | Purple prose (modifier overload) | Target: <4% adverbs, <2% -ly adverbs, no adj stacking | | wordCount | 1081 | | adjectiveStacks | 2 | | stackExamples | | 0 | "impossible—faint, residual thermal energy" | | 1 | "dull, weathered green verdigris." |
| | adverbCount | 27 | | adverbRatio | 0.02497687326549491 | | lyAdverbCount | 13 | | lyAdverbRatio | 0.012025901942645698 | |
| 100.00% | Repeated phrase echo | Target: ≤20% sentences with echoes (window: 2) | | totalSentences | 88 | | echoCount | 0 | | echoWords | (empty) | |
| 100.00% | Sentence length variance | Target: CV ≥0.4 for sentence word counts | | totalSentences | 88 | | mean | 12.15 | | std | 8.95 | | cv | 0.737 | | sampleLengths | | 0 | 35 | | 1 | 25 | | 2 | 5 | | 3 | 20 | | 4 | 15 | | 5 | 4 | | 6 | 16 | | 7 | 21 | | 8 | 24 | | 9 | 17 | | 10 | 14 | | 11 | 3 | | 12 | 12 | | 13 | 2 | | 14 | 5 | | 15 | 20 | | 16 | 8 | | 17 | 3 | | 18 | 4 | | 19 | 33 | | 20 | 14 | | 21 | 13 | | 22 | 3 | | 23 | 16 | | 24 | 14 | | 25 | 15 | | 26 | 1 | | 27 | 1 | | 28 | 3 | | 29 | 3 | | 30 | 4 | | 31 | 12 | | 32 | 15 | | 33 | 21 | | 34 | 21 | | 35 | 10 | | 36 | 2 | | 37 | 6 | | 38 | 18 | | 39 | 9 | | 40 | 5 | | 41 | 4 | | 42 | 15 | | 43 | 21 | | 44 | 14 | | 45 | 7 | | 46 | 4 | | 47 | 18 | | 48 | 7 | | 49 | 12 |
| |
| 82.58% | Sentence opener variety | Target: ≥60% unique sentence openers | | consecutiveRepeats | 4 | | diversityRatio | 0.5227272727272727 | | totalSentences | 88 | | uniqueOpeners | 46 | |
| 0.00% | Adverb-first sentence starts | Target: ≥3% sentences starting with an adverb | | adverbCount | 0 | | totalSentences | 81 | | matches | (empty) | | ratio | 0 | |
| 100.00% | Pronoun-first sentence starts | Target: ≤30% sentences starting with a pronoun | | pronounCount | 20 | | totalSentences | 81 | | matches | | 0 | "Her partner, Sergeant Vance, was" | | 1 | "She stepped down from the" | | 2 | "Her brown eyes swept over" | | 3 | "She stopped at the edge" | | 4 | "She reached out, hovering a" | | 5 | "They rip things off." | | 6 | "I’ve read the case files" | | 7 | "You're sounding like that eccentric" | | 8 | "You've been reading too many" | | 9 | "She crouched again, her gloved" | | 10 | "She held it up to" | | 11 | "It was a small brass" | | 12 | "It's a Veil Compass, Quinn" | | 13 | "She turned the compass over" | | 14 | "He was running from something." | | 15 | "He came in through the" | | 16 | "She stood, sliding the compass" | | 17 | "My theory is that the" | | 18 | "She unclipped the service weapon" | | 19 | "We're going looking for answers." |
| | ratio | 0.247 | |
| 100.00% | Subject-first sentence starts | Target: ≤72% sentences starting with a subject | | subjectCount | 58 | | totalSentences | 81 | | matches | | 0 | "The damp chill of the" | | 1 | "The air tasted of ozone" | | 2 | "Quinn checked the time, her" | | 3 | "The salt-and-pepper hair at her" | | 4 | "Her partner, Sergeant Vance, was" | | 5 | "Vance stood, wiping his palms" | | 6 | "Quinn, thank God." | | 7 | "Forensics is still twenty minutes" | | 8 | "Throat torn out by an" | | 9 | "Quinn didn't answer immediately." | | 10 | "She stepped down from the" | | 11 | "Her brown eyes swept over" | | 12 | "She stopped at the edge" | | 13 | "An animal, Vance?" | | 14 | "Quinn’s voice was low, flat," | | 15 | "Vance blinked, flashing his light" | | 16 | "Someone burning rubbish." | | 17 | "An old camp fire." | | 18 | "Quinn knelt, bringing her face" | | 19 | "She reached out, hovering a" |
| | ratio | 0.716 | |
| 0.00% | Subordinate conjunction sentence starts | Target: ≥2% sentences starting with a subordinating conjunction | | subConjCount | 0 | | totalSentences | 81 | | matches | (empty) | | ratio | 0 | |
| 82.07% | Technical jargon density | Target: ≤6% sentences with technical-jargon patterns | | analyzedSentences | 47 | | technicalSentenceCount | 4 | | matches | | 0 | "Within it lay the remains of a man, his limbs arranged with a sickening, rigid symmetry that made Quinn’s military-trained posture stiffen even further." | | 1 | "The one with the round glasses and the satchel full of ancient texts who won't stop talking about Oxford folklore?" | | 2 | "She stood, sliding the compass securely into her coat pocket, her jaw tightening as the pieces clicked together with the grim certainty of a locked mechanism." | | 3 | "My theory is that the Metropolitan Police are looking at a murder scene staged to look like a beast attack by someone who forgot that wild animals don't draw bo…" |
| |
| 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 | |