| 100.00% | Adverbs in dialogue tags | Target: ≤10% dialogue tags with adverbs | | totalTags | 11 | | adverbTagCount | 1 | | adverbTags | | 0 | "His jaw shifted slightly [slightly]" |
| | dialogueSentences | 38 | | tagDensity | 0.289 | | leniency | 0.579 | | rawRatio | 0.091 | | effectiveRatio | 0.053 | |
| 79.94% | AI-ism adverb frequency | Target: <2% AI-ism adverbs (58 tracked) | | wordCount | 997 | | totalAiIsmAdverbs | 4 | | found | | | highlights | | 0 | "precisely" | | 1 | "slightly" | | 2 | "very" |
| |
| 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) | |
| 79.94% | AI-ism word frequency | Target: <2% AI-ism words (290 tracked) | | wordCount | 997 | | totalAiIsms | 4 | | found | | | highlights | | 0 | "silence" | | 1 | "coded" | | 2 | "resolve" | | 3 | "flicker" |
| |
| 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 | 1 | | narrationSentences | 66 | | matches | | |
| 100.00% | Filter word density | Target: ≤3% sentences with filter/hedge words | | filterCount | 0 | | hedgeCount | 0 | | narrationSentences | 66 | | filterMatches | (empty) | | hedgeMatches | (empty) | |
| 100.00% | Gibberish response detection | Target: ≤1% gibberish-like sentences (hard fail if a sentence exceeds 800 words) | | analyzedSentences | 91 | | gibberishSentences | 0 | | adjustedGibberishSentences | 0 | | longSentenceCount | 0 | | runOnParagraphCount | 0 | | giantParagraphCount | 0 | | wordSaladCount | 0 | | repetitionLoopCount | 0 | | controlTokenCount | 0 | | maxSentenceWordsSeen | 77 | | ratio | 0 | | matches | (empty) | |
| 100.00% | Markdown formatting overuse | Target: ≤5% words in markdown formatting | | markdownSpans | 0 | | markdownWords | 0 | | totalWords | 1005 | | ratio | 0 | | matches | (empty) | |
| 100.00% | Missing dialogue indicators (quotation marks) | Target: ≤10% speech attributions without quotation marks | | totalAttributions | 11 | | unquotedAttributions | 0 | | matches | (empty) | |
| 100.00% | Name drop frequency | Target: ≤1.0 per-name mentions per 100 words | | totalMentions | 18 | | wordCount | 757 | | uniqueNames | 12 | | maxNameDensity | 0.53 | | worstName | "Lucien" | | maxWindowNameDensity | 1.5 | | worstWindowName | "Lucien" | | discoveredNames | | Rory | 2 | | Eva | 2 | | Moreau | 1 | | March | 2 | | Started | 1 | | Lucien | 4 | | Bermondsey | 1 | | Brick | 1 | | Lane | 1 | | Welsh | 1 | | Restarted | 1 | | Gallic | 1 |
| | persons | | 0 | "Rory" | | 1 | "Eva" | | 2 | "Moreau" | | 3 | "Lucien" |
| | places | | 0 | "Bermondsey" | | 1 | "Brick" | | 2 | "Lane" |
| | globalScore | 1 | | windowScore | 1 | |
| 0.00% | Narrator intent-glossing | Target: ≤2% narration sentences with intent-glossing patterns | | analyzedSentences | 37 | | glossingSentenceCount | 3 | | matches | | 0 | "tail raised, apparently delighted by the co" | | 1 | "looked like a decision being made" | | 2 | "sounded like a contradiction she couldn't" |
| |
| 100.00% | "Not X but Y" pattern overuse | Target: ≤1 "not X but Y" per 1000 words | | totalMatches | 0 | | per1kWords | 0 | | wordCount | 1005 | | matches | (empty) | |
| 100.00% | Overuse of "that" (subordinate clause padding) | Target: ≤2% sentences with "that" clauses | | thatCount | 0 | | totalSentences | 91 | | matches | (empty) | |
| 100.00% | Paragraph length variance | Target: CV ≥0.5 for paragraph word counts | | totalParagraphs | 47 | | mean | 21.38 | | std | 18.99 | | cv | 0.888 | | sampleLengths | | 0 | 54 | | 1 | 6 | | 2 | 49 | | 3 | 27 | | 4 | 4 | | 5 | 11 | | 6 | 32 | | 7 | 3 | | 8 | 10 | | 9 | 34 | | 10 | 16 | | 11 | 3 | | 12 | 19 | | 13 | 26 | | 14 | 4 | | 15 | 29 | | 16 | 85 | | 17 | 3 | | 18 | 16 | | 19 | 37 | | 20 | 5 | | 21 | 21 | | 22 | 1 | | 23 | 41 | | 24 | 8 | | 25 | 3 | | 26 | 18 | | 27 | 12 | | 28 | 25 | | 29 | 32 | | 30 | 77 | | 31 | 2 | | 32 | 3 | | 33 | 10 | | 34 | 38 | | 35 | 10 | | 36 | 8 | | 37 | 1 | | 38 | 26 | | 39 | 45 | | 40 | 26 | | 41 | 7 | | 42 | 38 | | 43 | 36 | | 44 | 11 | | 45 | 23 | | 46 | 10 |
| |
| 94.63% | Passive voice overuse | Target: ≤2% passive sentences | | passiveCount | 2 | | totalSentences | 66 | | matches | | 0 | "been built" | | 1 | "being made" |
| |
| 38.71% | Past progressive (was/were + -ing) overuse | Target: ≤2% past progressive verbs | | pastProgressiveCount | 3 | | totalVerbs | 124 | | matches | | 0 | "were seeing" | | 1 | "was standing" | | 2 | "was putting" |
| |
| 0.00% | Em-dash & semicolon overuse | Target: ≤2% sentences with em-dashes/semicolons | | emDashCount | 8 | | semicolonCount | 0 | | flaggedSentences | 7 | | totalSentences | 91 | | ratio | 0.077 | | matches | | 0 | "He looked precisely as he always did — charcoal suit without a crease in it, platinum hair slicked back from that angular face, ivory-handled cane hooked over one forearm like an accessory rather than a necessity." | | 1 | "He ducked slightly under the doorframe — the flat had been built for smaller centuries — and she closed the deadbolts behind him out of habit, all three, and when she turned around he was standing in the middle of Eva's living room looking at the stacked scrolls and the books piled spine-out on every surface, the research notes pinned to the wall with coloured tacks, the cold mug of tea on the coffee table that was hers." | | 2 | "That was always the unsettling thing about Lucien — he didn't hedge." | | 3 | "The March memory arrived uninvited — a rain-soaked street in Bermondsey, Lucien's back to her as he spoke to someone she didn't know in a language she didn't speak, the long car idling at the kerb, and the way he'd glanced back at her once, just once, with an expression she hadn't been able to read." | | 4 | "Behind him, through the window, the street sounds of Brick Lane rose and fell — a burst of music from somewhere down the road, a motorbike, voices in the curry house below." | | 5 | "That was the thing she'd never found a defence against — the moments when he simply agreed with her." | | 6 | "His eyes moved across her face — amber, then black, then amber again, that slight involuntary flicker she'd catalogued without ever meaning to." |
| |
| 90.90% | Purple prose (modifier overload) | Target: <4% adverbs, <2% -ly adverbs, no adj stacking | | wordCount | 754 | | adjectiveStacks | 0 | | stackExamples | (empty) | | adverbCount | 38 | | adverbRatio | 0.050397877984084884 | | lyAdverbCount | 6 | | lyAdverbRatio | 0.007957559681697613 | |
| 100.00% | Repeated phrase echo | Target: ≤20% sentences with echoes (window: 2) | | totalSentences | 91 | | echoCount | 0 | | echoWords | (empty) | |
| 100.00% | Sentence length variance | Target: CV ≥0.4 for sentence word counts | | totalSentences | 91 | | mean | 11.04 | | std | 11.75 | | cv | 1.064 | | sampleLengths | | 0 | 20 | | 1 | 3 | | 2 | 31 | | 3 | 6 | | 4 | 36 | | 5 | 9 | | 6 | 4 | | 7 | 5 | | 8 | 22 | | 9 | 4 | | 10 | 3 | | 11 | 8 | | 12 | 5 | | 13 | 3 | | 14 | 18 | | 15 | 6 | | 16 | 3 | | 17 | 6 | | 18 | 4 | | 19 | 10 | | 20 | 23 | | 21 | 1 | | 22 | 4 | | 23 | 2 | | 24 | 10 | | 25 | 3 | | 26 | 19 | | 27 | 5 | | 28 | 3 | | 29 | 18 | | 30 | 4 | | 31 | 5 | | 32 | 24 | | 33 | 78 | | 34 | 7 | | 35 | 3 | | 36 | 12 | | 37 | 4 | | 38 | 5 | | 39 | 2 | | 40 | 12 | | 41 | 18 | | 42 | 5 | | 43 | 7 | | 44 | 14 | | 45 | 1 | | 46 | 36 | | 47 | 5 | | 48 | 8 | | 49 | 3 |
| |
| 62.27% | Sentence opener variety | Target: ≥60% unique sentence openers | | consecutiveRepeats | 5 | | diversityRatio | 0.4065934065934066 | | totalSentences | 91 | | uniqueOpeners | 37 | |
| 59.52% | Adverb-first sentence starts | Target: ≥3% sentences starting with an adverb | | adverbCount | 1 | | totalSentences | 56 | | matches | | 0 | "Just the words, level and" |
| | ratio | 0.018 | |
| 27.14% | Pronoun-first sentence starts | Target: ≤30% sentences starting with a pronoun | | pronounCount | 27 | | totalSentences | 56 | | matches | | 0 | "She expected takeaway." | | 1 | "She'd ordered pad thai twenty" | | 2 | "He looked precisely as he" | | 3 | "He just looked at her," | | 4 | "She pulled the cardigan tighter." | | 5 | "It hit mid-thigh." | | 6 | "She didn't move from the" | | 7 | "His jaw shifted slightly" | | 8 | "She should have said no." | | 9 | "He ducked slightly under the" | | 10 | "His cane tapped once against" | | 11 | "He turned to face her." | | 12 | "He committed to looking at" | | 13 | "She didn't look somewhere else." | | 14 | "He set the cane against" | | 15 | "It came out flat" | | 16 | "She'd walked away." | | 17 | "He hadn't come after her." | | 18 | "He was quiet for a" | | 19 | "His voice had dropped" |
| | ratio | 0.482 | |
| 49.29% | Subject-first sentence starts | Target: ≤72% sentences starting with a subject | | subjectCount | 46 | | totalSentences | 56 | | matches | | 0 | "The third deadbolt stuck, the" | | 1 | "She expected takeaway." | | 2 | "She'd ordered pad thai twenty" | | 3 | "Lucien Moreau stood on the" | | 4 | "He looked precisely as he" | | 5 | "The amber eye caught the" | | 6 | "The black one didn't." | | 7 | "Neither did he say anything." | | 8 | "He just looked at her," | | 9 | "She pulled the cardigan tighter." | | 10 | "It hit mid-thigh." | | 11 | "She didn't move from the" | | 12 | "His jaw shifted slightly" | | 13 | "The smell of curry drifted" | | 14 | "Ptolemy materialised from somewhere in" | | 15 | "Something moved behind his expression." | | 16 | "She should have said no." | | 17 | "The thought was clear and" | | 18 | "He ducked slightly under the" | | 19 | "His cane tapped once against" |
| | ratio | 0.821 | |
| 0.00% | Subordinate conjunction sentence starts | Target: ≥2% sentences starting with a subordinating conjunction | | subConjCount | 0 | | totalSentences | 56 | | matches | (empty) | | ratio | 0 | |
| 87.91% | Technical jargon density | Target: ≤6% sentences with technical-jargon patterns | | analyzedSentences | 26 | | technicalSentenceCount | 2 | | matches | | 0 | "He ducked slightly under the doorframe — the flat had been built for smaller centuries — and she closed the deadbolts behind him out of habit, all three, and wh…" | | 1 | "He committed to looking at you in a way that made most people want to look somewhere else." |
| |
| 100.00% | Useless dialogue additions | Target: ≤5% dialogue tags with trailing filler fragments | | totalTags | 11 | | uselessAdditionCount | 0 | | matches | (empty) | |
| 100.00% | Dialogue tag variety (said vs. fancy) | Target: ≤10% fancy dialogue tags | | totalTags | 4 | | fancyCount | 0 | | fancyTags | (empty) | | dialogueSentences | 38 | | tagDensity | 0.105 | | leniency | 0.211 | | rawRatio | 0 | | effectiveRatio | 0 | |