| 100.00% | Adverbs in dialogue tags | Target: ≤10% dialogue tags with adverbs | | totalTags | 2 | | adverbTagCount | 0 | | adverbTags | (empty) | | dialogueSentences | 2 | | tagDensity | 1 | | leniency | 1 | | rawRatio | 0 | | effectiveRatio | 0 | |
| 78.96% | AI-ism adverb frequency | Target: <2% AI-ism adverbs (58 tracked) | | wordCount | 1426 | | totalAiIsmAdverbs | 6 | | found | | | highlights | | |
| 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) | |
| 54.42% | AI-ism word frequency | Target: <2% AI-ism words (290 tracked) | | wordCount | 1426 | | totalAiIsms | 13 | | found | | | highlights | | 0 | "warmth" | | 1 | "pulse" | | 2 | "silence" | | 3 | "rhythmic" | | 4 | "searing" | | 5 | "could feel" | | 6 | "weight" | | 7 | "pulsed" |
| |
| 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 | 115 | | matches | (empty) | |
| 100.00% | Filter word density | Target: ≤3% sentences with filter/hedge words | | filterCount | 1 | | hedgeCount | 1 | | narrationSentences | 115 | | filterMatches | | | hedgeMatches | | |
| 100.00% | Gibberish response detection | Target: ≤1% gibberish-like sentences (hard fail if a sentence exceeds 800 words) | | analyzedSentences | 115 | | gibberishSentences | 0 | | adjustedGibberishSentences | 0 | | longSentenceCount | 0 | | runOnParagraphCount | 0 | | giantParagraphCount | 0 | | wordSaladCount | 0 | | repetitionLoopCount | 0 | | controlTokenCount | 0 | | repeatedSegmentCount | 0 | | maxSentenceWordsSeen | 68 | | ratio | 0 | | matches | (empty) | |
| 100.00% | Markdown formatting overuse | Target: ≤5% words in markdown formatting | | markdownSpans | 0 | | markdownWords | 0 | | totalWords | 1442 | | 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 | 33 | | wordCount | 1440 | | uniqueNames | 16 | | maxNameDensity | 0.35 | | worstName | "Aurora" | | maxWindowNameDensity | 1 | | worstWindowName | "Yu-Fei" | | discoveredNames | | Aurora | 5 | | Yu-Fei | 4 | | People | 1 | | Richmond | 2 | | Park | 1 | | Cardiff | 2 | | Jenny | 1 | | Carter | 2 | | Eva | 3 | | Quieter | 1 | | Evan | 2 | | Grove | 1 | | Rory | 1 | | London | 1 | | One | 3 | | Don | 3 |
| | persons | | 0 | "Aurora" | | 1 | "Yu-Fei" | | 2 | "Jenny" | | 3 | "Carter" | | 4 | "Eva" | | 5 | "Evan" | | 6 | "Grove" | | 7 | "Rory" |
| | places | | 0 | "Richmond" | | 1 | "Park" | | 2 | "Cardiff" | | 3 | "London" |
| | globalScore | 1 | | windowScore | 1 | |
| 76.47% | Narrator intent-glossing | Target: ≤2% narration sentences with intent-glossing patterns | | analyzedSentences | 68 | | glossingSentenceCount | 2 | | matches | | 0 | "felt like a coin pulled from a freezer" | | 1 | "seemed taller or the clearing had lowered, or — she shut that down" |
| |
| 100.00% | "Not X but Y" pattern overuse | Target: ≤1 "not X but Y" per 1000 words | | totalMatches | 1 | | per1kWords | 0.693 | | wordCount | 1442 | | matches | | 0 | "not for sounds but for the shape of the quiet" |
| |
| 79.71% | Overuse of "that" (subordinate clause padding) | Target: ≤2% sentences with "that" clauses | | thatCount | 3 | | totalSentences | 115 | | matches | | 0 | "noticed that hours" | | 1 | "follow that thought" | | 2 | "see that the" |
| |
| 100.00% | Paragraph length variance | Target: CV ≥0.5 for paragraph word counts | | totalParagraphs | 41 | | mean | 35.17 | | std | 27.3 | | cv | 0.776 | | sampleLengths | | 0 | 14 | | 1 | 76 | | 2 | 41 | | 3 | 28 | | 4 | 57 | | 5 | 5 | | 6 | 88 | | 7 | 66 | | 8 | 15 | | 9 | 58 | | 10 | 35 | | 11 | 29 | | 12 | 64 | | 13 | 32 | | 14 | 4 | | 15 | 26 | | 16 | 16 | | 17 | 99 | | 18 | 9 | | 19 | 69 | | 20 | 6 | | 21 | 38 | | 22 | 13 | | 23 | 74 | | 24 | 33 | | 25 | 59 | | 26 | 3 | | 27 | 4 | | 28 | 6 | | 29 | 82 | | 30 | 4 | | 31 | 3 | | 32 | 7 | | 33 | 34 | | 34 | 49 | | 35 | 16 | | 36 | 66 | | 37 | 19 | | 38 | 24 | | 39 | 14 | | 40 | 57 |
| |
| 93.06% | Passive voice overuse | Target: ≤2% passive sentences | | passiveCount | 4 | | totalSentences | 115 | | matches | | 0 | "got swallowed" | | 1 | "been caught" | | 2 | "was had" | | 3 | "been startled" |
| |
| 4.74% | Past progressive (was/were + -ing) overuse | Target: ≤2% past progressive verbs | | pastProgressiveCount | 7 | | totalVerbs | 239 | | matches | | 0 | "was making" | | 1 | "was going" | | 2 | "were closing" | | 3 | "were closing" | | 4 | "was winding" | | 5 | "was standing" | | 6 | "was walking" |
| |
| 0.00% | Em-dash & semicolon overuse | Target: ≤2% sentences with em-dashes/semicolons | | emDashCount | 16 | | semicolonCount | 1 | | flaggedSentences | 13 | | totalSentences | 115 | | ratio | 0.113 | | matches | | 0 | "That stopped her again, three paces in, because flowers closed at night — that was something her mother had taught her in a Cardiff garden a lifetime ago, Jenny Carter kneeling in the soil, look, cariad, they go to sleep same as you." | | 1 | "It had no time, either — the lock screen showed 00:00 and when she thumbed it again it showed 00:00, stubbornly, as if the numbers had simply agreed to stop." | | 2 | "At the centre of the clearing she stopped and listened, properly, the way she'd learned as a kid sneaking home late — not for sounds but for the shape of the quiet." | | 3 | "She gasped and grabbed it through her jacket — it burned, properly burned, and then the heat vanished all at once and the tearing sound stopped." | | 4 | "The stones themselves seemed taller, or the clearing had lowered, or — she shut that down." | | 5 | "She saw it after — one pale face folded shut among thousands of open ones, like a single closed eye in a crowd of staring ones." | | 6 | "No — in a curve." | | 7 | "The clearing was moonlit enough — silver grass, pale blooms, her own shadow faint at her feet — and there was nothing there, nothing, but the spiral kept tightening, fifteen feet out now, ten, and the tearing sound began again, gentle and satisfied, right at the edge of her left ear, and the pendant went ice cold and then searing and then ice cold again, flickering like a signal light." | | 8 | "But everything in Aurora, every wire evolution had strung through her, said run, run now, the spiral was six feet out, she could feel a displacement in the air like standing too close to a passing lorry, a pressure, a smell — wet earth and something sweeter underneath, rotten sweet, like fruit left too long in the sun —" | | 9 | "The cold came with it, a deep cellar cold, and the pendant against her chest did something it had never done before — it pulsed, hard, three times, like a heartbeat that had been startled awake." | | 10 | "At the gap between them — her exit — something pale lay in the grass." | | 11 | "You always look; that was the cruelty of it." | | 12 | "She walked to the note — didn't run, walking was all she had left of dignity — and crouched and read it by phone-light." |
| |
| 80.84% | Purple prose (modifier overload) | Target: <4% adverbs, <2% -ly adverbs, no adj stacking | | wordCount | 1432 | | adjectiveStacks | 2 | | stackExamples | | 0 | "wet, careful, rhythmic noise," | | 1 | "sweeter underneath, rotten sweet, like" |
| | adverbCount | 69 | | adverbRatio | 0.04818435754189944 | | lyAdverbCount | 18 | | lyAdverbRatio | 0.012569832402234637 | |
| 100.00% | Repeated phrase echo | Target: ≤20% sentences with echoes (window: 2) | | totalSentences | 115 | | echoCount | 0 | | echoWords | (empty) | |
| 100.00% | Sentence length variance | Target: CV ≥0.4 for sentence word counts | | totalSentences | 115 | | mean | 12.54 | | std | 12.96 | | cv | 1.034 | | sampleLengths | | 0 | 14 | | 1 | 39 | | 2 | 6 | | 3 | 15 | | 4 | 16 | | 5 | 10 | | 6 | 4 | | 7 | 17 | | 8 | 10 | | 9 | 9 | | 10 | 19 | | 11 | 5 | | 12 | 36 | | 13 | 9 | | 14 | 7 | | 15 | 5 | | 16 | 4 | | 17 | 43 | | 18 | 21 | | 19 | 15 | | 20 | 1 | | 21 | 4 | | 22 | 9 | | 23 | 23 | | 24 | 13 | | 25 | 7 | | 26 | 14 | | 27 | 3 | | 28 | 3 | | 29 | 9 | | 30 | 58 | | 31 | 5 | | 32 | 30 | | 33 | 1 | | 34 | 4 | | 35 | 3 | | 36 | 9 | | 37 | 12 | | 38 | 32 | | 39 | 8 | | 40 | 5 | | 41 | 4 | | 42 | 15 | | 43 | 4 | | 44 | 5 | | 45 | 23 | | 46 | 4 | | 47 | 26 | | 48 | 6 | | 49 | 10 |
| |
| 43.48% | Sentence opener variety | Target: ≥60% unique sentence openers | | consecutiveRepeats | 15 | | diversityRatio | 0.3391304347826087 | | totalSentences | 115 | | uniqueOpeners | 39 | |
| 32.05% | Adverb-first sentence starts | Target: ≥3% sentences starting with an adverb | | adverbCount | 1 | | totalSentences | 104 | | matches | | | ratio | 0.01 | |
| 35.38% | Pronoun-first sentence starts | Target: ≤30% sentences starting with a pronoun | | pronounCount | 48 | | totalSentences | 104 | | matches | | 0 | "She'd come through the park" | | 1 | "She'd noticed that hours ago," | | 2 | "It usually ran warm, had" | | 3 | "she said, and immediately hated" | | 4 | "It pressed against her eardrums" | | 5 | "She stepped between the stones." | | 6 | "Her skin crawled anyway." | | 7 | "She'd been here once before," | | 8 | "It didn't thin as her" | | 9 | "It sat there, dense and" | | 10 | "She walked toward the centre" | | 11 | "Her phone had no signal." | | 12 | "It had no time, either" | | 13 | "She knew that." | | 14 | "She tucked the phone away" | | 15 | "It came from everywhere." | | 16 | "She turned in a slow" | | 17 | "She gasped and grabbed it" | | 18 | "It was the silence of" | | 19 | "Her heart was going too" |
| | ratio | 0.462 | |
| 51.35% | Subject-first sentence starts | Target: ≤72% sentences starting with a subject | | subjectCount | 85 | | totalSentences | 104 | | matches | | 0 | "The standing stones rose out" | | 1 | "She'd come through the park" | | 2 | "The note wasn't in Yu-Fei's" | | 3 | "She'd noticed that hours ago," | | 4 | "The pendant hung cold against" | | 5 | "That was wrong too." | | 6 | "It usually ran warm, had" | | 7 | "Tonight it felt like a" | | 8 | "she said, and immediately hated" | | 9 | "People who said hello in" | | 10 | "The grove answered with nothing." | | 11 | "Here there was silence so" | | 12 | "It pressed against her eardrums" | | 13 | "She stepped between the stones." | | 14 | "The wildflowers were open." | | 15 | "That stopped her again, three" | | 16 | "These were wide open, hundreds" | | 17 | "Her skin crawled anyway." | | 18 | "The clearing was bigger than" | | 19 | "She'd been here once before," |
| | ratio | 0.817 | |
| 96.15% | Subordinate conjunction sentence starts | Target: ≥2% sentences starting with a subordinating conjunction | | subConjCount | 2 | | totalSentences | 104 | | matches | | 0 | "Now, standing at the tree" | | 1 | "Now the far edge dissolved" |
| | ratio | 0.019 | |
| 100.00% | Technical jargon density | Target: ≤6% sentences with technical-jargon patterns | | analyzedSentences | 46 | | technicalSentenceCount | 1 | | matches | | 0 | "The cold came with it, a deep cellar cold, and the pendant against her chest did something it had never done before — it pulsed, hard, three times, like a heart…" |
| |
| 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 | | totalTags | 1 | | fancyCount | 0 | | fancyTags | (empty) | | dialogueSentences | 2 | | tagDensity | 0.5 | | leniency | 1 | | rawRatio | 0 | | effectiveRatio | 0 | |