| 100.00% | Adverbs in dialogue tags | Target: ≤10% dialogue tags with adverbs | | totalTags | 18 | | adverbTagCount | 1 | | adverbTags | | 0 | "Priya leaned back [back]" |
| | dialogueSentences | 50 | | tagDensity | 0.36 | | leniency | 0.72 | | rawRatio | 0.056 | | effectiveRatio | 0.04 | |
| 100.00% | AI-ism adverb frequency | Target: <2% AI-ism adverbs (58 tracked) | | wordCount | 1150 | | totalAiIsmAdverbs | 0 | | found | (empty) | | highlights | (empty) | |
| 100.00% | AI-ism character names | Target: 0 AI-default names (16 tracked, −20% each) | | codexExemptions | | | found | (empty) | |
| 100.00% | AI-ism location names | Target: 0 AI-default location names (33 tracked, −20% each) | | codexExemptions | (empty) | | found | (empty) | |
| 82.61% | AI-ism word frequency | Target: <2% AI-ism words (290 tracked) | | wordCount | 1150 | | totalAiIsms | 4 | | found | | | highlights | | 0 | "warmth" | | 1 | "stomach" | | 2 | "silence" | | 3 | "weight" |
| |
| 100.00% | Cliché density | Target: ≤1 cliche(s) per 800-word window | | totalCliches | 1 | | maxInWindow | 1 | | found | | 0 | | label | "stomach dropped/sank" | | count | 1 |
|
| | highlights | | |
| 100.00% | Emotion telling (show vs. tell) | Target: ≤3% sentences with emotion telling | | emotionTells | 0 | | narrationSentences | 60 | | matches | (empty) | |
| 100.00% | Filter word density | Target: ≤3% sentences with filter/hedge words | | filterCount | 0 | | hedgeCount | 0 | | narrationSentences | 60 | | filterMatches | (empty) | | hedgeMatches | (empty) | |
| 100.00% | Gibberish response detection | Target: ≤1% gibberish-like sentences (hard fail if a sentence exceeds 800 words) | | analyzedSentences | 92 | | gibberishSentences | 0 | | adjustedGibberishSentences | 0 | | longSentenceCount | 0 | | runOnParagraphCount | 0 | | giantParagraphCount | 0 | | wordSaladCount | 0 | | repetitionLoopCount | 0 | | controlTokenCount | 0 | | repeatedSegmentCount | 0 | | maxSentenceWordsSeen | 40 | | ratio | 0 | | matches | (empty) | |
| 100.00% | Markdown formatting overuse | Target: ≤5% words in markdown formatting | | markdownSpans | 0 | | markdownWords | 0 | | totalWords | 1145 | | ratio | 0 | | matches | (empty) | |
| 100.00% | Missing dialogue indicators (quotation marks) | Target: ≤10% speech attributions without quotation marks | | totalAttributions | 14 | | unquotedAttributions | 0 | | matches | (empty) | |
| 0.00% | Name drop frequency | Target: ≤1.0 per-name mentions per 100 words | | totalMentions | 42 | | wordCount | 656 | | uniqueNames | 8 | | maxNameDensity | 2.9 | | worstName | "Priya" | | maxWindowNameDensity | 5.5 | | worstWindowName | "Priya" | | discoveredNames | | Raven | 1 | | Nest | 1 | | Silas | 2 | | Aurora | 16 | | Priya | 19 | | Cardiff | 1 | | Evan | 1 | | Soho | 1 |
| | persons | | 0 | "Raven" | | 1 | "Nest" | | 2 | "Silas" | | 3 | "Aurora" | | 4 | "Priya" | | 5 | "Evan" |
| | places | | | globalScore | 0.052 | | windowScore | 0 | |
| 100.00% | Narrator intent-glossing | Target: ≤2% narration sentences with intent-glossing patterns | | analyzedSentences | 40 | | 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 | 1145 | | matches | (empty) | |
| 100.00% | Overuse of "that" (subordinate clause padding) | Target: ≤2% sentences with "that" clauses | | thatCount | 0 | | totalSentences | 92 | | matches | (empty) | |
| 100.00% | Paragraph length variance | Target: CV ≥0.5 for paragraph word counts | | totalParagraphs | 51 | | mean | 22.45 | | std | 18.68 | | cv | 0.832 | | sampleLengths | | 0 | 41 | | 1 | 54 | | 2 | 3 | | 3 | 34 | | 4 | 14 | | 5 | 5 | | 6 | 19 | | 7 | 51 | | 8 | 1 | | 9 | 29 | | 10 | 1 | | 11 | 1 | | 12 | 16 | | 13 | 55 | | 14 | 5 | | 15 | 3 | | 16 | 32 | | 17 | 4 | | 18 | 46 | | 19 | 12 | | 20 | 31 | | 21 | 3 | | 22 | 27 | | 23 | 16 | | 24 | 4 | | 25 | 22 | | 26 | 19 | | 27 | 20 | | 28 | 4 | | 29 | 52 | | 30 | 54 | | 31 | 7 | | 32 | 2 | | 33 | 27 | | 34 | 19 | | 35 | 19 | | 36 | 53 | | 37 | 35 | | 38 | 10 | | 39 | 22 | | 40 | 5 | | 41 | 1 | | 42 | 74 | | 43 | 11 | | 44 | 44 | | 45 | 42 | | 46 | 9 | | 47 | 25 | | 48 | 44 | | 49 | 8 |
| |
| 100.00% | Passive voice overuse | Target: ≤2% passive sentences | | passiveCount | 0 | | totalSentences | 60 | | matches | (empty) | |
| 100.00% | Past progressive (was/were + -ing) overuse | Target: ≤2% past progressive verbs | | pastProgressiveCount | 0 | | totalVerbs | 139 | | matches | (empty) | |
| 49.69% | Em-dash & semicolon overuse | Target: ≤2% sentences with em-dashes/semicolons | | emDashCount | 3 | | semicolonCount | 0 | | flaggedSentences | 3 | | totalSentences | 92 | | ratio | 0.033 | | matches | | 0 | "She'd seen him before—Silas, the owner, though they rarely spoke beyond rent and weather." | | 1 | "The years had carved fine lines at the corners of her eyes, but the eyes themselves were the same—pale grey, quick, always reading a room before they read a person." | | 2 | "She'd imagined this conversation, in the worst of those years—imagined the friends who'd vanished, the ones who'd watched Evan's hand close around her wrist at parties and called it love, called it passion, called it none of their business." |
| |
| 100.00% | Purple prose (modifier overload) | Target: <4% adverbs, <2% -ly adverbs, no adj stacking | | wordCount | 661 | | adjectiveStacks | 0 | | stackExamples | (empty) | | adverbCount | 19 | | adverbRatio | 0.028744326777609682 | | lyAdverbCount | 6 | | lyAdverbRatio | 0.009077155824508321 | |
| 100.00% | Repeated phrase echo | Target: ≤20% sentences with echoes (window: 2) | | totalSentences | 92 | | echoCount | 0 | | echoWords | (empty) | |
| 100.00% | Sentence length variance | Target: CV ≥0.4 for sentence word counts | | totalSentences | 92 | | mean | 12.45 | | std | 9.54 | | cv | 0.767 | | sampleLengths | | 0 | 19 | | 1 | 22 | | 2 | 5 | | 3 | 18 | | 4 | 31 | | 5 | 3 | | 6 | 5 | | 7 | 14 | | 8 | 15 | | 9 | 14 | | 10 | 5 | | 11 | 17 | | 12 | 2 | | 13 | 21 | | 14 | 30 | | 15 | 1 | | 16 | 12 | | 17 | 17 | | 18 | 1 | | 19 | 1 | | 20 | 11 | | 21 | 5 | | 22 | 17 | | 23 | 16 | | 24 | 22 | | 25 | 5 | | 26 | 3 | | 27 | 12 | | 28 | 20 | | 29 | 2 | | 30 | 2 | | 31 | 7 | | 32 | 39 | | 33 | 12 | | 34 | 17 | | 35 | 14 | | 36 | 3 | | 37 | 10 | | 38 | 17 | | 39 | 6 | | 40 | 10 | | 41 | 4 | | 42 | 10 | | 43 | 12 | | 44 | 11 | | 45 | 8 | | 46 | 7 | | 47 | 13 | | 48 | 4 | | 49 | 14 |
| |
| 57.25% | Sentence opener variety | Target: ≥60% unique sentence openers | | consecutiveRepeats | 4 | | diversityRatio | 0.3695652173913043 | | totalSentences | 92 | | uniqueOpeners | 34 | |
| 0.00% | Adverb-first sentence starts | Target: ≥3% sentences starting with an adverb | | adverbCount | 0 | | totalSentences | 51 | | matches | (empty) | | ratio | 0 | |
| 100.00% | Pronoun-first sentence starts | Target: ≤30% sentences starting with a pronoun | | pronounCount | 10 | | totalSentences | 51 | | matches | | 0 | "She'd not meant to come." | | 1 | "She'd seen him before—Silas, the" | | 2 | "He set the glass down," | | 3 | "She said it like a" | | 4 | "She'd imagined this conversation, in" | | 5 | "They'd both meant it differently" | | 6 | "They'd both been wrong about" | | 7 | "She set it on the" | | 8 | "She thought about the empty" | | 9 | "She left the card." |
| | ratio | 0.196 | |
| 9.02% | Subject-first sentence starts | Target: ≤72% sentences starting with a subject | | subjectCount | 46 | | totalSentences | 51 | | matches | | 0 | "The green neon buzzed above" | | 1 | "Aurora pushed through, shaking the" | | 2 | "She'd not meant to come." | | 3 | "The flat upstairs sat empty" | | 4 | "The bartender poured without comment." | | 5 | "She'd seen him before—Silas, the" | | 6 | "He set the glass down," | | 7 | "Aurora turned the whisky in" | | 8 | "The voice came from her" | | 9 | "A woman stood there, holding" | | 10 | "The years had carved fine" | | 11 | "Priya laughed, the sound brighter" | | 12 | "Aurora gestured to the stool" | | 13 | "Priya sat, arranging herself with" | | 14 | "The Priya from Cardiff had" | | 15 | "This woman wore a coat" | | 16 | "Priya's eyes moved over her," | | 17 | "Priya turned her own glass" | | 18 | "She said it like a" | | 19 | "Priya smiled, but it didn't" |
| | ratio | 0.902 | |
| 0.00% | Subordinate conjunction sentence starts | Target: ≥2% sentences starting with a subordinating conjunction | | subConjCount | 0 | | totalSentences | 51 | | matches | (empty) | | ratio | 0 | |
| 80.75% | Technical jargon density | Target: ≤6% sentences with technical-jargon patterns | | analyzedSentences | 23 | | technicalSentenceCount | 2 | | matches | | 0 | "For a moment the polish cracked and Aurora saw underneath it, saw the girl who'd shared cheap cigarettes on the steps of the union building and talked about the…" | | 1 | "She thought about the empty flat upstairs and the long years between then and now, the friends scattered, the girl who apologised to doors." |
| |
| 100.00% | Useless dialogue additions | Target: ≤5% dialogue tags with trailing filler fragments | | totalTags | 18 | | uselessAdditionCount | 0 | | matches | (empty) | |
| 100.00% | Dialogue tag variety (said vs. fancy) | Target: ≤10% fancy dialogue tags | | totalTags | 8 | | fancyCount | 1 | | fancyTags | | | dialogueSentences | 50 | | tagDensity | 0.16 | | leniency | 0.32 | | rawRatio | 0.125 | | effectiveRatio | 0.04 | |