| 100.00% | Adverbs in dialogue tags | Target: ≤10% dialogue tags with adverbs | | totalTags | 5 | | adverbTagCount | 0 | | adverbTags | (empty) | | dialogueSentences | 7 | | tagDensity | 0.714 | | leniency | 1 | | rawRatio | 0 | | effectiveRatio | 0 | |
| 100.00% | AI-ism adverb frequency | Target: <2% AI-ism adverbs (58 tracked) | | wordCount | 841 | | totalAiIsmAdverbs | 0 | | found | (empty) | | highlights | (empty) | |
| 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) | |
| 52.44% | AI-ism word frequency | Target: <2% AI-ism words (290 tracked) | | wordCount | 841 | | totalAiIsms | 8 | | found | | | highlights | | 0 | "familiar" | | 1 | "calculated" | | 2 | "traced" | | 3 | "echoing" | | 4 | "weight" | | 5 | "lilt" | | 6 | "whisper" |
| |
| 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 | 36 | | matches | (empty) | |
| 100.00% | Filter word density | Target: ≤3% sentences with filter/hedge words | | filterCount | 1 | | hedgeCount | 0 | | narrationSentences | 36 | | filterMatches | | | hedgeMatches | (empty) | |
| 100.00% | Gibberish response detection | Target: ≤1% gibberish-like sentences (hard fail if a sentence exceeds 800 words) | | analyzedSentences | 38 | | gibberishSentences | 0 | | adjustedGibberishSentences | 0 | | longSentenceCount | 0 | | runOnParagraphCount | 0 | | giantParagraphCount | 0 | | wordSaladCount | 0 | | repetitionLoopCount | 0 | | controlTokenCount | 0 | | maxSentenceWordsSeen | 52 | | ratio | 0 | | matches | (empty) | |
| 100.00% | Markdown formatting overuse | Target: ≤5% words in markdown formatting | | markdownSpans | 0 | | markdownWords | 0 | | totalWords | 840 | | ratio | 0 | | matches | (empty) | |
| 100.00% | Missing dialogue indicators (quotation marks) | Target: ≤10% speech attributions without quotation marks | | totalAttributions | 6 | | unquotedAttributions | 0 | | matches | (empty) | |
| 100.00% | Name drop frequency | Target: ≤1.0 per-name mentions per 100 words | | totalMentions | 25 | | wordCount | 805 | | uniqueNames | 14 | | maxNameDensity | 0.87 | | worstName | "Harlow" | | maxWindowNameDensity | 2 | | worstWindowName | "Harlow" | | discoveredNames | | Harlow | 7 | | Quinn | 1 | | Raven | 1 | | Nest | 1 | | Mondeo | 1 | | Soho | 1 | | Herrera | 1 | | Saint | 1 | | Christopher | 1 | | London | 1 | | Tomás | 5 | | Seville | 1 | | Morris | 2 | | Thames | 1 |
| | persons | | 0 | "Harlow" | | 1 | "Quinn" | | 2 | "Raven" | | 3 | "Herrera" | | 4 | "Saint" | | 5 | "Christopher" | | 6 | "Tomás" | | 7 | "Morris" |
| | places | | 0 | "Soho" | | 1 | "London" | | 2 | "Seville" | | 3 | "Thames" |
| | globalScore | 1 | | windowScore | 1 | |
| 100.00% | Narrator intent-glossing | Target: ≤2% narration sentences with intent-glossing patterns | | analyzedSentences | 35 | | glossingSentenceCount | 0 | | matches | (empty) | |
| 80.95% | "Not X but Y" pattern overuse | Target: ≤1 "not X but Y" per 1000 words | | totalMatches | 1 | | per1kWords | 1.19 | | wordCount | 840 | | matches | | 0 | "not the sharp London burr she’s used to, but a soft, trilling cadence she can’t place, like the chirp of" |
| |
| 100.00% | Overuse of "that" (subordinate clause padding) | Target: ≤2% sentences with "that" clauses | | thatCount | 0 | | totalSentences | 38 | | matches | (empty) | |
| 70.12% | Paragraph length variance | Target: CV ≥0.5 for paragraph word counts | | totalParagraphs | 14 | | mean | 60 | | std | 23.72 | | cv | 0.395 | | sampleLengths | | 0 | 108 | | 1 | 80 | | 2 | 60 | | 3 | 76 | | 4 | 66 | | 5 | 81 | | 6 | 70 | | 7 | 19 | | 8 | 70 | | 9 | 41 | | 10 | 36 | | 11 | 57 | | 12 | 20 | | 13 | 56 |
| |
| 66.28% | Passive voice overuse | Target: ≤2% passive sentences | | passiveCount | 4 | | totalSentences | 36 | | matches | | 0 | "are crusted" | | 1 | "was pulled" | | 2 | "is shadowed" | | 3 | "being dragged" |
| |
| 100.00% | Past progressive (was/were + -ing) overuse | Target: ≤2% past progressive verbs | | pastProgressiveCount | 0 | | totalVerbs | 116 | | matches | (empty) | |
| 67.67% | Em-dash & semicolon overuse | Target: ≤2% sentences with em-dashes/semicolons | | emDashCount | 1 | | semicolonCount | 0 | | flaggedSentences | 1 | | totalSentences | 38 | | ratio | 0.026 | | matches | | 0 | "The stairs creak under her weight, cold concrete biting through the thin fabric of her socks, and the air down here shifts—warmer, thicker, scented with cedar and ozone and something sharp, like iron filings left out in the rain." |
| |
| 100.00% | Purple prose (modifier overload) | Target: <4% adverbs, <2% -ly adverbs, no adj stacking | | wordCount | 815 | | adjectiveStacks | 0 | | stackExamples | (empty) | | adverbCount | 12 | | adverbRatio | 0.014723926380368098 | | lyAdverbCount | 4 | | lyAdverbRatio | 0.0049079754601227 | |
| 100.00% | Repeated phrase echo | Target: ≤20% sentences with echoes (window: 2) | | totalSentences | 38 | | echoCount | 0 | | echoWords | (empty) | |
| 100.00% | Sentence length variance | Target: CV ≥0.4 for sentence word counts | | totalSentences | 38 | | mean | 22.11 | | std | 11.14 | | cv | 0.504 | | sampleLengths | | 0 | 33 | | 1 | 31 | | 2 | 44 | | 3 | 15 | | 4 | 20 | | 5 | 24 | | 6 | 21 | | 7 | 7 | | 8 | 2 | | 9 | 51 | | 10 | 7 | | 11 | 27 | | 12 | 42 | | 13 | 22 | | 14 | 16 | | 15 | 28 | | 16 | 10 | | 17 | 39 | | 18 | 32 | | 19 | 25 | | 20 | 21 | | 21 | 24 | | 22 | 15 | | 23 | 4 | | 24 | 16 | | 25 | 31 | | 26 | 23 | | 27 | 12 | | 28 | 29 | | 29 | 20 | | 30 | 16 | | 31 | 21 | | 32 | 36 | | 33 | 8 | | 34 | 12 | | 35 | 17 | | 36 | 23 | | 37 | 16 |
| |
| 62.28% | Sentence opener variety | Target: ≥60% unique sentence openers | | consecutiveRepeats | 3 | | diversityRatio | 0.42105263157894735 | | totalSentences | 38 | | uniqueOpeners | 16 | |
| 0.00% | Adverb-first sentence starts | Target: ≥3% sentences starting with an adverb | | adverbCount | 0 | | totalSentences | 35 | | matches | (empty) | | ratio | 0 | |
| 37.14% | Pronoun-first sentence starts | Target: ≤30% sentences starting with a pronoun | | pronounCount | 16 | | totalSentences | 35 | | matches | | 0 | "Her worn leather watch tick-tocks" | | 1 | "She’d spotted the man loitering" | | 2 | "She’d spent 18 years on" | | 3 | "She recognizes him now, closing" | | 4 | "she barks, picking up her" | | 5 | "He doesn’t slow, just veers" | | 6 | "She grabs his left arm" | | 7 | "He twists free, hard enough" | | 8 | "He doesn’t stop running, just" | | 9 | "He presses it into a" | | 10 | "She’d kept this case off" | | 11 | "she says, her voice steady," | | 12 | "She’d trained for this, for" | | 13 | "Their face is shadowed by" | | 14 | "he says, his voice barely" | | 15 | "She twists her head, ready" |
| | ratio | 0.457 | |
| 0.00% | Subject-first sentence starts | Target: ≤72% sentences starting with a subject | | subjectCount | 33 | | totalSentences | 35 | | matches | | 0 | "The suspect’s boots slapped the" | | 1 | "Her worn leather watch tick-tocks" | | 2 | "She’d spotted the man loitering" | | 3 | "Rain slicks the cobblestones of" | | 4 | "She’d spent 18 years on" | | 5 | "The green neon of the" | | 6 | "A street cart selling roasted" | | 7 | "She recognizes him now, closing" | | 8 | "she barks, picking up her" | | 9 | "He doesn’t slow, just veers" | | 10 | "She grabs his left arm" | | 11 | "He twists free, hard enough" | | 12 | "He doesn’t stop running, just" | | 13 | "The alley reeks of mildew" | | 14 | "Harlow pauses, rain dripping from" | | 15 | "The stairs creak under her" | | 16 | "The sound of chatter drifts" | | 17 | "He presses it into a" | | 18 | "The chatter grows louder, now" | | 19 | "Tomás’s voice is tight, laced" |
| | ratio | 0.943 | |
| 0.00% | Subordinate conjunction sentence starts | Target: ≥2% sentences starting with a subordinating conjunction | | subConjCount | 0 | | totalSentences | 35 | | matches | (empty) | | ratio | 0 | |
| 91.84% | Technical jargon density | Target: ≤6% sentences with technical-jargon patterns | | analyzedSentences | 28 | | technicalSentenceCount | 2 | | matches | | 0 | "She grabs his left arm as he turns the corner, and her palm makes contact with the rough raised scar that runs from his wrist to his elbow, the Saint Christophe…" | | 1 | "He doesn’t stop running, just ducks into the alley, his boots echoing off the brick walls." |
| |
| 0.00% | Useless dialogue additions | Target: ≤5% dialogue tags with trailing filler fragments | | totalTags | 5 | | uselessAdditionCount | 2 | | matches | | 0 | "she says, her voice steady, military sharp" | | 1 | "he says, his voice barely a whisper" |
| |
| 7.14% | Dialogue tag variety (said vs. fancy) | Target: ≤10% fancy dialogue tags | | totalTags | 3 | | fancyCount | 1 | | fancyTags | | | dialogueSentences | 7 | | tagDensity | 0.429 | | leniency | 0.857 | | rawRatio | 0.333 | | effectiveRatio | 0.286 | |