| 100.00% | Adverbs in dialogue tags | Target: ≤10% dialogue tags with adverbs | |
| 84.04% | AI-ism adverb frequency | Target: <2% AI-ism adverbs (58 tracked) | | wordCount | 940 | | totalAiIsmAdverbs | 3 | | found | | | highlights | | 0 | "very" | | 1 | "slightly" | | 2 | "utterly" |
| |
| 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) | |
| 0.00% | AI-ism word frequency | Target: <2% AI-ism words (290 tracked) | | wordCount | 940 | | totalAiIsms | 21 | | found | | | highlights | | 0 | "pulsed" | | 1 | "rhythmic" | | 2 | "throb" | | 3 | "warmth" | | 4 | "silence" | | 5 | "pulse" | | 6 | "oppressive" | | 7 | "sentinel" | | 8 | "flicker" | | 9 | "scanned" | | 10 | "could feel" | | 11 | "weight" | | 12 | "whisper" | | 13 | "shimmered" | | 14 | "searing" | | 15 | "throbbed" | | 16 | "echoed" |
| |
| 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 | 94 | | matches | (empty) | |
| 100.00% | Filter word density | Target: ≤3% sentences with filter/hedge words | | filterCount | 0 | | hedgeCount | 2 | | narrationSentences | 94 | | filterMatches | (empty) | | hedgeMatches | | |
| 100.00% | Gibberish response detection | Target: ≤1% gibberish-like sentences (hard fail if a sentence exceeds 800 words) | | analyzedSentences | 96 | | gibberishSentences | 0 | | adjustedGibberishSentences | 0 | | longSentenceCount | 0 | | runOnParagraphCount | 0 | | giantParagraphCount | 0 | | wordSaladCount | 0 | | repetitionLoopCount | 0 | | controlTokenCount | 0 | | maxSentenceWordsSeen | 40 | | ratio | 0 | | matches | (empty) | |
| 100.00% | Markdown formatting overuse | Target: ≤5% words in markdown formatting | | markdownSpans | 1 | | markdownWords | 12 | | totalWords | 930 | | ratio | 0.013 | | matches | | 0 | "The answers you seek are in the grove. Wear this. Come alone." |
| |
| 100.00% | Missing dialogue indicators (quotation marks) | Target: ≤10% speech attributions without quotation marks | | totalAttributions | 2 | | unquotedAttributions | 1 | | matches | | 0 | "Paranoia, she told herself." |
| |
| 100.00% | Name drop frequency | Target: ≤1.0 per-name mentions per 100 words | | totalMentions | 7 | | wordCount | 926 | | uniqueNames | 6 | | maxNameDensity | 0.22 | | worstName | "Heartstone" | | maxWindowNameDensity | 0.5 | | worstWindowName | "Heartstone" | | discoveredNames | | Heartstone | 2 | | Aurora | 1 | | Richmond | 1 | | Park | 1 | | London | 1 | | Evan | 1 |
| | persons | | | places | | 0 | "Heartstone" | | 1 | "Richmond" | | 2 | "Park" | | 3 | "London" |
| | globalScore | 1 | | windowScore | 1 | |
| 100.00% | Narrator intent-glossing | Target: ≤2% narration sentences with intent-glossing patterns | | analyzedSentences | 62 | | glossingSentenceCount | 1 | | matches | | 0 | "tune that seemed to come from everywhere and nowhere at once" |
| |
| 0.00% | "Not X but Y" pattern overuse | Target: ≤1 "not X but Y" per 1000 words | | totalMatches | 2 | | per1kWords | 2.151 | | wordCount | 930 | | matches | | 0 | "not at her, but at the Heartstone pendant glowing fiercely at her chest" | | 1 | "no longer a whisper but" |
| |
| 100.00% | Overuse of "that" (subordinate clause padding) | Target: ≤2% sentences with "that" clauses | | thatCount | 0 | | totalSentences | 96 | | matches | (empty) | |
| 100.00% | Paragraph length variance | Target: CV ≥0.5 for paragraph word counts | | totalParagraphs | 31 | | mean | 30 | | std | 23.52 | | cv | 0.784 | | sampleLengths | | 0 | 52 | | 1 | 66 | | 2 | 8 | | 3 | 51 | | 4 | 30 | | 5 | 23 | | 6 | 51 | | 7 | 5 | | 8 | 64 | | 9 | 89 | | 10 | 21 | | 11 | 8 | | 12 | 59 | | 13 | 14 | | 14 | 56 | | 15 | 3 | | 16 | 6 | | 17 | 20 | | 18 | 3 | | 19 | 14 | | 20 | 17 | | 21 | 4 | | 22 | 32 | | 23 | 29 | | 24 | 74 | | 25 | 19 | | 26 | 28 | | 27 | 38 | | 28 | 27 | | 29 | 18 | | 30 | 1 |
| |
| 97.80% | Passive voice overuse | Target: ≤2% passive sentences | | passiveCount | 2 | | totalSentences | 94 | | matches | | 0 | "being crumpled" | | 1 | "were rooted" |
| |
| 67.55% | Past progressive (was/were + -ing) overuse | Target: ≤2% past progressive verbs | | pastProgressiveCount | 3 | | totalVerbs | 151 | | matches | | 0 | "was conjuring" | | 1 | "was searing" | | 2 | "was paralyzing" |
| |
| 23.81% | Em-dash & semicolon overuse | Target: ≤2% sentences with em-dashes/semicolons | | emDashCount | 6 | | semicolonCount | 1 | | flaggedSentences | 4 | | totalSentences | 96 | | ratio | 0.042 | | matches | | 0 | "It wasn’t a gentle warmth anymore; it was a hot, insistent pressure, guiding her deeper into the grove." | | 1 | "But the questions—about the whispers in her flat, the figures she saw reflected in shop windows that vanished when she turned, the feeling of being watched from the empty flat across the street—had become too loud to ignore." | | 2 | "Followed by a low, guttural inhale, the sound of someone—or something—savouring a scent." | | 3 | "It raised one of those long, spindly arms, a finger—too many joints, too sharp—pointing not at her, but at the Heartstone pendant glowing fiercely at her chest." |
| |
| 88.93% | Purple prose (modifier overload) | Target: <4% adverbs, <2% -ly adverbs, no adj stacking | | wordCount | 939 | | adjectiveStacks | 1 | | stackExamples | | 0 | "faint, sickly inner light," |
| | adverbCount | 43 | | adverbRatio | 0.04579339723109691 | | lyAdverbCount | 12 | | lyAdverbRatio | 0.012779552715654952 | |
| 100.00% | Repeated phrase echo | Target: ≤20% sentences with echoes (window: 2) | | totalSentences | 96 | | echoCount | 0 | | echoWords | (empty) | |
| 100.00% | Sentence length variance | Target: CV ≥0.4 for sentence word counts | | totalSentences | 96 | | mean | 9.69 | | std | 7.04 | | cv | 0.726 | | sampleLengths | | 0 | 16 | | 1 | 18 | | 2 | 18 | | 3 | 20 | | 4 | 23 | | 5 | 17 | | 6 | 6 | | 7 | 8 | | 8 | 15 | | 9 | 13 | | 10 | 17 | | 11 | 1 | | 12 | 5 | | 13 | 4 | | 14 | 11 | | 15 | 15 | | 16 | 2 | | 17 | 4 | | 18 | 11 | | 19 | 6 | | 20 | 12 | | 21 | 4 | | 22 | 21 | | 23 | 4 | | 24 | 3 | | 25 | 7 | | 26 | 5 | | 27 | 11 | | 28 | 7 | | 29 | 1 | | 30 | 13 | | 31 | 12 | | 32 | 8 | | 33 | 1 | | 34 | 1 | | 35 | 3 | | 36 | 7 | | 37 | 8 | | 38 | 12 | | 39 | 8 | | 40 | 2 | | 41 | 8 | | 42 | 6 | | 43 | 7 | | 44 | 38 | | 45 | 6 | | 46 | 13 | | 47 | 2 | | 48 | 4 | | 49 | 4 |
| |
| 45.83% | Sentence opener variety | Target: ≥60% unique sentence openers | | consecutiveRepeats | 11 | | diversityRatio | 0.34375 | | totalSentences | 96 | | uniqueOpeners | 33 | |
| 100.00% | Adverb-first sentence starts | Target: ≥3% sentences starting with an adverb | | adverbCount | 6 | | totalSentences | 83 | | matches | | 0 | "Then came the first sound" | | 1 | "Just the oppressive, watchful silence." | | 2 | "Just the place." | | 3 | "Just the shadow of a" | | 4 | "Instead, her eyes scanned the" | | 5 | "Then, a voice." |
| | ratio | 0.072 | |
| 65.78% | Pronoun-first sentence starts | Target: ≤30% sentences starting with a pronoun | | pronounCount | 32 | | totalSentences | 83 | | matches | | 0 | "It wasn’t a gentle warmth" | | 1 | "She’d followed the pull, the" | | 2 | "It had led her past" | | 3 | "Her own breathing sounded obscenely" | | 4 | "She held her breath, straining" | | 5 | "She took another step." | | 6 | "Their scent was overwhelming now," | | 7 | "It came from directly behind" | | 8 | "She spun around, her trainers" | | 9 | "It’s designed to mess with" | | 10 | "She snapped her head to" | | 11 | "Her mind was conjuring things," | | 12 | "She forced herself to take" | | 13 | "She focused on her reason" | | 14 | "It was a stupid, reckless" | | 15 | "Her body went rigid, every" | | 16 | "She didn’t turn." | | 17 | "She didn’t run." | | 18 | "She inched towards it, her" | | 19 | "She could feel its attention" |
| | ratio | 0.386 | |
| 80.48% | Subject-first sentence starts | Target: ≤72% sentences starting with a subject | | subjectCount | 63 | | totalSentences | 83 | | matches | | 0 | "The Heartstone pendant pulsed against" | | 1 | "It wasn’t a gentle warmth" | | 2 | "The air, thick with the" | | 3 | "She’d followed the pull, the" | | 4 | "It had led her past" | | 5 | "The silence here was a" | | 6 | "Her own breathing sounded obscenely" | | 7 | "A dry rustle, like old" | | 8 | "Rory froze, her hand instinctively" | | 9 | "She held her breath, straining" | | 10 | "She took another step." | | 11 | "The wildflowers brushed against her" | | 12 | "Their scent was overwhelming now," | | 13 | "This one was different." | | 14 | "A soft, wet click, like" | | 15 | "It came from directly behind" | | 16 | "She spun around, her trainers" | | 17 | "The clearing was empty." | | 18 | "The standing stones stood sentinel" | | 19 | "Paranoia, she told herself." |
| | ratio | 0.759 | |
| 0.00% | Subordinate conjunction sentence starts | Target: ≥2% sentences starting with a subordinating conjunction | | subConjCount | 0 | | totalSentences | 83 | | matches | (empty) | | ratio | 0 | |
| 40.82% | Technical jargon density | Target: ≤6% sentences with technical-jargon patterns | | analyzedSentences | 42 | | technicalSentenceCount | 6 | | matches | | 0 | "She’d followed the pull, the strange compulsion that had started the moment she’d slipped the silver chain over her head." | | 1 | "But the questions—about the whispers in her flat, the figures she saw reflected in shop windows that vanished when she turned, the feeling of being watched from…" | | 2 | "A soft, melodic hum began, a dissonant little tune that seemed to come from everywhere and nowhere at once." | | 3 | "Tall, impossibly thin, limbs that seemed too long, jointed in all the wrong places." | | 4 | "It unfolded itself from behind one of the standing stones, moving with a stuttering, insectile grace that was utterly alien." | | 5 | "The wrongness of it pressed in on her, a suffocating pressure that made her head spin." |
| |
| 100.00% | Useless dialogue additions | Target: ≤5% dialogue tags with trailing filler fragments | | totalTags | 0 | | uselessAdditionCount | 0 | | matches | (empty) | |
| 100.00% | Dialogue tag variety (said vs. fancy) | Target: ≤10% fancy dialogue tags | |