| 100.00% | Adverbs in dialogue tags | Target: ≤10% dialogue tags with adverbs | | totalTags | 3 | | adverbTagCount | 0 | | adverbTags | (empty) | | dialogueSentences | 5 | | tagDensity | 0.6 | | leniency | 1 | | rawRatio | 0 | | effectiveRatio | 0 | |
| 72.89% | AI-ism adverb frequency | Target: <2% AI-ism adverbs (58 tracked) | | wordCount | 1291 | | totalAiIsmAdverbs | 7 | | found | | | highlights | | 0 | "very" | | 1 | "precisely" | | 2 | "softly" |
| |
| 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) | |
| 53.52% | AI-ism word frequency | Target: <2% AI-ism words (290 tracked) | | wordCount | 1291 | | totalAiIsms | 12 | | found | | | highlights | | 0 | "shimmered" | | 1 | "footsteps" | | 2 | "echo" | | 3 | "echoed" | | 4 | "synthetic" | | 5 | "perfect" | | 6 | "aligned" | | 7 | "pulse" | | 8 | "silence" | | 9 | "warmth" | | 10 | "weight" |
| |
| 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 | 90 | | matches | (empty) | |
| 100.00% | Filter word density | Target: ≤3% sentences with filter/hedge words | | filterCount | 1 | | hedgeCount | 1 | | narrationSentences | 90 | | filterMatches | | | hedgeMatches | | |
| 100.00% | Gibberish response detection | Target: ≤1% gibberish-like sentences (hard fail if a sentence exceeds 800 words) | | analyzedSentences | 92 | | gibberishSentences | 0 | | adjustedGibberishSentences | 0 | | longSentenceCount | 0 | | runOnParagraphCount | 0 | | giantParagraphCount | 0 | | wordSaladCount | 0 | | repetitionLoopCount | 0 | | controlTokenCount | 0 | | repeatedSegmentCount | 0 | | maxSentenceWordsSeen | 65 | | ratio | 0 | | matches | (empty) | |
| 100.00% | Markdown formatting overuse | Target: ≤5% words in markdown formatting | | markdownSpans | 5 | | markdownWords | 31 | | totalWords | 1303 | | ratio | 0.024 | | matches | | 0 | "don't be late, Rory, I mean it, don't you dare be late," | | 1 | "only" | | 2 | "if I turn around, I will see it, and then it will know that I can." | | 3 | "Rory." | | 4 | "Rory," |
| |
| 100.00% | Missing dialogue indicators (quotation marks) | Target: ≤10% speech attributions without quotation marks | | totalAttributions | 5 | | unquotedAttributions | 0 | | matches | (empty) | |
| 83.33% | Name drop frequency | Target: ≤1.0 per-name mentions per 100 words | | totalMentions | 34 | | wordCount | 1292 | | uniqueNames | 13 | | maxNameDensity | 1.08 | | worstName | "Rory" | | maxWindowNameDensity | 2.5 | | worstWindowName | "Rory" | | discoveredNames | | Sheen | 1 | | Road | 1 | | Rory | 14 | | Silas | 1 | | Park | 1 | | London | 1 | | Eva | 8 | | August | 1 | | February | 1 | | September | 1 | | Isolde | 2 | | Christmas | 1 | | Cardiff | 1 |
| | persons | | 0 | "Rory" | | 1 | "Silas" | | 2 | "Eva" | | 3 | "Isolde" |
| | places | | 0 | "Sheen" | | 1 | "Road" | | 2 | "Park" | | 3 | "London" | | 4 | "August" | | 5 | "Cardiff" |
| | globalScore | 0.958 | | windowScore | 0.833 | |
| 100.00% | Narrator intent-glossing | Target: ≤2% narration sentences with intent-glossing patterns | | analyzedSentences | 53 | | glossingSentenceCount | 1 | | matches | | 0 | "something like crickets, some small chitteri" |
| |
| 100.00% | "Not X but Y" pattern overuse | Target: ≤1 "not X but Y" per 1000 words | | totalMatches | 0 | | per1kWords | 0 | | wordCount | 1303 | | matches | (empty) | |
| 94.20% | Overuse of "that" (subordinate clause padding) | Target: ≤2% sentences with "that" clauses | | thatCount | 2 | | totalSentences | 92 | | matches | | 0 | "remembered that breathing" | | 1 | "know that I" |
| |
| 100.00% | Paragraph length variance | Target: CV ≥0.5 for paragraph word counts | | totalParagraphs | 38 | | mean | 34.29 | | std | 28.8 | | cv | 0.84 | | sampleLengths | | 0 | 23 | | 1 | 99 | | 2 | 51 | | 3 | 36 | | 4 | 15 | | 5 | 99 | | 6 | 13 | | 7 | 7 | | 8 | 14 | | 9 | 3 | | 10 | 104 | | 11 | 31 | | 12 | 70 | | 13 | 14 | | 14 | 1 | | 15 | 31 | | 16 | 55 | | 17 | 48 | | 18 | 19 | | 19 | 3 | | 20 | 47 | | 21 | 23 | | 22 | 2 | | 23 | 61 | | 24 | 13 | | 25 | 66 | | 26 | 7 | | 27 | 66 | | 28 | 5 | | 29 | 35 | | 30 | 33 | | 31 | 66 | | 32 | 14 | | 33 | 9 | | 34 | 1 | | 35 | 64 | | 36 | 25 | | 37 | 30 |
| |
| 100.00% | Passive voice overuse | Target: ≤2% passive sentences | | passiveCount | 1 | | totalSentences | 90 | | matches | | |
| 49.85% | Past progressive (was/were + -ing) overuse | Target: ≤2% past progressive verbs | | pastProgressiveCount | 5 | | totalVerbs | 222 | | matches | | 0 | "was doing" | | 1 | "was hanging" | | 2 | "were still moving" | | 3 | "was running" | | 4 | "was going" |
| |
| 0.00% | Em-dash & semicolon overuse | Target: ≤2% sentences with em-dashes/semicolons | | emDashCount | 12 | | semicolonCount | 1 | | flaggedSentences | 9 | | totalSentences | 92 | | ratio | 0.098 | | matches | | 0 | "They were oak, not stone, whatever anyone called them — nine trunks stripped of bark and set upright in a rough oval, silvered with age, each one taller than a man and worn smooth in places where hands had touched them for centuries." | | 1 | "Overhead there were stars, too many of them, arranged in patterns she'd stopped trying to recognise, and beneath her boots the wildflowers of the grove opened in their impossible profusion — foxglove and bluebell and cornflower and dog rose, spring and summer and autumn all crowding each other in the same square foot of earth, glowing faintly with their own light the way certain fungi do." | | 2 | "There were always crickets — or something like crickets, some small chittering business in the grass — and always the high thin note of wind moving through the canopy, and always, faintly, water somewhere she'd never been able to find." | | 3 | "It should have echoed; the tree line was close enough." | | 4 | "But the flowers to her left — a dense stand of foxglove, chest-high — were still moving, swaying back into stillness, as though something had passed through them a second ago and she had turned a second too slow." | | 5 | "Three more breaths — slow, deep, patient, the breathing of something at rest — and then it stopped too, all at once, as though whatever it belonged to had only just remembered that breathing was something it needed to pretend to do." | | 6 | "She caught it only as an absence of flowers, a channel opening and closing in the blooms, and it was going ahead of her — cutting between her and the standing stones." | | 7 | "The voice came from her left, and it was Eva's, and it was perfect — the Cardiff vowels, the little upward hook at the end of her name — except that it came from her left and the flowers on her left had not moved at all, and Eva had never in her life said Rory's name without laughing at some part of it." | | 8 | "*Rory,* the voice said again, closer now, and behind her the thing that did not need to breathe began, very softly, to breathe again — in time with her own." |
| |
| 85.39% | Purple prose (modifier overload) | Target: <4% adverbs, <2% -ly adverbs, no adj stacking | | wordCount | 1284 | | adjectiveStacks | 1 | | stackExamples | | | adverbCount | 64 | | adverbRatio | 0.04984423676012461 | | lyAdverbCount | 11 | | lyAdverbRatio | 0.008566978193146417 | |
| 100.00% | Repeated phrase echo | Target: ≤20% sentences with echoes (window: 2) | | totalSentences | 92 | | echoCount | 0 | | echoWords | (empty) | |
| 100.00% | Sentence length variance | Target: CV ≥0.4 for sentence word counts | | totalSentences | 92 | | mean | 14.16 | | std | 14.38 | | cv | 1.016 | | sampleLengths | | 0 | 23 | | 1 | 15 | | 2 | 8 | | 3 | 39 | | 4 | 9 | | 5 | 28 | | 6 | 7 | | 7 | 16 | | 8 | 4 | | 9 | 24 | | 10 | 4 | | 11 | 32 | | 12 | 15 | | 13 | 43 | | 14 | 6 | | 15 | 10 | | 16 | 40 | | 17 | 5 | | 18 | 8 | | 19 | 4 | | 20 | 2 | | 21 | 1 | | 22 | 13 | | 23 | 1 | | 24 | 3 | | 25 | 22 | | 26 | 3 | | 27 | 4 | | 28 | 66 | | 29 | 9 | | 30 | 3 | | 31 | 5 | | 32 | 20 | | 33 | 3 | | 34 | 5 | | 35 | 40 | | 36 | 12 | | 37 | 8 | | 38 | 5 | | 39 | 4 | | 40 | 10 | | 41 | 1 | | 42 | 9 | | 43 | 2 | | 44 | 10 | | 45 | 10 | | 46 | 43 | | 47 | 4 | | 48 | 8 | | 49 | 4 |
| |
| 63.77% | Sentence opener variety | Target: ≥60% unique sentence openers | | consecutiveRepeats | 8 | | diversityRatio | 0.43478260869565216 | | totalSentences | 92 | | uniqueOpeners | 40 | |
| 84.39% | Adverb-first sentence starts | Target: ≥3% sentences starting with an adverb | | adverbCount | 2 | | totalSentences | 79 | | matches | | 0 | "Of course it was." | | 1 | "Somewhere behind her, at the" |
| | ratio | 0.025 | |
| 98.48% | Pronoun-first sentence starts | Target: ≤30% sentences starting with a pronoun | | pronounCount | 24 | | totalSentences | 79 | | matches | | 0 | "She walked with her phone" | | 1 | "They were oak, not stone," | | 2 | "She'd seen them four times" | | 3 | "She had never once seen" | | 4 | "She stopped at the boundary." | | 5 | "she said, out loud, because" | | 6 | "She stepped through." | | 7 | "It was beautiful." | | 8 | "It had always been beautiful." | | 9 | "It was silent." | | 10 | "Her own footsteps were the" | | 11 | "It should have echoed; the" | | 12 | "She felt the absence of" | | 13 | "She made herself walk to" | | 14 | "She turned around." | | 15 | "She catalogued facts, because cataloguing" | | 16 | "She wound the scarf around" | | 17 | "She had crossed twenty metres" | | 18 | "It was very quiet and" | | 19 | "She knew it wasn't hers" |
| | ratio | 0.304 | |
| 67.59% | Subject-first sentence starts | Target: ≤72% sentences starting with a subject | | subjectCount | 62 | | totalSentences | 79 | | matches | | 0 | "The gate on Sheen Road" | | 1 | "Richmond Park at half past" | | 2 | "All the colour had run" | | 3 | "The grass held the grey" | | 4 | "She walked with her phone" | | 5 | "Torchlight would carry for a" | | 6 | "The pendant lay cool against" | | 7 | "That was the thing she" | | 8 | "Eva had said midnight." | | 9 | "Eva had said the grove," | | 10 | "The standing stones came up" | | 11 | "They were oak, not stone," | | 12 | "She'd seen them four times" | | 13 | "She had never once seen" | | 14 | "Tonight the gaps between them" | | 15 | "She stopped at the boundary." | | 16 | "The wood was warm." | | 17 | "she said, out loud, because" | | 18 | "She stepped through." | | 19 | "The change came the way" |
| | ratio | 0.785 | |
| 63.29% | Subordinate conjunction sentence starts | Target: ≥2% sentences starting with a subordinating conjunction | | subConjCount | 1 | | totalSentences | 79 | | matches | | 0 | "Now there was nothing." |
| | ratio | 0.013 | |
| 74.83% | Technical jargon density | Target: ≤6% sentences with technical-jargon patterns | | analyzedSentences | 42 | | technicalSentenceCount | 4 | | matches | | 0 | "The grass held the grey of old dishwater and the oaks stood in their scattered congregations like people who had stopped mid-argument, and above it all the sky …" | | 1 | "But the flowers to her left — a dense stand of foxglove, chest-high — were still moving, swaying back into stillness, as though something had passed through the…" | | 2 | "Three more breaths — slow, deep, patient, the breathing of something at rest — and then it stopped too, all at once, as though whatever it belonged to had only …" | | 3 | "Moving with the unhurried confidence of something that has already decided how the evening ends." |
| |
| 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 | 3 | | fancyCount | 0 | | fancyTags | (empty) | | dialogueSentences | 5 | | tagDensity | 0.6 | | leniency | 1 | | rawRatio | 0 | | effectiveRatio | 0 | |