| 100.00% | Adverbs in dialogue tags | Target: ≤10% dialogue tags with adverbs | | totalTags | 2 | | adverbTagCount | 0 | | adverbTags | (empty) | | dialogueSentences | 1 | | tagDensity | 1 | | leniency | 1 | | rawRatio | 0 | | effectiveRatio | 0 | |
| 100.00% | AI-ism adverb frequency | Target: <2% AI-ism adverbs (58 tracked) | | wordCount | 1246 | | totalAiIsmAdverbs | 0 | | found | (empty) | | highlights | (empty) | |
| 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) | |
| 19.74% | AI-ism word frequency | Target: <2% AI-ism words (290 tracked) | | wordCount | 1246 | | totalAiIsms | 20 | | found | | | highlights | | 0 | "loomed" | | 1 | "warmth" | | 2 | "pulse" | | 3 | "quickened" | | 4 | "weight" | | 5 | "rhythmic" | | 6 | "tracing" | | 7 | "familiar" | | 8 | "silence" | | 9 | "comfortable" | | 10 | "could feel" |
| |
| 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 | 2 | | narrationSentences | 96 | | matches | | 0 | "was angry" | | 1 | "was afraid" |
| |
| 68.45% | Filter word density | Target: ≤3% sentences with filter/hedge words | | filterCount | 0 | | hedgeCount | 5 | | narrationSentences | 96 | | filterMatches | (empty) | | hedgeMatches | | 0 | "seemed to" | | 1 | "began to" | | 2 | "started to" |
| |
| 100.00% | Gibberish response detection | Target: ≤1% gibberish-like sentences (hard fail if a sentence exceeds 800 words) | | analyzedSentences | 97 | | gibberishSentences | 0 | | adjustedGibberishSentences | 0 | | longSentenceCount | 0 | | runOnParagraphCount | 0 | | giantParagraphCount | 0 | | wordSaladCount | 0 | | repetitionLoopCount | 0 | | controlTokenCount | 0 | | repeatedSegmentCount | 0 | | maxSentenceWordsSeen | 55 | | ratio | 0 | | matches | (empty) | |
| 100.00% | Markdown formatting overuse | Target: ≤5% words in markdown formatting | | markdownSpans | 0 | | markdownWords | 0 | | totalWords | 1246 | | ratio | 0 | | matches | (empty) | |
| 100.00% | Missing dialogue indicators (quotation marks) | Target: ≤10% speech attributions without quotation marks | | totalAttributions | 4 | | unquotedAttributions | 0 | | matches | (empty) | |
| 100.00% | Name drop frequency | Target: ≤1.0 per-name mentions per 100 words | | totalMentions | 30 | | wordCount | 1219 | | uniqueNames | 13 | | maxNameDensity | 0.66 | | worstName | "Rory" | | maxWindowNameDensity | 1.5 | | worstWindowName | "Three" | | discoveredNames | | Richmond | 1 | | Park | 1 | | Heartstone | 5 | | London | 1 | | December | 2 | | Tuesday | 1 | | Cantonese | 1 | | Evan | 2 | | Rory | 8 | | Aurora | 1 | | Cardiff | 1 | | Three | 3 | | You | 3 |
| | persons | | 0 | "Heartstone" | | 1 | "Evan" | | 2 | "Rory" | | 3 | "You" |
| | places | | 0 | "Richmond" | | 1 | "Park" | | 2 | "London" | | 3 | "December" | | 4 | "Cantonese" | | 5 | "Cardiff" | | 6 | "Three" |
| | globalScore | 1 | | windowScore | 1 | |
| 62.28% | Narrator intent-glossing | Target: ≤2% narration sentences with intent-glossing patterns | | analyzedSentences | 57 | | glossingSentenceCount | 2 | | matches | | 0 | "violet that seemed to drink the moonlight rather than reflect it" | | 1 | "looked like doorways" |
| |
| 100.00% | "Not X but Y" pattern overuse | Target: ≤1 "not X but Y" per 1000 words | | totalMatches | 1 | | per1kWords | 0.803 | | wordCount | 1246 | | matches | | 0 | "Not the comfortable silence of an empty forest, but the held-breath silence of a room" |
| |
| 100.00% | Overuse of "that" (subordinate clause padding) | Target: ≤2% sentences with "that" clauses | | thatCount | 0 | | totalSentences | 97 | | matches | (empty) | |
| 100.00% | Paragraph length variance | Target: CV ≥0.5 for paragraph word counts | | totalParagraphs | 35 | | mean | 35.6 | | std | 24.87 | | cv | 0.699 | | sampleLengths | | 0 | 8 | | 1 | 60 | | 2 | 55 | | 3 | 10 | | 4 | 66 | | 5 | 29 | | 6 | 4 | | 7 | 65 | | 8 | 58 | | 9 | 57 | | 10 | 6 | | 11 | 1 | | 12 | 45 | | 13 | 70 | | 14 | 9 | | 15 | 44 | | 16 | 2 | | 17 | 21 | | 18 | 67 | | 19 | 44 | | 20 | 7 | | 21 | 60 | | 22 | 56 | | 23 | 56 | | 24 | 10 | | 25 | 59 | | 26 | 73 | | 27 | 29 | | 28 | 1 | | 29 | 44 | | 30 | 38 | | 31 | 62 | | 32 | 19 | | 33 | 5 | | 34 | 6 |
| |
| 100.00% | Passive voice overuse | Target: ≤2% passive sentences | | passiveCount | 1 | | totalSentences | 96 | | matches | | |
| 63.95% | Past progressive (was/were + -ing) overuse | Target: ≤2% past progressive verbs | | pastProgressiveCount | 4 | | totalVerbs | 196 | | matches | | 0 | "was spending" | | 1 | "wasn't flinching" | | 2 | "was searching" | | 3 | "was chasing" |
| |
| 100.00% | Em-dash & semicolon overuse | Target: ≤2% sentences with em-dashes/semicolons | | emDashCount | 0 | | semicolonCount | 0 | | flaggedSentences | 0 | | totalSentences | 97 | | ratio | 0 | | matches | (empty) | |
| 100.00% | Purple prose (modifier overload) | Target: <4% adverbs, <2% -ly adverbs, no adj stacking | | wordCount | 400 | | adjectiveStacks | 0 | | stackExamples | (empty) | | adverbCount | 9 | | adverbRatio | 0.0225 | | lyAdverbCount | 2 | | lyAdverbRatio | 0.005 | |
| 100.00% | Repeated phrase echo | Target: ≤20% sentences with echoes (window: 2) | | totalSentences | 97 | | echoCount | 0 | | echoWords | (empty) | |
| 100.00% | Sentence length variance | Target: CV ≥0.4 for sentence word counts | | totalSentences | 97 | | mean | 12.85 | | std | 11.82 | | cv | 0.92 | | sampleLengths | | 0 | 8 | | 1 | 24 | | 2 | 19 | | 3 | 17 | | 4 | 7 | | 5 | 26 | | 6 | 3 | | 7 | 19 | | 8 | 10 | | 9 | 11 | | 10 | 30 | | 11 | 25 | | 12 | 6 | | 13 | 23 | | 14 | 4 | | 15 | 7 | | 16 | 16 | | 17 | 42 | | 18 | 11 | | 19 | 19 | | 20 | 28 | | 21 | 3 | | 22 | 54 | | 23 | 4 | | 24 | 1 | | 25 | 1 | | 26 | 1 | | 27 | 3 | | 28 | 1 | | 29 | 1 | | 30 | 21 | | 31 | 19 | | 32 | 2 | | 33 | 23 | | 34 | 21 | | 35 | 24 | | 36 | 4 | | 37 | 5 | | 38 | 3 | | 39 | 22 | | 40 | 14 | | 41 | 5 | | 42 | 2 | | 43 | 3 | | 44 | 15 | | 45 | 3 | | 46 | 3 | | 47 | 27 | | 48 | 10 | | 49 | 27 |
| |
| 48.11% | Sentence opener variety | Target: ≥60% unique sentence openers | | consecutiveRepeats | 10 | | diversityRatio | 0.35051546391752575 | | totalSentences | 97 | | uniqueOpeners | 34 | |
| 0.00% | Adverb-first sentence starts | Target: ≥3% sentences starting with an adverb | | adverbCount | 0 | | totalSentences | 84 | | matches | (empty) | | ratio | 0 | |
| 100.00% | Pronoun-first sentence starts | Target: ≤30% sentences starting with a pronoun | | pronounCount | 20 | | totalSentences | 84 | | matches | | 0 | "She knew these paths, knew" | | 1 | "She pushed through a curtain" | | 2 | "Her breath misted in front" | | 3 | "She cupped the gemstone through" | | 4 | "She'd come anyway." | | 5 | "Her hand found the small" | | 6 | "She'd got it falling from" | | 7 | "She wasn't eight anymore." | | 8 | "She yanked it free from" | | 9 | "It peeled from the ground" | | 10 | "It swayed, testing its new" | | 11 | "You don't bolt from something" | | 12 | "You make yourself boring." | | 13 | "You make yourself still." | | 14 | "Its movement had no rhythm," | | 15 | "It simply occupied new space," | | 16 | "It had led her here" | | 17 | "Its hand, if it could" | | 18 | "She'd bled then." | | 19 | "She could feel herself bleeding" |
| | ratio | 0.238 | |
| 67.14% | Subject-first sentence starts | Target: ≤72% sentences starting with a subject | | subjectCount | 66 | | totalSentences | 84 | | matches | | 0 | "The standing stones loomed taller" | | 1 | "Rory had passed through Richmond" | | 2 | "She knew these paths, knew" | | 3 | "The Heartstone pendant burned against" | | 4 | "This was heat." | | 5 | "She pushed through a curtain" | | 6 | "The clearing opened before her" | | 7 | "Wildflowers carpeted the ground in" | | 8 | "The air smelled of honey" | | 9 | "Rory crouched at the tree" | | 10 | "Her breath misted in front" | | 11 | "The pendant's pulse quickened." | | 12 | "She cupped the gemstone through" | | 13 | "The deep crimson glow bled" | | 14 | "Yu-Fei had grabbed her wrist" | | 15 | "She'd come anyway." | | 16 | "The pendant had led her" | | 17 | "A sound reached her." | | 18 | "The way a large animal" | | 19 | "The sound came from everywhere" |
| | ratio | 0.786 | |
| 0.00% | Subordinate conjunction sentence starts | Target: ≥2% sentences starting with a subordinating conjunction | | subConjCount | 0 | | totalSentences | 84 | | matches | (empty) | | ratio | 0 | |
| 21.28% | Technical jargon density | Target: ≤6% sentences with technical-jargon patterns | | analyzedSentences | 47 | | technicalSentenceCount | 8 | | matches | | 0 | "Not the faint warmth it usually carried, the gentle pulse that had guided her through London's streets like a compass pointing toward something she couldn't nam…" | | 1 | "Real heat, the kind that left her wondering if the silver chain had branded a line into her skin." | | 2 | "Wildflowers carpeted the ground in colours that had no business existing after dark, blues and golds and a deep violet that seemed to drink the moonlight rather…" | | 3 | "Three weeks ago, she'd found it waiting in her rucksack between a delivery of prawn toast and a bag of spring rolls, no note, no explanation, just the weight of…" | | 4 | "Running was what prey did, and the part of her brain that had learned to read Evan's moods, that had mapped the precise angle of his jaw before he swung, recogn…" | | 5 | "You don't bolt from something that wants you to bolt." | | 6 | "A vibration that organised itself into language somewhere between her ears and her brain, bypassing her ears entirely." | | 7 | "The skin around it had gone cold, but the scar itself burned, a phantom heat that had nothing to do with the pendant and everything to do with the part of her t…" |
| |
| 100.00% | Useless dialogue additions | Target: ≤5% dialogue tags with trailing filler fragments | | totalTags | 2 | | uselessAdditionCount | 0 | | matches | (empty) | |
| 100.00% | Dialogue tag variety (said vs. fancy) | Target: ≤10% fancy dialogue tags | |