| 100.00% | Adverbs in dialogue tags | Target: ≤10% dialogue tags with adverbs | | totalTags | 21 | | adverbTagCount | 1 | | adverbTags | | 0 | "Eva’s hand settled around [around]" |
| | dialogueSentences | 101 | | tagDensity | 0.208 | | leniency | 0.416 | | rawRatio | 0.048 | | effectiveRatio | 0.02 | |
| 79.26% | AI-ism adverb frequency | Target: <2% AI-ism adverbs (58 tracked) | | wordCount | 2170 | | totalAiIsmAdverbs | 9 | | found | | 0 | | | 1 | | | 2 | | adverb | "deliberately" | | count | 1 |
| | 3 | | | 4 | | | 5 | |
| | highlights | | 0 | "slightly" | | 1 | "very" | | 2 | "deliberately" | | 3 | "quickly" | | 4 | "gently" | | 5 | "slowly" |
| |
| 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) | |
| 81.57% | AI-ism word frequency | Target: <2% AI-ism words (290 tracked) | | wordCount | 2170 | | totalAiIsms | 8 | | found | | | highlights | | 0 | "wavering" | | 1 | "could feel" | | 2 | "eyebrow" | | 3 | "silence" | | 4 | "racing" | | 5 | "aligned" | | 6 | "footsteps" |
| |
| 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 | 147 | | matches | (empty) | |
| 100.00% | Filter word density | Target: ≤3% sentences with filter/hedge words | | filterCount | 1 | | hedgeCount | 0 | | narrationSentences | 147 | | filterMatches | | | hedgeMatches | (empty) | |
| 100.00% | Gibberish response detection | Target: ≤1% gibberish-like sentences (hard fail if a sentence exceeds 800 words) | | analyzedSentences | 227 | | gibberishSentences | 0 | | adjustedGibberishSentences | 0 | | longSentenceCount | 0 | | runOnParagraphCount | 0 | | giantParagraphCount | 0 | | wordSaladCount | 0 | | repetitionLoopCount | 0 | | controlTokenCount | 0 | | repeatedSegmentCount | 0 | | maxSentenceWordsSeen | 67 | | ratio | 0 | | matches | (empty) | |
| 100.00% | Markdown formatting overuse | Target: ≤5% words in markdown formatting | | markdownSpans | 0 | | markdownWords | 0 | | totalWords | 2170 | | ratio | 0 | | matches | (empty) | |
| 100.00% | Missing dialogue indicators (quotation marks) | Target: ≤10% speech attributions without quotation marks | | totalAttributions | 26 | | unquotedAttributions | 1 | | matches | | 0 | "In most of them, Eva shouted." |
| |
| 0.00% | Name drop frequency | Target: ≤1.0 per-name mentions per 100 words | | totalMentions | 112 | | wordCount | 1472 | | uniqueNames | 18 | | maxNameDensity | 3.13 | | worstName | "Eva" | | maxWindowNameDensity | 5.5 | | worstWindowName | "Eva" | | discoveredNames | | Raven | 1 | | Nest | 1 | | Golden | 1 | | Empress | 1 | | Bloomsbury | 1 | | Yu-Fei | 1 | | Rory | 43 | | Europe | 1 | | Mr | 1 | | Bevan | 1 | | Silas | 7 | | Eva | 46 | | Despite | 1 | | Cardiff | 1 | | Evan | 2 | | London | 1 | | Roath | 1 | | Park | 1 |
| | persons | | 0 | "Raven" | | 1 | "Empress" | | 2 | "Yu-Fei" | | 3 | "Rory" | | 4 | "Mr" | | 5 | "Bevan" | | 6 | "Silas" | | 7 | "Eva" | | 8 | "Evan" |
| | places | | 0 | "Bloomsbury" | | 1 | "Europe" | | 2 | "Cardiff" | | 3 | "London" | | 4 | "Roath" | | 5 | "Park" |
| | globalScore | 0 | | windowScore | 0 | |
| 100.00% | Narrator intent-glossing | Target: ≤2% narration sentences with intent-glossing patterns | | analyzedSentences | 99 | | glossingSentenceCount | 1 | | matches | | 0 | "seemed beside the point by then" |
| |
| 61.75% | "Not X but Y" pattern overuse | Target: ≤1 "not X but Y" per 1000 words | | totalMatches | 3 | | per1kWords | 1.382 | | wordCount | 2170 | | matches | | 0 | "not why did you vanish, not why did you make me suffer, but the question beneath all the others" | | 1 | "not why did you make me suffer, but the question beneath all the others" | | 2 | "not slow, but the glass in his hand clicked once against his signet ring" |
| |
| 100.00% | Overuse of "that" (subordinate clause padding) | Target: ≤2% sentences with "that" clauses | | thatCount | 3 | | totalSentences | 227 | | matches | | 0 | "was that the" | | 1 | "startled that Rory" | | 2 | "chose that moment" |
| |
| 100.00% | Paragraph length variance | Target: CV ≥0.5 for paragraph word counts | | totalParagraphs | 136 | | mean | 15.96 | | std | 19.31 | | cv | 1.21 | | sampleLengths | | 0 | 29 | | 1 | 69 | | 2 | 51 | | 3 | 13 | | 4 | 76 | | 5 | 17 | | 6 | 41 | | 7 | 6 | | 8 | 10 | | 9 | 1 | | 10 | 14 | | 11 | 2 | | 12 | 32 | | 13 | 6 | | 14 | 2 | | 15 | 16 | | 16 | 46 | | 17 | 8 | | 18 | 3 | | 19 | 1 | | 20 | 8 | | 21 | 18 | | 22 | 8 | | 23 | 20 | | 24 | 11 | | 25 | 1 | | 26 | 7 | | 27 | 55 | | 28 | 3 | | 29 | 4 | | 30 | 4 | | 31 | 4 | | 32 | 6 | | 33 | 16 | | 34 | 41 | | 35 | 23 | | 36 | 5 | | 37 | 7 | | 38 | 20 | | 39 | 2 | | 40 | 5 | | 41 | 4 | | 42 | 54 | | 43 | 5 | | 44 | 1 | | 45 | 3 | | 46 | 3 | | 47 | 19 | | 48 | 2 | | 49 | 74 |
| |
| 100.00% | Passive voice overuse | Target: ≤2% passive sentences | | passiveCount | 2 | | totalSentences | 147 | | matches | | 0 | "been invited" | | 1 | "was obliged" |
| |
| 100.00% | Past progressive (was/were + -ing) overuse | Target: ≤2% past progressive verbs | | pastProgressiveCount | 1 | | totalVerbs | 259 | | matches | | |
| 100.00% | Em-dash & semicolon overuse | Target: ≤2% sentences with em-dashes/semicolons | | emDashCount | 0 | | semicolonCount | 0 | | flaggedSentences | 0 | | totalSentences | 227 | | ratio | 0 | | matches | (empty) | |
| 94.00% | Purple prose (modifier overload) | Target: <4% adverbs, <2% -ly adverbs, no adj stacking | | wordCount | 1478 | | adjectiveStacks | 1 | | stackExamples | | 0 | "slight left-sided drag," |
| | adverbCount | 47 | | adverbRatio | 0.031799729364005415 | | lyAdverbCount | 15 | | lyAdverbRatio | 0.010148849797023005 | |
| 100.00% | Repeated phrase echo | Target: ≤20% sentences with echoes (window: 2) | | totalSentences | 227 | | echoCount | 0 | | echoWords | (empty) | |
| 100.00% | Sentence length variance | Target: CV ≥0.4 for sentence word counts | | totalSentences | 227 | | mean | 9.56 | | std | 8.54 | | cv | 0.894 | | sampleLengths | | 0 | 18 | | 1 | 11 | | 2 | 8 | | 3 | 35 | | 4 | 9 | | 5 | 17 | | 6 | 20 | | 7 | 13 | | 8 | 18 | | 9 | 13 | | 10 | 16 | | 11 | 25 | | 12 | 16 | | 13 | 19 | | 14 | 10 | | 15 | 7 | | 16 | 6 | | 17 | 28 | | 18 | 7 | | 19 | 6 | | 20 | 10 | | 21 | 1 | | 22 | 14 | | 23 | 2 | | 24 | 15 | | 25 | 4 | | 26 | 13 | | 27 | 6 | | 28 | 2 | | 29 | 9 | | 30 | 7 | | 31 | 15 | | 32 | 11 | | 33 | 9 | | 34 | 6 | | 35 | 5 | | 36 | 4 | | 37 | 4 | | 38 | 3 | | 39 | 1 | | 40 | 8 | | 41 | 11 | | 42 | 7 | | 43 | 6 | | 44 | 2 | | 45 | 9 | | 46 | 11 | | 47 | 8 | | 48 | 3 | | 49 | 1 |
| |
| 49.34% | Sentence opener variety | Target: ≥60% unique sentence openers | | consecutiveRepeats | 8 | | diversityRatio | 0.31718061674008813 | | totalSentences | 227 | | uniqueOpeners | 72 | |
| 100.00% | Adverb-first sentence starts | Target: ≥3% sentences starting with an adverb | | adverbCount | 5 | | totalSentences | 130 | | matches | | 0 | "Once, the gesture had left" | | 1 | "Somewhere in the intervening years," | | 2 | "Once, she would have apologised" | | 3 | "Simply because it was true." | | 4 | "Then Eva did, covering her" |
| | ratio | 0.038 | |
| 100.00% | Pronoun-first sentence starts | Target: ≤30% sentences starting with a pronoun | | pronounCount | 33 | | totalSentences | 130 | | matches | | 0 | "She smelled of sesame oil" | | 1 | "Her last delivery for the" | | 2 | "She wanted her flat, dry" | | 3 | "He glanced at Rory, then" | | 4 | "Her first thought was not" | | 5 | "It was that the bookshelf" | | 6 | "Her second was shame for" | | 7 | "She set down the delivery" | | 8 | "She could feel Silas’s attention" | | 9 | "She gave him the smallest" | | 10 | "He returned to his glass." | | 11 | "She nodded towards Rory’s delivery" | | 12 | "She had never imagined Eva" | | 13 | "Her voice remained low" | | 14 | "She had called Eva because" | | 15 | "My flat is yours." | | 16 | "Its underside was dark with" | | 17 | "She had wanted so badly" | | 18 | "she told Eva" | | 19 | "He did not slow, but" |
| | ratio | 0.254 | |
| 79.23% | Subject-first sentence starts | Target: ≤72% sentences starting with a subject | | subjectCount | 99 | | totalSentences | 130 | | matches | | 0 | "Rain had turned the green" | | 1 | "Rory stepped over its reflection" | | 2 | "She smelled of sesame oil" | | 3 | "Her last delivery for the" | | 4 | "Rory’s shoulder-length black hair was" | | 5 | "She wanted her flat, dry" | | 6 | "Silas stood behind the bar" | | 7 | "He glanced at Rory, then" | | 8 | "The woman beneath the map" | | 9 | "Rory knew her by the" | | 10 | "Eva had done it while" | | 11 | "Her first thought was not" | | 12 | "It was that the bookshelf" | | 13 | "Her second was shame for" | | 14 | "She set down the delivery" | | 15 | "Eva half rose, then sat" | | 16 | "The indecision was new." | | 17 | "Eva gave a short, disbelieving" | | 18 | "Rory took off her wet" | | 19 | "She could feel Silas’s attention" |
| | ratio | 0.762 | |
| 100.00% | Subordinate conjunction sentence starts | Target: ≥2% sentences starting with a subordinating conjunction | | subConjCount | 4 | | totalSentences | 130 | | matches | | 0 | "Now her nails were short" | | 1 | "As if the small sound" | | 2 | "Now she waited." | | 3 | "Now she made herself remain" |
| | ratio | 0.031 | |
| 100.00% | Technical jargon density | Target: ≤6% sentences with technical-jargon patterns | | analyzedSentences | 63 | | technicalSentenceCount | 3 | | matches | | 0 | "In others, Rory was articulate and cold, producing explanations in the correct order until the whole business resembled a case that could be won." | | 1 | "She had wanted so badly for Evan’s behaviour to become something ordinary that she had accepted any word that made it smaller." | | 2 | "None of it was the life she and Eva had once described to each other, lying on the grass in Roath Park with the absolute authority of girls who had never paid r…" |
| |
| 100.00% | Useless dialogue additions | Target: ≤5% dialogue tags with trailing filler fragments | | totalTags | 21 | | uselessAdditionCount | 0 | | matches | (empty) | |
| 100.00% | Dialogue tag variety (said vs. fancy) | Target: ≤10% fancy dialogue tags | | totalTags | 13 | | fancyCount | 0 | | fancyTags | (empty) | | dialogueSentences | 101 | | tagDensity | 0.129 | | leniency | 0.257 | | rawRatio | 0 | | effectiveRatio | 0 | |