| 100.00% | Adverbs in dialogue tags | Target: ≤10% dialogue tags with adverbs | | totalTags | 26 | | adverbTagCount | 0 | | adverbTags | (empty) | | dialogueSentences | 64 | | tagDensity | 0.406 | | leniency | 0.813 | | rawRatio | 0 | | effectiveRatio | 0 | |
| 86.97% | AI-ism adverb frequency | Target: <2% AI-ism adverbs (58 tracked) | | wordCount | 1535 | | totalAiIsmAdverbs | 4 | | found | | | highlights | | 0 | "softly" | | 1 | "very" | | 2 | "slowly" |
| |
| 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) | |
| 93.49% | AI-ism word frequency | Target: <2% AI-ism words (290 tracked) | | wordCount | 1535 | | totalAiIsms | 2 | | found | | | highlights | | |
| 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 | 76 | | matches | (empty) | |
| 100.00% | Filter word density | Target: ≤3% sentences with filter/hedge words | | filterCount | 0 | | hedgeCount | 0 | | narrationSentences | 76 | | filterMatches | (empty) | | hedgeMatches | (empty) | |
| 100.00% | Gibberish response detection | Target: ≤1% gibberish-like sentences (hard fail if a sentence exceeds 800 words) | | analyzedSentences | 113 | | gibberishSentences | 0 | | adjustedGibberishSentences | 0 | | longSentenceCount | 0 | | runOnParagraphCount | 0 | | giantParagraphCount | 0 | | wordSaladCount | 0 | | repetitionLoopCount | 0 | | controlTokenCount | 0 | | repeatedSegmentCount | 0 | | maxSentenceWordsSeen | 77 | | ratio | 0 | | matches | (empty) | |
| 100.00% | Markdown formatting overuse | Target: ≤5% words in markdown formatting | | markdownSpans | 0 | | markdownWords | 0 | | totalWords | 1541 | | ratio | 0 | | matches | (empty) | |
| 100.00% | Missing dialogue indicators (quotation marks) | Target: ≤10% speech attributions without quotation marks | | totalAttributions | 29 | | unquotedAttributions | 0 | | matches | (empty) | |
| 100.00% | Name drop frequency | Target: ≤1.0 per-name mentions per 100 words | | totalMentions | 42 | | wordCount | 911 | | uniqueNames | 17 | | maxNameDensity | 0.88 | | worstName | "Rory" | | maxWindowNameDensity | 2 | | worstWindowName | "Rory" | | discoveredNames | | Brick | 2 | | Lane | 2 | | Moreau | 1 | | Rory | 8 | | French | 1 | | Ptolemy | 5 | | Mistress | 1 | | Ahad | 1 | | Hanbury | 1 | | Street | 1 | | Eva | 5 | | Golden | 1 | | Empress | 1 | | Lucien | 7 | | Cardiff | 1 | | Frenchman | 1 | | Rain | 3 |
| | persons | | 0 | "Moreau" | | 1 | "Rory" | | 2 | "French" | | 3 | "Eva" | | 4 | "Lucien" | | 5 | "Rain" |
| | places | | 0 | "Brick" | | 1 | "Lane" | | 2 | "Hanbury" | | 3 | "Street" | | 4 | "Cardiff" | | 5 | "Frenchman" |
| | globalScore | 1 | | windowScore | 1 | |
| 100.00% | Narrator intent-glossing | Target: ≤2% narration sentences with intent-glossing patterns | | analyzedSentences | 41 | | 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 | 1541 | | matches | (empty) | |
| 100.00% | Overuse of "that" (subordinate clause padding) | Target: ≤2% sentences with "that" clauses | | thatCount | 0 | | totalSentences | 113 | | matches | (empty) | |
| 100.00% | Paragraph length variance | Target: CV ≥0.5 for paragraph word counts | | totalParagraphs | 69 | | mean | 22.33 | | std | 26.76 | | cv | 1.198 | | sampleLengths | | 0 | 14 | | 1 | 44 | | 2 | 60 | | 3 | 8 | | 4 | 9 | | 5 | 3 | | 6 | 1 | | 7 | 1 | | 8 | 72 | | 9 | 30 | | 10 | 7 | | 11 | 5 | | 12 | 3 | | 13 | 1 | | 14 | 17 | | 15 | 4 | | 16 | 68 | | 17 | 5 | | 18 | 4 | | 19 | 3 | | 20 | 105 | | 21 | 5 | | 22 | 2 | | 23 | 2 | | 24 | 16 | | 25 | 32 | | 26 | 5 | | 27 | 43 | | 28 | 28 | | 29 | 59 | | 30 | 4 | | 31 | 5 | | 32 | 1 | | 33 | 6 | | 34 | 11 | | 35 | 44 | | 36 | 11 | | 37 | 6 | | 38 | 3 | | 39 | 9 | | 40 | 59 | | 41 | 15 | | 42 | 10 | | 43 | 29 | | 44 | 9 | | 45 | 17 | | 46 | 2 | | 47 | 13 | | 48 | 21 | | 49 | 76 |
| |
| 96.03% | Passive voice overuse | Target: ≤2% passive sentences | | passiveCount | 2 | | totalSentences | 76 | | matches | | |
| 0.00% | Past progressive (was/were + -ing) overuse | Target: ≤2% past progressive verbs | | pastProgressiveCount | 6 | | totalVerbs | 157 | | matches | | 0 | "was coming" | | 1 | "was dripping" | | 2 | "was being" | | 3 | "wasn't looking" | | 4 | "was looking" | | 5 | "was going" |
| |
| 92.29% | Em-dash & semicolon overuse | Target: ≤2% sentences with em-dashes/semicolons | | emDashCount | 4 | | semicolonCount | 0 | | flaggedSentences | 2 | | totalSentences | 113 | | ratio | 0.018 | | matches | | 0 | "Then the other smell — cedar and cold iron — and her body recognised it before her brain would consent to." | | 1 | "He was quiet for a moment, and his hands — she watched them, because watching his hands was safer than his face — found his cufflinks and turned them the way he did when he was being careful about what he said next." |
| |
| 100.00% | Purple prose (modifier overload) | Target: <4% adverbs, <2% -ly adverbs, no adj stacking | | wordCount | 626 | | adjectiveStacks | 0 | | stackExamples | (empty) | | adverbCount | 20 | | adverbRatio | 0.03194888178913738 | | lyAdverbCount | 1 | | lyAdverbRatio | 0.001597444089456869 | |
| 100.00% | Repeated phrase echo | Target: ≤20% sentences with echoes (window: 2) | | totalSentences | 113 | | echoCount | 0 | | echoWords | (empty) | |
| 100.00% | Sentence length variance | Target: CV ≥0.4 for sentence word counts | | totalSentences | 113 | | mean | 13.64 | | std | 14.91 | | cv | 1.093 | | sampleLengths | | 0 | 14 | | 1 | 4 | | 2 | 19 | | 3 | 21 | | 4 | 26 | | 5 | 15 | | 6 | 19 | | 7 | 8 | | 8 | 7 | | 9 | 2 | | 10 | 3 | | 11 | 1 | | 12 | 1 | | 13 | 31 | | 14 | 41 | | 15 | 9 | | 16 | 21 | | 17 | 7 | | 18 | 5 | | 19 | 3 | | 20 | 1 | | 21 | 17 | | 22 | 4 | | 23 | 20 | | 24 | 48 | | 25 | 3 | | 26 | 2 | | 27 | 4 | | 28 | 3 | | 29 | 4 | | 30 | 24 | | 31 | 77 | | 32 | 5 | | 33 | 2 | | 34 | 2 | | 35 | 5 | | 36 | 11 | | 37 | 32 | | 38 | 5 | | 39 | 43 | | 40 | 6 | | 41 | 22 | | 42 | 8 | | 43 | 27 | | 44 | 24 | | 45 | 4 | | 46 | 5 | | 47 | 1 | | 48 | 6 | | 49 | 7 |
| |
| 53.39% | Sentence opener variety | Target: ≥60% unique sentence openers | | consecutiveRepeats | 8 | | diversityRatio | 0.36283185840707965 | | totalSentences | 113 | | uniqueOpeners | 41 | |
| 100.00% | Adverb-first sentence starts | Target: ≥3% sentences starting with an adverb | | adverbCount | 4 | | totalSentences | 61 | | matches | | 0 | "Then the other smell —" | | 1 | "Then he took off his" | | 2 | "Then the second." | | 3 | "Then the first." |
| | ratio | 0.066 | |
| 29.84% | Pronoun-first sentence starts | Target: ≤30% sentences starting with a pronoun | | pronounCount | 29 | | totalSentences | 61 | | matches | | 0 | "His eyes stayed level with" | | 1 | "She leaned her forehead against" | | 2 | "he said, gravely" | | 3 | "She stepped back." | | 4 | "He wiped his feet." | | 5 | "He leaned the cane in" | | 6 | "She set Ptolemy down" | | 7 | "He was quiet for a" | | 8 | "She boiled water because her" | | 9 | "She set the mug down" | | 10 | "He didn't move" | | 11 | "He said it softly and" | | 12 | "He wasn't looking at her" | | 13 | "He was looking at the" | | 14 | "She watched it land." | | 15 | "He accepted it the way" | | 16 | "He had gone very still." | | 17 | "His eyes came up then" | | 18 | "She hadn't touched it." | | 19 | "Her voice came out thin," |
| | ratio | 0.475 | |
| 33.77% | Subject-first sentence starts | Target: ≤72% sentences starting with a subject | | subjectCount | 52 | | totalSentences | 61 | | matches | | 0 | "The chain caught on the" | | 1 | "Lucien Moreau stood on the" | | 2 | "Rain beaded along the shoulders" | | 3 | "His eyes stayed level with" | | 4 | "Rory put her weight against" | | 5 | "The way he said it," | | 6 | "She leaned her forehead against" | | 7 | "The tabby shoved a paw" | | 8 | "Rory got a foot in" | | 9 | "he said, gravely" | | 10 | "Ptolemy, treacherous animal, purred." | | 11 | "The stairwell was shared with" | | 12 | "She stepped back." | | 13 | "He wiped his feet." | | 14 | "He leaned the cane in" | | 15 | "She set Ptolemy down" | | 16 | "He was quiet for a" | | 17 | "She boiled water because her" | | 18 | "The kettle was Eva's, the" | | 19 | "Rain ran down the window" |
| | ratio | 0.852 | |
| 0.00% | Subordinate conjunction sentence starts | Target: ≥2% sentences starting with a subordinating conjunction | | subConjCount | 0 | | totalSentences | 61 | | matches | (empty) | | ratio | 0 | |
| 83.33% | Technical jargon density | Target: ≤6% sentences with technical-jargon patterns | | analyzedSentences | 24 | | technicalSentenceCount | 2 | | matches | | 0 | "The stairwell was shared with four flats and Mistress Ahad on the ground floor, who took a dim view of everything, and the rain was coming in sideways now, and …" | | 1 | "Then he took off his coat and hung it on the hook anyway, as though he'd been given three hours, and stood in the middle of Eva's flat looking at the ruin of it…" |
| |
| 100.00% | Useless dialogue additions | Target: ≤5% dialogue tags with trailing filler fragments | | totalTags | 26 | | uselessAdditionCount | 1 | | matches | | |
| 100.00% | Dialogue tag variety (said vs. fancy) | Target: ≤10% fancy dialogue tags | | totalTags | 20 | | fancyCount | 1 | | fancyTags | | | dialogueSentences | 64 | | tagDensity | 0.313 | | leniency | 0.625 | | rawRatio | 0.05 | | effectiveRatio | 0.031 | |