| 100.00% | Adverbs in dialogue tags | Target: ≤10% dialogue tags with adverbs | | totalTags | 3 | | adverbTagCount | 0 | | adverbTags | (empty) | | dialogueSentences | 26 | | tagDensity | 0.115 | | leniency | 0.231 | | rawRatio | 0 | | effectiveRatio | 0 | |
| 80.31% | AI-ism adverb frequency | Target: <2% AI-ism adverbs (58 tracked) | | wordCount | 1016 | | totalAiIsmAdverbs | 4 | | found | | | highlights | | 0 | "slightly" | | 1 | "suddenly" | | 2 | "carefully" |
| |
| 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) | |
| 60.63% | AI-ism word frequency | Target: <2% AI-ism words (290 tracked) | | wordCount | 1016 | | totalAiIsms | 8 | | found | | | highlights | | 0 | "glistening" | | 1 | "flicked" | | 2 | "silence" | | 3 | "whisper" | | 4 | "electric" | | 5 | "pulse" | | 6 | "simmering" |
| |
| 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 | 70 | | matches | (empty) | |
| 100.00% | Filter word density | Target: ≤3% sentences with filter/hedge words | | filterCount | 0 | | hedgeCount | 1 | | narrationSentences | 70 | | filterMatches | (empty) | | hedgeMatches | | |
| 100.00% | Gibberish response detection | Target: ≤1% gibberish-like sentences (hard fail if a sentence exceeds 800 words) | | analyzedSentences | 93 | | gibberishSentences | 0 | | adjustedGibberishSentences | 0 | | longSentenceCount | 0 | | runOnParagraphCount | 0 | | giantParagraphCount | 0 | | wordSaladCount | 0 | | repetitionLoopCount | 0 | | controlTokenCount | 0 | | maxSentenceWordsSeen | 46 | | ratio | 0 | | matches | (empty) | |
| 100.00% | Markdown formatting overuse | Target: ≤5% words in markdown formatting | | markdownSpans | 0 | | markdownWords | 0 | | totalWords | 1006 | | ratio | 0 | | matches | (empty) | |
| 100.00% | Missing dialogue indicators (quotation marks) | Target: ≤10% speech attributions without quotation marks | | totalAttributions | 7 | | unquotedAttributions | 0 | | matches | (empty) | |
| 99.43% | Name drop frequency | Target: ≤1.0 per-name mentions per 100 words | | totalMentions | 26 | | wordCount | 791 | | uniqueNames | 8 | | maxNameDensity | 1.01 | | worstName | "Rory" | | maxWindowNameDensity | 1.5 | | worstWindowName | "Rory" | | discoveredNames | | Rory | 8 | | Eva | 5 | | Golden | 1 | | Empress | 1 | | Lucien | 8 | | Christmas | 1 | | Aurora | 1 | | Malphora | 1 |
| | persons | | | places | (empty) | | globalScore | 0.994 | | windowScore | 1 | |
| 98.98% | Narrator intent-glossing | Target: ≤2% narration sentences with intent-glossing patterns | | analyzedSentences | 49 | | glossingSentenceCount | 1 | | matches | | 0 | "as if watching something beyond the flat's ceiling" |
| |
| 100.00% | "Not X but Y" pattern overuse | Target: ≤1 "not X but Y" per 1000 words | | totalMatches | 0 | | per1kWords | 0 | | wordCount | 1006 | | matches | (empty) | |
| 100.00% | Overuse of "that" (subordinate clause padding) | Target: ≤2% sentences with "that" clauses | | thatCount | 1 | | totalSentences | 93 | | matches | | |
| 100.00% | Paragraph length variance | Target: CV ≥0.5 for paragraph word counts | | totalParagraphs | 46 | | mean | 21.87 | | std | 17.58 | | cv | 0.804 | | sampleLengths | | 0 | 64 | | 1 | 1 | | 2 | 46 | | 3 | 51 | | 4 | 9 | | 5 | 2 | | 6 | 25 | | 7 | 38 | | 8 | 4 | | 9 | 32 | | 10 | 43 | | 11 | 6 | | 12 | 3 | | 13 | 16 | | 14 | 46 | | 15 | 4 | | 16 | 16 | | 17 | 23 | | 18 | 14 | | 19 | 30 | | 20 | 13 | | 21 | 1 | | 22 | 23 | | 23 | 8 | | 24 | 65 | | 25 | 17 | | 26 | 50 | | 27 | 18 | | 28 | 6 | | 29 | 54 | | 30 | 4 | | 31 | 20 | | 32 | 15 | | 33 | 2 | | 34 | 35 | | 35 | 44 | | 36 | 6 | | 37 | 28 | | 38 | 10 | | 39 | 12 | | 40 | 28 | | 41 | 11 | | 42 | 16 | | 43 | 28 | | 44 | 11 | | 45 | 8 |
| |
| 85.21% | Passive voice overuse | Target: ≤2% passive sentences | | passiveCount | 4 | | totalSentences | 70 | | matches | | 0 | "been curled" | | 1 | "been replaced" | | 2 | "been drawn" | | 3 | "was tangled" |
| |
| 97.44% | Past progressive (was/were + -ing) overuse | Target: ≤2% past progressive verbs | | pastProgressiveCount | 2 | | totalVerbs | 130 | | matches | | 0 | "were stripping" | | 1 | "were memorizing" |
| |
| 0.00% | Em-dash & semicolon overuse | Target: ≤2% sentences with em-dashes/semicolons | | emDashCount | 8 | | semicolonCount | 0 | | flaggedSentences | 6 | | totalSentences | 93 | | ratio | 0.065 | | matches | | 0 | "She hadn't expected company—not tonight, not in this state." | | 1 | "Eva wasn’t home—thank god—but the flat's usual smell of curry and old books had been replaced by the sharp, metallic tang of his cologne, the one Rory had bought him last Christmas." | | 2 | "The deadbolts hadn’t been drawn—the oversight now glaring." | | 3 | "She set the tart down on the nearest surface—the dining table buried under spell diagrams drawn in messy ink." | | 4 | "Lucien moved before she could react—her hand in his, the touch warm, electric, sending a jolt up her arm that made her knees threaten to fold." | | 5 | "The scent of him—bergamot and gunpowder—filled her lungs." |
| |
| 96.81% | Purple prose (modifier overload) | Target: <4% adverbs, <2% -ly adverbs, no adj stacking | | wordCount | 802 | | adjectiveStacks | 0 | | stackExamples | (empty) | | adverbCount | 35 | | adverbRatio | 0.043640897755610975 | | lyAdverbCount | 5 | | lyAdverbRatio | 0.006234413965087282 | |
| 100.00% | Repeated phrase echo | Target: ≤20% sentences with echoes (window: 2) | | totalSentences | 93 | | echoCount | 0 | | echoWords | (empty) | |
| 100.00% | Sentence length variance | Target: CV ≥0.4 for sentence word counts | | totalSentences | 93 | | mean | 10.82 | | std | 8.88 | | cv | 0.821 | | sampleLengths | | 0 | 27 | | 1 | 9 | | 2 | 28 | | 3 | 1 | | 4 | 9 | | 5 | 19 | | 6 | 18 | | 7 | 19 | | 8 | 32 | | 9 | 9 | | 10 | 2 | | 11 | 18 | | 12 | 7 | | 13 | 13 | | 14 | 25 | | 15 | 4 | | 16 | 27 | | 17 | 2 | | 18 | 3 | | 19 | 17 | | 20 | 8 | | 21 | 4 | | 22 | 2 | | 23 | 9 | | 24 | 3 | | 25 | 6 | | 26 | 3 | | 27 | 2 | | 28 | 7 | | 29 | 7 | | 30 | 25 | | 31 | 21 | | 32 | 4 | | 33 | 2 | | 34 | 3 | | 35 | 2 | | 36 | 9 | | 37 | 19 | | 38 | 4 | | 39 | 7 | | 40 | 7 | | 41 | 30 | | 42 | 7 | | 43 | 6 | | 44 | 1 | | 45 | 21 | | 46 | 2 | | 47 | 8 | | 48 | 18 | | 49 | 21 |
| |
| 55.20% | Sentence opener variety | Target: ≥60% unique sentence openers | | consecutiveRepeats | 7 | | diversityRatio | 0.3763440860215054 | | totalSentences | 93 | | uniqueOpeners | 35 | |
| 53.76% | Adverb-first sentence starts | Target: ≥3% sentences starting with an adverb | | adverbCount | 1 | | totalSentences | 62 | | matches | | 0 | "Then he stepped back, releasing" |
| | ratio | 0.016 | |
| 84.52% | Pronoun-first sentence starts | Target: ≤30% sentences starting with a pronoun | | pronounCount | 21 | | totalSentences | 62 | | matches | | 0 | "She hadn't expected company—not tonight," | | 1 | "She'd just finished plating the" | | 2 | "His amber eye locked onto" | | 3 | "His lips quirked, but his" | | 4 | "She caught it before it" | | 5 | "He stepped inside, the door" | | 6 | "She should’ve locked up." | | 7 | "She set the tart down" | | 8 | "His cane tapped once against" | | 9 | "He tilted his head, the" | | 10 | "He adjusted his cuff, the" | | 11 | "She didn’t ask." | | 12 | "His amber eye darkened, the" | | 13 | "He stood suddenly, too fast" | | 14 | "His stare drilled into her," | | 15 | "His voice dropped, rougher than" | | 16 | "She followed his gaze down." | | 17 | "She hadn’t even felt it." | | 18 | "He pressed her finger to" | | 19 | "His eyes were inches from" |
| | ratio | 0.339 | |
| 16.45% | Subject-first sentence starts | Target: ≤72% sentences starting with a subject | | subjectCount | 55 | | totalSentences | 62 | | matches | | 0 | "The rain hammered against the" | | 1 | "She hadn't expected company—not tonight," | | 2 | "She'd just finished plating the" | | 3 | "The voice cut through the" | | 4 | "Rory's grip tightened around the" | | 5 | "His amber eye locked onto" | | 6 | "Ptolemy bolted from the armchair" | | 7 | "Eva wasn’t home—thank god—but the" | | 8 | "His lips quirked, but his" | | 9 | "The tart slipped slightly in" | | 10 | "She caught it before it" | | 11 | "The lie slipped out easier" | | 12 | "He stepped inside, the door" | | 13 | "The deadbolts hadn’t been drawn—the" | | 14 | "She should’ve locked up." | | 15 | "This flat was a haven," | | 16 | "Plenty of time to find" | | 17 | "Plenty of time to decide" | | 18 | "The flour on her hands" | | 19 | "Lucien’s gaze followed it down," |
| | ratio | 0.887 | |
| 0.00% | Subordinate conjunction sentence starts | Target: ≥2% sentences starting with a subordinating conjunction | | subConjCount | 0 | | totalSentences | 62 | | matches | (empty) | | ratio | 0 | |
| 79.83% | Technical jargon density | Target: ≤6% sentences with technical-jargon patterns | | analyzedSentences | 34 | | technicalSentenceCount | 3 | | matches | | 0 | "His amber eye locked onto hers, the black one distant, as if watching something beyond the flat's ceiling." | | 1 | "He stepped inside, the door swinging shut behind him with a finality that made her chest tighten." | | 2 | "His stare drilled into her, unblinking, as if he were memorizing her face again." |
| |
| 100.00% | Useless dialogue additions | Target: ≤5% dialogue tags with trailing filler fragments | | totalTags | 3 | | uselessAdditionCount | 0 | | matches | (empty) | |
| 100.00% | Dialogue tag variety (said vs. fancy) | Target: ≤10% fancy dialogue tags | | totalTags | 1 | | fancyCount | 1 | | fancyTags | | | dialogueSentences | 26 | | tagDensity | 0.038 | | leniency | 0.077 | | rawRatio | 1 | | effectiveRatio | 0.077 | |