| 33.33% | Adverbs in dialogue tags | Target: ≤10% dialogue tags with adverbs | | totalTags | 6 | | adverbTagCount | 1 | | adverbTags | | 0 | "she called again [again]" |
| | dialogueSentences | 12 | | tagDensity | 0.5 | | leniency | 1 | | rawRatio | 0.167 | | effectiveRatio | 0.167 | |
| 100.00% | AI-ism adverb frequency | Target: <2% AI-ism adverbs (58 tracked) | | wordCount | 1222 | | 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) | |
| 63.18% | AI-ism word frequency | Target: <2% AI-ism words (290 tracked) | | wordCount | 1222 | | totalAiIsms | 9 | | found | | | highlights | | 0 | "footsteps" | | 1 | "footfall" | | 2 | "pulse" | | 3 | "throb" | | 4 | "echo" | | 5 | "familiar" | | 6 | "warmth" | | 7 | "rhythmic" |
| |
| 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 | 83 | | matches | (empty) | |
| 100.00% | Filter word density | Target: ≤3% sentences with filter/hedge words | | filterCount | 0 | | hedgeCount | 0 | | narrationSentences | 83 | | filterMatches | (empty) | | hedgeMatches | (empty) | |
| 100.00% | Gibberish response detection | Target: ≤1% gibberish-like sentences (hard fail if a sentence exceeds 800 words) | | analyzedSentences | 88 | | gibberishSentences | 0 | | adjustedGibberishSentences | 0 | | longSentenceCount | 0 | | runOnParagraphCount | 0 | | giantParagraphCount | 0 | | wordSaladCount | 0 | | repetitionLoopCount | 0 | | controlTokenCount | 0 | | repeatedSegmentCount | 0 | | maxSentenceWordsSeen | 58 | | ratio | 0 | | matches | (empty) | |
| 100.00% | Markdown formatting overuse | Target: ≤5% words in markdown formatting | | markdownSpans | 0 | | markdownWords | 0 | | totalWords | 1232 | | ratio | 0 | | matches | (empty) | |
| 100.00% | Missing dialogue indicators (quotation marks) | Target: ≤10% speech attributions without quotation marks | | totalAttributions | 7 | | unquotedAttributions | 0 | | matches | (empty) | |
| 66.67% | Name drop frequency | Target: ≤1.0 per-name mentions per 100 words | | totalMentions | 25 | | wordCount | 1193 | | uniqueNames | 11 | | maxNameDensity | 0.67 | | worstName | "Eva" | | maxWindowNameDensity | 3 | | worstWindowName | "Eva" | | discoveredNames | | Priory | 2 | | Lane | 2 | | Richmond | 1 | | Park | 1 | | Kingston | 1 | | November | 2 | | Cardiff | 1 | | Welsh | 1 | | Rory | 5 | | Eva | 8 | | Brixton | 1 |
| | persons | | | places | | 0 | "Priory" | | 1 | "Lane" | | 2 | "Richmond" | | 3 | "Park" | | 4 | "Kingston" | | 5 | "Cardiff" | | 6 | "Brixton" |
| | globalScore | 1 | | windowScore | 0.667 | |
| 100.00% | Narrator intent-glossing | Target: ≤2% narration sentences with intent-glossing patterns | | analyzedSentences | 59 | | glossingSentenceCount | 0 | | matches | (empty) | |
| 100.00% | "Not X but Y" pattern overuse | Target: ≤1 "not X but Y" per 1000 words | | totalMatches | 1 | | per1kWords | 0.812 | | wordCount | 1232 | | matches | | 0 | "not a tug, nothing so crude, but a direction, the way a compass needle insists on north" |
| |
| 100.00% | Overuse of "that" (subordinate clause padding) | Target: ≤2% sentences with "that" clauses | | thatCount | 1 | | totalSentences | 88 | | matches | | |
| 100.00% | Paragraph length variance | Target: CV ≥0.5 for paragraph word counts | | totalParagraphs | 31 | | mean | 39.74 | | std | 31.63 | | cv | 0.796 | | sampleLengths | | 0 | 56 | | 1 | 89 | | 2 | 12 | | 3 | 61 | | 4 | 95 | | 5 | 31 | | 6 | 85 | | 7 | 50 | | 8 | 4 | | 9 | 44 | | 10 | 1 | | 11 | 48 | | 12 | 8 | | 13 | 31 | | 14 | 100 | | 15 | 1 | | 16 | 60 | | 17 | 12 | | 18 | 15 | | 19 | 56 | | 20 | 9 | | 21 | 4 | | 22 | 73 | | 23 | 17 | | 24 | 46 | | 25 | 11 | | 26 | 103 | | 27 | 4 | | 28 | 51 | | 29 | 39 | | 30 | 16 |
| |
| 100.00% | Passive voice overuse | Target: ≤2% passive sentences | | passiveCount | 0 | | totalSentences | 83 | | matches | (empty) | |
| 100.00% | Past progressive (was/were + -ing) overuse | Target: ≤2% past progressive verbs | | pastProgressiveCount | 2 | | totalVerbs | 165 | | matches | | 0 | "was going" | | 1 | "wasn't watching " |
| |
| 0.00% | Em-dash & semicolon overuse | Target: ≤2% sentences with em-dashes/semicolons | | emDashCount | 10 | | semicolonCount | 1 | | flaggedSentences | 10 | | totalSentences | 88 | | ratio | 0.114 | | matches | | 0 | "Only the heat, and the pull of it — not a tug, nothing so crude, but a direction, the way a compass needle insists on north." | | 1 | "None of them moved at all, and then, as one, they looked at her — a slow, collective rotation of heads — and then past her again, to the wood, as if she were the least interesting thing standing in that field." | | 2 | "Seven standing stones ringed it — old ones, oak-dark and mossed, taller than her by a head." | | 3 | "She stood with her pulse in her throat and the pendant ticking warm against her skin — not warm now, pulsing, a slow throb of heat that had nothing to do with her own heart, because hers was going twice as fast." | | 4 | "An echo repeats; this considered, then answered." | | 5 | "She backed toward the gap she'd entered by, and the mist came up while she wasn't watching — ankle-deep, then shin-deep, moving across the clearing floor against the wind, flowing inward, toward the centre, the way water finds a drain." | | 6 | "Eva's exact voice, warm and Welsh and familiar from a thousand kitchen-table evenings, coming from the left-hand stones, and Rory's whole body leaned toward it before her mind caught up — because Eva called her Rory." | | 7 | "Not toward the voices — toward the gap, the fallen birch she remembered with its white wound of split wood, and she passed it, lungs burning, and thirty strides later she passed it again, same tree, same pale split, lying on the same side of the path it could not possibly lie on twice." | | 8 | "Beside it, a second shadow unfurled — cast by nothing, attached to nothing, tall and patient and wrong in its proportions, too much height for the light to explain." | | 9 | "She went through the gap at a dead sprint, and the night hit her like water — real cold, November cold, and with it sound, all of it arriving at once as if someone had taken their hands off her ears: a plane grinding overhead, the far-off wash of the A3, a fox screaming somewhere down the slope." |
| |
| 100.00% | Purple prose (modifier overload) | Target: <4% adverbs, <2% -ly adverbs, no adj stacking | | wordCount | 1197 | | adjectiveStacks | 0 | | stackExamples | (empty) | | adverbCount | 43 | | adverbRatio | 0.03592314118629908 | | lyAdverbCount | 6 | | lyAdverbRatio | 0.005012531328320802 | |
| 100.00% | Repeated phrase echo | Target: ≤20% sentences with echoes (window: 2) | | totalSentences | 88 | | echoCount | 0 | | echoWords | (empty) | |
| 100.00% | Sentence length variance | Target: CV ≥0.4 for sentence word counts | | totalSentences | 88 | | mean | 14 | | std | 13.59 | | cv | 0.971 | | sampleLengths | | 0 | 8 | | 1 | 48 | | 2 | 9 | | 3 | 28 | | 4 | 2 | | 5 | 26 | | 6 | 24 | | 7 | 5 | | 8 | 7 | | 9 | 7 | | 10 | 29 | | 11 | 14 | | 12 | 11 | | 13 | 9 | | 14 | 18 | | 15 | 3 | | 16 | 12 | | 17 | 7 | | 18 | 4 | | 19 | 42 | | 20 | 31 | | 21 | 31 | | 22 | 7 | | 23 | 11 | | 24 | 1 | | 25 | 35 | | 26 | 4 | | 27 | 17 | | 28 | 21 | | 29 | 7 | | 30 | 1 | | 31 | 4 | | 32 | 14 | | 33 | 4 | | 34 | 1 | | 35 | 11 | | 36 | 14 | | 37 | 1 | | 38 | 6 | | 39 | 42 | | 40 | 8 | | 41 | 14 | | 42 | 7 | | 43 | 3 | | 44 | 7 | | 45 | 40 | | 46 | 18 | | 47 | 5 | | 48 | 1 | | 49 | 1 |
| |
| 78.79% | Sentence opener variety | Target: ≥60% unique sentence openers | | consecutiveRepeats | 9 | | diversityRatio | 0.5340909090909091 | | totalSentences | 88 | | uniqueOpeners | 47 | |
| 93.90% | Adverb-first sentence starts | Target: ≥3% sentences starting with an adverb | | adverbCount | 2 | | totalSentences | 71 | | matches | | 0 | "Only the heat, and the" | | 1 | "Instead she fixed on the" |
| | ratio | 0.028 | |
| 79.15% | Pronoun-first sentence starts | Target: ≤30% sentences starting with a pronoun | | pronounCount | 25 | | totalSentences | 71 | | matches | | 0 | "She'd followed it off the" | | 1 | "she told the dark" | | 2 | "She stood at the edge" | | 3 | "She watched them for a" | | 4 | "She went up the rise" | | 5 | "Her torch beam caught colour" | | 6 | "She'd read about this place" | | 7 | "She counted them twice out" | | 8 | "Her phone said 23:47." | | 9 | "She walked the perimeter, and" | | 10 | "She stopped dead in the" | | 11 | "She stood with her pulse" | | 12 | "she called again, louder, angry" | | 13 | "She backed toward the gap" | | 14 | "She snapped the torch round." | | 15 | "She let the beam drift" | | 16 | "Her phone said 23:47." | | 17 | "Her shadow stretched long across" | | 18 | "She did not turn around." | | 19 | "She went through the gap" |
| | ratio | 0.352 | |
| 100.00% | Subject-first sentence starts | Target: ≤72% sentences starting with a subject | | subjectCount | 50 | | totalSentences | 71 | | matches | | 0 | "The fence rail had been" | | 1 | "Rory had found the gap" | | 2 | "Tonight, on the A307, it" | | 3 | "She'd followed it off the" | | 4 | "she told the dark" | | 5 | "Richmond Park at night should" | | 6 | "Heathrow traffic went over often" | | 7 | "She stood at the edge" | | 8 | "The absence had texture, the" | | 9 | "She watched them for a" | | 10 | "None of them grazed." | | 11 | "None of them moved at" | | 12 | "She went up the rise" | | 13 | "The wood took her in" | | 14 | "Air sat warmer here, still" | | 15 | "Her torch beam caught colour" | | 16 | "Celandine and campion and something" | | 17 | "The clearing opened ahead." | | 18 | "She'd read about this place" | | 19 | "She counted them twice out" |
| | ratio | 0.704 | |
| 0.00% | Subordinate conjunction sentence starts | Target: ≥2% sentences starting with a subordinating conjunction | | subConjCount | 0 | | totalSentences | 71 | | matches | (empty) | | ratio | 0 | |
| 23.81% | Technical jargon density | Target: ≤6% sentences with technical-jargon patterns | | analyzedSentences | 36 | | technicalSentenceCount | 6 | | matches | | 0 | "None of them moved at all, and then, as one, they looked at her — a slow, collective rotation of heads — and then past her again, to the wood, as if she were th…" | | 1 | "Celandine and campion and something white and star-shaped she had no name for, open and blooming in the middle of November, threaded through the dead bracken as…" | | 2 | "She stood with her pulse in her throat and the pendant ticking warm against her skin — not warm now, pulsing, a slow throb of heat that had nothing to do with h…" | | 3 | "She went through the gap at a dead sprint, and the night hit her like water — real cold, November cold, and with it sound, all of it arriving at once as if some…" | | 4 | "She went through the bent fence rail at a scramble that took skin off her palms and left her on the tarmac of Priory Lane under an orange streetlight, hands on …" | | 5 | "Beyond it, the wood stood black and ordinary, trees and only trees, and the deer had gone from the hollow, and the traffic noise went on as if nothing had ever …" |
| |
| 100.00% | Useless dialogue additions | Target: ≤5% dialogue tags with trailing filler fragments | | totalTags | 6 | | uselessAdditionCount | 0 | | matches | (empty) | |
| 66.67% | Dialogue tag variety (said vs. fancy) | Target: ≤10% fancy dialogue tags | | totalTags | 4 | | fancyCount | 1 | | fancyTags | | | dialogueSentences | 12 | | tagDensity | 0.333 | | leniency | 0.667 | | rawRatio | 0.25 | | effectiveRatio | 0.167 | |