| 94.74% | Adverbs in dialogue tags | Target: ≤10% dialogue tags with adverbs | | totalTags | 8 | | adverbTagCount | 2 | | adverbTags | | 0 | "He turned back [back]" | | 1 | "Lucien said carefully [carefully]" |
| | dialogueSentences | 38 | | tagDensity | 0.211 | | leniency | 0.421 | | rawRatio | 0.25 | | effectiveRatio | 0.105 | |
| 64.25% | AI-ism adverb frequency | Target: <2% AI-ism adverbs (58 tracked) | | wordCount | 979 | | totalAiIsmAdverbs | 7 | | found | | | highlights | | 0 | "carefully" | | 1 | "slowly" | | 2 | "slightly" | | 3 | "perfectly" |
| |
| 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) | |
| 74.46% | AI-ism word frequency | Target: <2% AI-ism words (290 tracked) | | wordCount | 979 | | totalAiIsms | 5 | | found | | | highlights | | 0 | "navigate" | | 1 | "resolved" | | 2 | "silence" | | 3 | "absolutely" |
| |
| 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 | 50 | | matches | (empty) | |
| 100.00% | Filter word density | Target: ≤3% sentences with filter/hedge words | | filterCount | 0 | | hedgeCount | 0 | | narrationSentences | 50 | | filterMatches | (empty) | | hedgeMatches | (empty) | |
| 100.00% | Gibberish response detection | Target: ≤1% gibberish-like sentences (hard fail if a sentence exceeds 800 words) | | analyzedSentences | 80 | | gibberishSentences | 0 | | adjustedGibberishSentences | 0 | | longSentenceCount | 0 | | runOnParagraphCount | 0 | | giantParagraphCount | 0 | | wordSaladCount | 0 | | repetitionLoopCount | 0 | | controlTokenCount | 0 | | maxSentenceWordsSeen | 72 | | ratio | 0 | | matches | (empty) | |
| 100.00% | Markdown formatting overuse | Target: ≤5% words in markdown formatting | | markdownSpans | 0 | | markdownWords | 0 | | totalWords | 986 | | ratio | 0 | | matches | (empty) | |
| 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 | 27 | | wordCount | 794 | | uniqueNames | 11 | | maxNameDensity | 0.63 | | worstName | "Eva" | | maxWindowNameDensity | 1.5 | | worstWindowName | "Eva" | | discoveredNames | | Ptolemy | 4 | | Eva | 5 | | Moreau | 2 | | Rory | 5 | | Brick | 1 | | Lane | 1 | | Lucien | 4 | | Southwark | 2 | | Laila | 1 | | Carter | 1 | | Tried | 1 |
| | persons | | 0 | "Ptolemy" | | 1 | "Eva" | | 2 | "Moreau" | | 3 | "Rory" | | 4 | "Lucien" | | 5 | "Laila" | | 6 | "Carter" |
| | places | | 0 | "Brick" | | 1 | "Lane" | | 2 | "Southwark" |
| | globalScore | 1 | | windowScore | 1 | |
| 100.00% | Narrator intent-glossing | Target: ≤2% narration sentences with intent-glossing patterns | | analyzedSentences | 34 | | 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 | 986 | | matches | (empty) | |
| 100.00% | Overuse of "that" (subordinate clause padding) | Target: ≤2% sentences with "that" clauses | | thatCount | 1 | | totalSentences | 80 | | matches | | |
| 100.00% | Paragraph length variance | Target: CV ≥0.5 for paragraph word counts | | totalParagraphs | 52 | | mean | 18.96 | | std | 22.99 | | cv | 1.212 | | sampleLengths | | 0 | 84 | | 1 | 4 | | 2 | 57 | | 3 | 22 | | 4 | 33 | | 5 | 9 | | 6 | 3 | | 7 | 60 | | 8 | 2 | | 9 | 8 | | 10 | 5 | | 11 | 9 | | 12 | 2 | | 13 | 3 | | 14 | 4 | | 15 | 87 | | 16 | 36 | | 17 | 8 | | 18 | 1 | | 19 | 10 | | 20 | 57 | | 21 | 10 | | 22 | 5 | | 23 | 2 | | 24 | 2 | | 25 | 22 | | 26 | 4 | | 27 | 5 | | 28 | 52 | | 29 | 5 | | 30 | 29 | | 31 | 8 | | 32 | 4 | | 33 | 4 | | 34 | 84 | | 35 | 4 | | 36 | 3 | | 37 | 5 | | 38 | 36 | | 39 | 9 | | 40 | 2 | | 41 | 15 | | 42 | 3 | | 43 | 1 | | 44 | 44 | | 45 | 35 | | 46 | 1 | | 47 | 19 | | 48 | 14 | | 49 | 8 |
| |
| 98.25% | Passive voice overuse | Target: ≤2% passive sentences | | passiveCount | 1 | | totalSentences | 50 | | matches | | |
| 0.00% | Past progressive (was/were + -ing) overuse | Target: ≤2% past progressive verbs | | pastProgressiveCount | 6 | | totalVerbs | 122 | | matches | | 0 | "were reading" | | 1 | "was willing" | | 2 | "was translating" | | 3 | "were arguing" | | 4 | "was thinking" | | 5 | "was threatening" |
| |
| 0.00% | Em-dash & semicolon overuse | Target: ≤2% sentences with em-dashes/semicolons | | emDashCount | 8 | | semicolonCount | 0 | | flaggedSentences | 5 | | totalSentences | 80 | | ratio | 0.063 | | matches | | 0 | "She set the scroll down on the coffee table — carefully, because she had once crumpled a corner and Eva had not let it go for a fortnight — and crossed the flat." | | 1 | "One amber eye, one black — both trained on her through the gap." | | 2 | "Something shifted in his expression, not by much — Lucien Moreau did not deal in much — but enough." | | 3 | "He picked up his cane from the windowsill, not because he needed it to walk, she had worked that much out — he used it when he was thinking." | | 4 | "The way he said her name — her real name, not Laila, not Carter — with that slight softening that she doubted he was even aware of, was the thing that had undone her in Southwark and was threatening to do it again now." |
| |
| 100.00% | Purple prose (modifier overload) | Target: <4% adverbs, <2% -ly adverbs, no adj stacking | | wordCount | 787 | | adjectiveStacks | 0 | | stackExamples | (empty) | | adverbCount | 30 | | adverbRatio | 0.03811944091486658 | | lyAdverbCount | 14 | | lyAdverbRatio | 0.017789072426937738 | |
| 100.00% | Repeated phrase echo | Target: ≤20% sentences with echoes (window: 2) | | totalSentences | 80 | | echoCount | 0 | | echoWords | (empty) | |
| 100.00% | Sentence length variance | Target: CV ≥0.4 for sentence word counts | | totalSentences | 80 | | mean | 12.33 | | std | 13.23 | | cv | 1.073 | | sampleLengths | | 0 | 30 | | 1 | 33 | | 2 | 2 | | 3 | 8 | | 4 | 11 | | 5 | 3 | | 6 | 1 | | 7 | 33 | | 8 | 24 | | 9 | 4 | | 10 | 18 | | 11 | 33 | | 12 | 4 | | 13 | 5 | | 14 | 3 | | 15 | 13 | | 16 | 15 | | 17 | 13 | | 18 | 19 | | 19 | 2 | | 20 | 8 | | 21 | 5 | | 22 | 5 | | 23 | 4 | | 24 | 2 | | 25 | 3 | | 26 | 4 | | 27 | 28 | | 28 | 30 | | 29 | 29 | | 30 | 3 | | 31 | 33 | | 32 | 8 | | 33 | 1 | | 34 | 10 | | 35 | 57 | | 36 | 4 | | 37 | 6 | | 38 | 5 | | 39 | 2 | | 40 | 2 | | 41 | 20 | | 42 | 2 | | 43 | 4 | | 44 | 5 | | 45 | 31 | | 46 | 21 | | 47 | 5 | | 48 | 10 | | 49 | 19 |
| |
| 50.42% | Sentence opener variety | Target: ≥60% unique sentence openers | | consecutiveRepeats | 8 | | diversityRatio | 0.3625 | | totalSentences | 80 | | uniqueOpeners | 29 | |
| 100.00% | Adverb-first sentence starts | Target: ≥3% sentences starting with an adverb | | adverbCount | 2 | | totalSentences | 44 | | matches | | 0 | "Sometimes the neighbours knocked on" | | 1 | "Then she took a step" |
| | ratio | 0.045 | |
| 10.91% | Pronoun-first sentence starts | Target: ≤30% sentences starting with a pronoun | | pronounCount | 23 | | totalSentences | 44 | | matches | | 0 | "She set the scroll down" | | 1 | "She checked the peephole." | | 2 | "She left the chain on." | | 3 | "He looked exactly the same" | | 4 | "She looked at the cut." | | 5 | "He noticed her looking." | | 6 | "She unhooked the chain because" | | 7 | "He came in, and she" | | 8 | "He noticed the scroll on" | | 9 | "He didn't sit." | | 10 | "He stood near the window" | | 11 | "He set the cane against" | | 12 | "He turned back from the" | | 13 | "She picked up the wine" | | 14 | "He looked at the cat" | | 15 | "She had stopped answering it." | | 16 | "She had stopped answering it" | | 17 | "He picked up his cane" | | 18 | "He turned it slowly in" | | 19 | "She set the wine glass" |
| | ratio | 0.523 | |
| 16.82% | Subject-first sentence starts | Target: ≤72% sentences starting with a subject | | subjectCount | 39 | | totalSentences | 44 | | matches | | 0 | "The knock came at half" | | 1 | "Rory was halfway through the" | | 2 | "The building had terrible acoustics" | | 3 | "She set the scroll down" | | 4 | "Ptolemy watched from his perch" | | 5 | "She checked the peephole." | | 6 | "Lucien Moreau stood on the" | | 7 | "Rory opened the door." | | 8 | "She left the chain on." | | 9 | "He looked exactly the same" | | 10 | "The platinum hair was swept" | | 11 | "She looked at the cut." | | 12 | "He noticed her looking." | | 13 | "She unhooked the chain because" | | 14 | "He came in, and she" | | 15 | "He noticed the scroll on" | | 16 | "He didn't sit." | | 17 | "He stood near the window" | | 18 | "He set the cane against" | | 19 | "Rory crossed her arms." |
| | ratio | 0.886 | |
| 0.00% | Subordinate conjunction sentence starts | Target: ≥2% sentences starting with a subordinating conjunction | | subConjCount | 0 | | totalSentences | 44 | | matches | (empty) | | ratio | 0 | |
| 18.63% | Technical jargon density | Target: ≤6% sentences with technical-jargon patterns | | analyzedSentences | 23 | | technicalSentenceCount | 4 | | matches | | 0 | "The knock came at half past ten, three sharp raps that cut through the low murmur of the curry house below and the scratch of Ptolemy's claws on the floorboards…" | | 1 | "Lucien Moreau stood on the other side of the door in his charcoal suit, cane in hand, head angled slightly downward as though he were reading the grain of the w…" | | 2 | "He stood near the window with his cane planted between his shoes and looked at her in that way he had, patient and precise, as though she were a text he was tra…" | | 3 | "The way he said her name — her real name, not Laila, not Carter — with that slight softening that she doubted he was even aware of, was the thing that had undon…" |
| |
| 62.50% | Useless dialogue additions | Target: ≤5% dialogue tags with trailing filler fragments | | totalTags | 8 | | uselessAdditionCount | 1 | | matches | | 0 | "he agreed, as though this were a perfectly ordinary thing to do" |
| |
| 100.00% | Dialogue tag variety (said vs. fancy) | Target: ≤10% fancy dialogue tags | | totalTags | 4 | | fancyCount | 1 | | fancyTags | | | dialogueSentences | 38 | | tagDensity | 0.105 | | leniency | 0.211 | | rawRatio | 0.25 | | effectiveRatio | 0.053 | |