| 100.00% | Adverbs in dialogue tags | Target: ≤10% dialogue tags with adverbs | | totalTags | 13 | | adverbTagCount | 1 | | adverbTags | | 0 | "She turned again [again]" |
| | dialogueSentences | 32 | | tagDensity | 0.406 | | leniency | 0.813 | | rawRatio | 0.077 | | effectiveRatio | 0.063 | |
| 78.42% | AI-ism adverb frequency | Target: <2% AI-ism adverbs (58 tracked) | | wordCount | 1390 | | totalAiIsmAdverbs | 6 | | found | | | highlights | | 0 | "very" | | 1 | "perfectly" | | 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) | |
| 82.01% | AI-ism word frequency | Target: <2% AI-ism words (290 tracked) | | wordCount | 1390 | | totalAiIsms | 5 | | found | | | highlights | | 0 | "stomach" | | 1 | "flicked" | | 2 | "weight" | | 3 | "comforting" | | 4 | "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 | 1 | | narrationSentences | 85 | | matches | | |
| 100.00% | Filter word density | Target: ≤3% sentences with filter/hedge words | | filterCount | 0 | | hedgeCount | 0 | | narrationSentences | 85 | | filterMatches | (empty) | | hedgeMatches | (empty) | |
| 100.00% | Gibberish response detection | Target: ≤1% gibberish-like sentences (hard fail if a sentence exceeds 800 words) | | analyzedSentences | 103 | | gibberishSentences | 0 | | adjustedGibberishSentences | 0 | | longSentenceCount | 0 | | runOnParagraphCount | 0 | | giantParagraphCount | 0 | | wordSaladCount | 0 | | repetitionLoopCount | 0 | | controlTokenCount | 0 | | repeatedSegmentCount | 0 | | maxSentenceWordsSeen | 61 | | ratio | 0 | | matches | (empty) | |
| 100.00% | Markdown formatting overuse | Target: ≤5% words in markdown formatting | | markdownSpans | 5 | | markdownWords | 9 | | totalWords | 1404 | | ratio | 0.006 | | matches | | 0 | "I want to go in." | | 1 | "move" | | 2 | "thin" | | 3 | "something" | | 4 | "in" |
| |
| 100.00% | Missing dialogue indicators (quotation marks) | Target: ≤10% speech attributions without quotation marks | | totalAttributions | 13 | | unquotedAttributions | 0 | | matches | (empty) | |
| 99.11% | Name drop frequency | Target: ≤1.0 per-name mentions per 100 words | | totalMentions | 36 | | wordCount | 1179 | | uniqueNames | 11 | | maxNameDensity | 1.02 | | worstName | "Rory" | | maxWindowNameDensity | 1.5 | | worstWindowName | "Eva" | | discoveredNames | | Richmond | 1 | | Park | 1 | | Eva | 8 | | December | 2 | | Fainter | 1 | | Nyx | 7 | | Rory | 12 | | Heartstone | 1 | | Golden | 1 | | Empress | 1 | | Bank | 1 |
| | persons | | | places | | 0 | "Richmond" | | 1 | "Park" | | 2 | "Bank" |
| | globalScore | 0.991 | | windowScore | 1 | |
| 51.96% | Narrator intent-glossing | Target: ≤2% narration sentences with intent-glossing patterns | | analyzedSentences | 51 | | glossingSentenceCount | 2 | | matches | | 0 | "something like sand, threading between the o" | | 1 | "not quite laughter" |
| |
| 100.00% | "Not X but Y" pattern overuse | Target: ≤1 "not X but Y" per 1000 words | | totalMatches | 1 | | per1kWords | 0.712 | | wordCount | 1404 | | matches | | 0 | "not being funny, but the deer have all turned around" |
| |
| 100.00% | Overuse of "that" (subordinate clause padding) | Target: ≤2% sentences with "that" clauses | | thatCount | 0 | | totalSentences | 103 | | matches | (empty) | |
| 100.00% | Paragraph length variance | Target: CV ≥0.5 for paragraph word counts | | totalParagraphs | 42 | | mean | 33.43 | | std | 34.71 | | cv | 1.038 | | sampleLengths | | 0 | 40 | | 1 | 29 | | 2 | 68 | | 3 | 2 | | 4 | 59 | | 5 | 13 | | 6 | 62 | | 7 | 10 | | 8 | 43 | | 9 | 3 | | 10 | 84 | | 11 | 16 | | 12 | 2 | | 13 | 2 | | 14 | 111 | | 15 | 6 | | 16 | 6 | | 17 | 22 | | 18 | 93 | | 19 | 6 | | 20 | 88 | | 21 | 3 | | 22 | 10 | | 23 | 25 | | 24 | 3 | | 25 | 92 | | 26 | 6 | | 27 | 87 | | 28 | 5 | | 29 | 24 | | 30 | 3 | | 31 | 108 | | 32 | 25 | | 33 | 5 | | 34 | 58 | | 35 | 4 | | 36 | 2 | | 37 | 96 | | 38 | 9 | | 39 | 30 | | 40 | 29 | | 41 | 15 |
| |
| 97.01% | Passive voice overuse | Target: ≤2% passive sentences | | passiveCount | 2 | | totalSentences | 85 | | matches | | 0 | "were supposed" | | 1 | "been parted" |
| |
| 100.00% | Past progressive (was/were + -ing) overuse | Target: ≤2% past progressive verbs | | pastProgressiveCount | 1 | | totalVerbs | 185 | | matches | | |
| 0.00% | Em-dash & semicolon overuse | Target: ≤2% sentences with em-dashes/semicolons | | emDashCount | 13 | | semicolonCount | 1 | | flaggedSentences | 12 | | totalSentences | 103 | | ratio | 0.117 | | matches | | 0 | "The standing stones didn't look like much from the footpath — three lumps of weathered oak, black with age, half swallowed by bracken." | | 1 | "Rory looked back at the oaks and let go of something she couldn't name — the same small, stubborn muscle she used to keep her voice level in front of her father, or to keep the flat above Silas' bar feeling like a home instead of a place she was hiding." | | 2 | "The bracken simply lay differently, and where there had been a slope of dead winter grass there was now a path — pale sand, or something like sand, threading between the oaks and downhill into green." | | 3 | "Behind her, the park was still there — she could see it through the stones, grey and frost-bitten, the deer, a jogger stopped dead on the path with his hands on his knees — but it looked painted." | | 4 | "The grass here came up to her knees and it was full of flowers, and that was the first thing that made her stomach turn over strangely — not fear, not exactly." | | 5 | "Honey and green sap and cut grass and, under it, something colder — wet stone, deep water." | | 6 | "When she found them, the shape of Nyx was barely a shape at all — a smear of dusk against the willow trunk, a suggestion of shoulders, and two points of violet burning steadily in the middle of it like coals in a grate." | | 7 | "The path took them under trees that shouldn't have grown together — a black yew wound around a silver birch, an oak that had put out apple blossom on one branch and hard green fruit on the next." | | 8 | "But there was a third track, and it was not a track — it was an absence, a narrow line where the grass at the path's edge had been parted and had not sprung back, running ahead of them and out of sight around the curve." | | 9 | "It hummed under the bones of her sternum when she walked past the alley behind the Golden Empress; it warmed to blood-heat in the stairwell at Bank station, and had come close to burning her the night she'd found the tear in the air behind Silas' cellar and understood, finally, that her life had changed shape without asking her permission." | | 10 | "The trees stepped back all at once, the way a crowd does, and Rory came out into a clearing perhaps thirty metres across, ringed with more of the oak stones — nine of them, upright, silver-grey, each carved with lines that her eye kept trying to read as letters and kept sliding off." | | 11 | "Under the hawthorn, in the drifting white, the grass moved — parted, and did not spring back — and a voice like a bell heard through deep water said:" |
| |
| 90.36% | Purple prose (modifier overload) | Target: <4% adverbs, <2% -ly adverbs, no adj stacking | | wordCount | 317 | | adjectiveStacks | 1 | | stackExamples | | 0 | "same small, stubborn muscle" |
| | adverbCount | 14 | | adverbRatio | 0.04416403785488959 | | lyAdverbCount | 2 | | lyAdverbRatio | 0.006309148264984227 | |
| 100.00% | Repeated phrase echo | Target: ≤20% sentences with echoes (window: 2) | | totalSentences | 103 | | echoCount | 0 | | echoWords | (empty) | |
| 100.00% | Sentence length variance | Target: CV ≥0.4 for sentence word counts | | totalSentences | 103 | | mean | 13.63 | | std | 13.79 | | cv | 1.011 | | sampleLengths | | 0 | 23 | | 1 | 17 | | 2 | 13 | | 3 | 14 | | 4 | 2 | | 5 | 12 | | 6 | 32 | | 7 | 8 | | 8 | 16 | | 9 | 2 | | 10 | 17 | | 11 | 30 | | 12 | 12 | | 13 | 2 | | 14 | 7 | | 15 | 2 | | 16 | 2 | | 17 | 51 | | 18 | 4 | | 19 | 7 | | 20 | 10 | | 21 | 3 | | 22 | 4 | | 23 | 36 | | 24 | 3 | | 25 | 11 | | 26 | 24 | | 27 | 38 | | 28 | 1 | | 29 | 10 | | 30 | 8 | | 31 | 8 | | 32 | 2 | | 33 | 2 | | 34 | 2 | | 35 | 32 | | 36 | 3 | | 37 | 6 | | 38 | 47 | | 39 | 4 | | 40 | 17 | | 41 | 6 | | 42 | 3 | | 43 | 3 | | 44 | 20 | | 45 | 2 | | 46 | 7 | | 47 | 24 | | 48 | 6 | | 49 | 4 |
| |
| 75.08% | Sentence opener variety | Target: ≥60% unique sentence openers | | consecutiveRepeats | 6 | | diversityRatio | 0.4854368932038835 | | totalSentences | 103 | | uniqueOpeners | 50 | |
| 0.00% | Adverb-first sentence starts | Target: ≥3% sentences starting with an adverb | | adverbCount | 0 | | totalSentences | 73 | | matches | (empty) | | ratio | 0 | |
| 100.00% | Pronoun-first sentence starts | Target: ≤30% sentences starting with a pronoun | | pronounCount | 20 | | totalSentences | 73 | | matches | | 0 | "Their voice arrived the way" | | 1 | "Her breath hung in front" | | 2 | "She had her scarf pulled" | | 3 | "She let it slacken." | | 4 | "She thought: *I want to" | | 5 | "It wasn't dramatic." | | 6 | "It was December." | | 7 | "It had been December for" | | 8 | "She turned in a slow" | | 9 | "Her own boots stood in" | | 10 | "She turned again, faster" | | 11 | "they said, and for the" | | 12 | "They went down." | | 13 | "She made herself stop." | | 14 | "Her hand had gone up" | | 15 | "It was cold." | | 16 | "She pulled the chain out" | | 17 | "It hummed under the bones" | | 18 | "It always had *something* to" | | 19 | "It had said 7:04 when" |
| | ratio | 0.274 | |
| 35.34% | Subject-first sentence starts | Target: ≤72% sentences starting with a subject | | subjectCount | 62 | | totalSentences | 73 | | matches | | 0 | "The standing stones didn't look" | | 1 | "Rory had walked past them" | | 2 | "Nyx said, from somewhere near" | | 3 | "Their voice arrived the way" | | 4 | "Rory shoved her hands deeper" | | 5 | "Richmond Park at seven in" | | 6 | "Her breath hung in front" | | 7 | "Eva made a small noise" | | 8 | "She had her scarf pulled" | | 9 | "Every one of them, facing" | | 10 | "Rory looked back at the" | | 11 | "She let it slacken." | | 12 | "She thought: *I want to" | | 13 | "The gap between the stones" | | 14 | "It wasn't dramatic." | | 15 | "Nothing tore, nothing flashed." | | 16 | "The bracken simply lay differently," | | 17 | "The cold went out of" | | 18 | "Rory felt it move over" | | 19 | "A backdrop someone had left" |
| | ratio | 0.849 | |
| 68.49% | Subordinate conjunction sentence starts | Target: ≥2% sentences starting with a subordinating conjunction | | subConjCount | 1 | | totalSentences | 73 | | matches | | | ratio | 0.014 | |
| 77.92% | Technical jargon density | Target: ≤6% sentences with technical-jargon patterns | | analyzedSentences | 33 | | technicalSentenceCount | 3 | | matches | | 0 | "The path took them under trees that shouldn't have grown together — a black yew wound around a silver birch, an oak that had put out apple blossom on one branch…" | | 1 | "Water ran somewhere close by, and the sound of it was almost right, almost the ordinary chatter of a stream over stones, except that every so often the rhythm o…" | | 2 | "In the centre stood a single hawthorn in full white flower, and the flowers were falling and falling and never thinning, drifting in a slow spiral that had noth…" |
| |
| 86.54% | Useless dialogue additions | Target: ≤5% dialogue tags with trailing filler fragments | | totalTags | 13 | | uselessAdditionCount | 1 | | matches | | 0 | "She turned again, faster" |
| |
| 100.00% | Dialogue tag variety (said vs. fancy) | Target: ≤10% fancy dialogue tags | | totalTags | 8 | | fancyCount | 1 | | fancyTags | | | dialogueSentences | 32 | | tagDensity | 0.25 | | leniency | 0.5 | | rawRatio | 0.125 | | effectiveRatio | 0.063 | |