| 100.00% | Adverbs in dialogue tags | Target: ≤10% dialogue tags with adverbs | | totalTags | 15 | | adverbTagCount | 1 | | adverbTags | | 0 | "he said finally [finally]" |
| | dialogueSentences | 29 | | tagDensity | 0.517 | | leniency | 1 | | rawRatio | 0.067 | | effectiveRatio | 0.067 | |
| 73.45% | AI-ism adverb frequency | Target: <2% AI-ism adverbs (58 tracked) | | wordCount | 1130 | | totalAiIsmAdverbs | 6 | | found | | | highlights | | 0 | "loosely" | | 1 | "very" | | 2 | "suddenly" | | 3 | "gently" | | 4 | "precisely" |
| |
| 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) | |
| 82.30% | AI-ism word frequency | Target: <2% AI-ism words (290 tracked) | | wordCount | 1130 | | totalAiIsms | 4 | | 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 | 58 | | matches | (empty) | |
| 93.60% | Filter word density | Target: ≤3% sentences with filter/hedge words | | filterCount | 1 | | hedgeCount | 1 | | narrationSentences | 58 | | filterMatches | | | hedgeMatches | | |
| 100.00% | Gibberish response detection | Target: ≤1% gibberish-like sentences (hard fail if a sentence exceeds 800 words) | | analyzedSentences | 72 | | gibberishSentences | 0 | | adjustedGibberishSentences | 0 | | longSentenceCount | 0 | | runOnParagraphCount | 0 | | giantParagraphCount | 0 | | wordSaladCount | 0 | | repetitionLoopCount | 0 | | controlTokenCount | 0 | | repeatedSegmentCount | 0 | | maxSentenceWordsSeen | 64 | | ratio | 0 | | matches | (empty) | |
| 100.00% | Markdown formatting overuse | Target: ≤5% words in markdown formatting | | markdownSpans | 5 | | markdownWords | 17 | | totalWords | 1141 | | ratio | 0.015 | | matches | | 0 | "You will not let him see it. You will not give him that." | | 1 | "Rory" | | 2 | "Liability." | | 3 | "sentimental," | | 4 | "Malphora." |
| |
| 100.00% | Missing dialogue indicators (quotation marks) | Target: ≤10% speech attributions without quotation marks | | totalAttributions | 18 | | unquotedAttributions | 0 | | matches | (empty) | |
| 100.00% | Name drop frequency | Target: ≤1.0 per-name mentions per 100 words | | totalMentions | 16 | | wordCount | 792 | | uniqueNames | 7 | | maxNameDensity | 0.51 | | worstName | "Aurora" | | maxWindowNameDensity | 1 | | worstWindowName | "Aurora" | | discoveredNames | | Aurora | 4 | | Moreau | 1 | | Lucien | 3 | | Eva | 2 | | French | 1 | | Rory | 2 | | Ptolemy | 3 |
| | persons | | 0 | "Aurora" | | 1 | "Moreau" | | 2 | "Lucien" | | 3 | "Eva" | | 4 | "Rory" |
| | places | (empty) | | globalScore | 1 | | windowScore | 1 | |
| 100.00% | Narrator intent-glossing | Target: ≤2% narration sentences with intent-glossing patterns | | analyzedSentences | 39 | | 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 | 1141 | | matches | (empty) | |
| 100.00% | Overuse of "that" (subordinate clause padding) | Target: ≤2% sentences with "that" clauses | | thatCount | 1 | | totalSentences | 72 | | matches | | |
| 100.00% | Paragraph length variance | Target: CV ≥0.5 for paragraph word counts | | totalParagraphs | 33 | | mean | 34.58 | | std | 31.42 | | cv | 0.909 | | sampleLengths | | 0 | 26 | | 1 | 80 | | 2 | 8 | | 3 | 28 | | 4 | 40 | | 5 | 5 | | 6 | 6 | | 7 | 56 | | 8 | 15 | | 9 | 57 | | 10 | 1 | | 11 | 93 | | 12 | 75 | | 13 | 3 | | 14 | 51 | | 15 | 18 | | 16 | 52 | | 17 | 5 | | 18 | 4 | | 19 | 3 | | 20 | 88 | | 21 | 28 | | 22 | 112 | | 23 | 7 | | 24 | 11 | | 25 | 67 | | 26 | 4 | | 27 | 71 | | 28 | 33 | | 29 | 9 | | 30 | 59 | | 31 | 20 | | 32 | 6 |
| |
| 93.16% | Passive voice overuse | Target: ≤2% passive sentences | | passiveCount | 2 | | totalSentences | 58 | | matches | | |
| 100.00% | Past progressive (was/were + -ing) overuse | Target: ≤2% past progressive verbs | | pastProgressiveCount | 2 | | totalVerbs | 135 | | matches | | 0 | "was screaming" | | 1 | "was hammering" |
| |
| 0.00% | Em-dash & semicolon overuse | Target: ≤2% sentences with em-dashes/semicolons | | emDashCount | 6 | | semicolonCount | 2 | | flaggedSentences | 6 | | totalSentences | 72 | | ratio | 0.083 | | matches | | 0 | "The three deadbolts gave way one after another — a slow, reluctant percussion — and then the door swung inward, and Aurora forgot how to breathe." | | 1 | "\"And yet.\" He smiled, the way he always did — as if the world were a private joke and he alone had been told the punchline." | | 2 | "He glanced past her — she felt the weight of that mismatched gaze move over the chaos of Eva's flat, the towers of books, the scrolls unfurled across the floor and pinned at their corners with mugs, the research notes taped to every inch of wall." | | 3 | "Every sensible part of her — the part raised by a barrister, the part that had clawed her way out of one disaster of a man already — was screaming it." | | 4 | "She didn't step back, though her heart was hammering hard enough that she was certain he could hear it; half-demons heard everything." | | 5 | "She would have known how to fight charm; she had armored herself against charm." |
| |
| 94.00% | Purple prose (modifier overload) | Target: <4% adverbs, <2% -ly adverbs, no adj stacking | | wordCount | 788 | | adjectiveStacks | 1 | | stackExamples | | 0 | "same maddening, gentle voice," |
| | adverbCount | 26 | | adverbRatio | 0.03299492385786802 | | lyAdverbCount | 9 | | lyAdverbRatio | 0.011421319796954314 | |
| 100.00% | Repeated phrase echo | Target: ≤20% sentences with echoes (window: 2) | | totalSentences | 72 | | echoCount | 0 | | echoWords | (empty) | |
| 100.00% | Sentence length variance | Target: CV ≥0.4 for sentence word counts | | totalSentences | 72 | | mean | 15.85 | | std | 13.85 | | cv | 0.874 | | sampleLengths | | 0 | 26 | | 1 | 26 | | 2 | 15 | | 3 | 39 | | 4 | 8 | | 5 | 26 | | 6 | 2 | | 7 | 3 | | 8 | 22 | | 9 | 6 | | 10 | 9 | | 11 | 5 | | 12 | 6 | | 13 | 10 | | 14 | 33 | | 15 | 7 | | 16 | 6 | | 17 | 13 | | 18 | 2 | | 19 | 46 | | 20 | 3 | | 21 | 8 | | 22 | 1 | | 23 | 18 | | 24 | 2 | | 25 | 21 | | 26 | 26 | | 27 | 26 | | 28 | 5 | | 29 | 31 | | 30 | 28 | | 31 | 3 | | 32 | 8 | | 33 | 3 | | 34 | 12 | | 35 | 25 | | 36 | 14 | | 37 | 8 | | 38 | 4 | | 39 | 6 | | 40 | 23 | | 41 | 6 | | 42 | 23 | | 43 | 5 | | 44 | 4 | | 45 | 3 | | 46 | 66 | | 47 | 22 | | 48 | 5 | | 49 | 23 |
| |
| 61.11% | Sentence opener variety | Target: ≥60% unique sentence openers | | consecutiveRepeats | 6 | | diversityRatio | 0.4166666666666667 | | totalSentences | 72 | | uniqueOpeners | 30 | |
| 68.03% | Adverb-first sentence starts | Target: ≥3% sentences starting with an adverb | | adverbCount | 1 | | totalSentences | 49 | | matches | | 0 | "Somewhere below, the curry house" |
| | ratio | 0.02 | |
| 0.00% | Pronoun-first sentence starts | Target: ≤30% sentences starting with a pronoun | | pronounCount | 29 | | totalSentences | 49 | | matches | | 0 | "He smiled, the way he" | | 1 | "She didn't move." | | 2 | "She kept her hand on" | | 3 | "*You will not let him" | | 4 | "You will not give him" | | 5 | "He glanced past her —" | | 6 | "His mouth curved." | | 7 | "He said her full name," | | 8 | "He had earned *Rory* once," | | 9 | "She should have said no." | | 10 | "It always did." | | 11 | "It was the thing that" | | 12 | "She stepped back." | | 13 | "He bent and scooped Ptolemy" | | 14 | "she said, shutting the door" | | 15 | "She didn't bolt it." | | 16 | "She told herself that meant" | | 17 | "He set his cane against" | | 18 | "he said finally" | | 19 | "she said, and her voice" |
| | ratio | 0.592 | |
| 0.00% | Subject-first sentence starts | Target: ≤72% sentences starting with a subject | | subjectCount | 46 | | totalSentences | 49 | | matches | | 0 | "The three deadbolts gave way" | | 1 | "Lucien Moreau stood in the" | | 2 | "Rain had darkened the shoulders" | | 3 | "A single strand of platinum" | | 4 | "He smiled, the way he" | | 5 | "She didn't move." | | 6 | "Ptolemy wound between her ankles," | | 7 | "The cat had always liked" | | 8 | "That, more than anything, had" | | 9 | "The words landed somewhere beneath" | | 10 | "She kept her hand on" | | 11 | "*You will not let him" | | 12 | "You will not give him" | | 13 | "He glanced past her —" | | 14 | "His mouth curved." | | 15 | "He said her full name," | | 16 | "He had earned *Rory* once," | | 17 | "She should have said no." | | 18 | "Every sensible part of her" | | 19 | "It always did." |
| | ratio | 0.939 | |
| 0.00% | Subordinate conjunction sentence starts | Target: ≥2% sentences starting with a subordinating conjunction | | subConjCount | 0 | | totalSentences | 49 | | matches | (empty) | | ratio | 0 | |
| 83.33% | Technical jargon density | Target: ≤6% sentences with technical-jargon patterns | | analyzedSentences | 24 | | technicalSentenceCount | 2 | | matches | | 0 | "Every sensible part of her — the part raised by a barrister, the part that had clawed her way out of one disaster of a man already — was screaming it." | | 1 | "But there was a tightness around his eyes she didn't recognize, something that didn't fit the easy choreography of his charm, and against her better judgment, c…" |
| |
| 91.67% | Useless dialogue additions | Target: ≤5% dialogue tags with trailing filler fragments | | totalTags | 15 | | uselessAdditionCount | 1 | | matches | | 0 | "he said, and the lightness was gone entirely now" |
| |
| 81.03% | Dialogue tag variety (said vs. fancy) | Target: ≤10% fancy dialogue tags | | totalTags | 11 | | fancyCount | 2 | | fancyTags | | 0 | "he agreed (agree)" | | 1 | "she whispered (whisper)" |
| | dialogueSentences | 29 | | tagDensity | 0.379 | | leniency | 0.759 | | rawRatio | 0.182 | | effectiveRatio | 0.138 | |