| 0.00% | Adverbs in dialogue tags | Target: ≤10% dialogue tags with adverbs | | totalTags | 3 | | adverbTagCount | 2 | | adverbTags | | 0 | "she said aloud [aloud]" | | 1 | "own voice played back [back]" |
| | dialogueSentences | 5 | | tagDensity | 0.6 | | leniency | 1 | | rawRatio | 0.667 | | effectiveRatio | 0.667 | |
| 70.44% | AI-ism adverb frequency | Target: <2% AI-ism adverbs (58 tracked) | | wordCount | 1353 | | totalAiIsmAdverbs | 8 | | found | | | highlights | | 0 | "slowly" | | 1 | "very" | | 2 | "quickly" | | 3 | "slightly" |
| |
| 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) | |
| 40.87% | AI-ism word frequency | Target: <2% AI-ism words (290 tracked) | | wordCount | 1353 | | totalAiIsms | 16 | | found | | | highlights | | 0 | "warmth" | | 1 | "resolved" | | 2 | "silence" | | 3 | "pulse" | | 4 | "throb" | | 5 | "footsteps" | | 6 | "quickened" | | 7 | "resolve" |
| |
| 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 | 87 | | matches | (empty) | |
| 93.60% | Filter word density | Target: ≤3% sentences with filter/hedge words | | filterCount | 1 | | hedgeCount | 2 | | narrationSentences | 87 | | filterMatches | | | hedgeMatches | | 0 | "seemed to" | | 1 | "managed to" |
| |
| 100.00% | Gibberish response detection | Target: ≤1% gibberish-like sentences (hard fail if a sentence exceeds 800 words) | | analyzedSentences | 89 | | gibberishSentences | 0 | | adjustedGibberishSentences | 0 | | longSentenceCount | 0 | | runOnParagraphCount | 0 | | giantParagraphCount | 0 | | wordSaladCount | 0 | | repetitionLoopCount | 0 | | controlTokenCount | 0 | | repeatedSegmentCount | 0 | | maxSentenceWordsSeen | 63 | | ratio | 0 | | matches | (empty) | |
| 100.00% | Markdown formatting overuse | Target: ≤5% words in markdown formatting | | markdownSpans | 0 | | markdownWords | 0 | | totalWords | 1369 | | ratio | 0 | | matches | (empty) | |
| 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 | 25 | | wordCount | 1319 | | uniqueNames | 14 | | maxNameDensity | 0.45 | | worstName | "Evan" | | maxWindowNameDensity | 2.5 | | worstWindowName | "Evan" | | discoveredNames | | Richmond | 3 | | Park | 2 | | Rory | 1 | | London | 1 | | Tuesday | 1 | | Yu-Fei | 1 | | Barnes | 1 | | Silas | 1 | | November | 1 | | Cardiff | 2 | | Evan | 6 | | June-in-the-air | 1 | | Heathrow | 1 | | Flowers | 3 |
| | persons | | 0 | "Rory" | | 1 | "Barnes" | | 2 | "Silas" | | 3 | "Evan" | | 4 | "Flowers" |
| | places | | 0 | "Richmond" | | 1 | "Park" | | 2 | "London" | | 3 | "Cardiff" |
| | globalScore | 1 | | windowScore | 0.833 | |
| 100.00% | Narrator intent-glossing | Target: ≤2% narration sentences with intent-glossing patterns | | analyzedSentences | 55 | | glossingSentenceCount | 0 | | matches | (empty) | |
| 100.00% | "Not X but Y" pattern overuse | Target: ≤1 "not X but Y" per 1000 words | | totalMatches | 0 | | per1kWords | 0 | | wordCount | 1369 | | matches | (empty) | |
| 100.00% | Overuse of "that" (subordinate clause padding) | Target: ≤2% sentences with "that" clauses | | thatCount | 1 | | totalSentences | 89 | | matches | | |
| 100.00% | Paragraph length variance | Target: CV ≥0.5 for paragraph word counts | | totalParagraphs | 25 | | mean | 54.76 | | std | 38.31 | | cv | 0.7 | | sampleLengths | | 0 | 43 | | 1 | 77 | | 2 | 9 | | 3 | 135 | | 4 | 30 | | 5 | 113 | | 6 | 9 | | 7 | 92 | | 8 | 68 | | 9 | 37 | | 10 | 79 | | 11 | 4 | | 12 | 4 | | 13 | 78 | | 14 | 20 | | 15 | 88 | | 16 | 48 | | 17 | 3 | | 18 | 88 | | 19 | 43 | | 20 | 79 | | 21 | 109 | | 22 | 26 | | 23 | 9 | | 24 | 78 |
| |
| 97.20% | Passive voice overuse | Target: ≤2% passive sentences | | passiveCount | 2 | | totalSentences | 87 | | matches | | 0 | "was chained" | | 1 | "were gone" |
| |
| 0.00% | Past progressive (was/were + -ing) overuse | Target: ≤2% past progressive verbs | | pastProgressiveCount | 7 | | totalVerbs | 219 | | matches | | 0 | "was doing" | | 1 | "was doing" | | 2 | "was running " | | 3 | "was burning" | | 4 | "wasn't looking" | | 5 | "were adjusting" | | 6 | "was waiting" |
| |
| 0.00% | Em-dash & semicolon overuse | Target: ≤2% sentences with em-dashes/semicolons | | emDashCount | 16 | | semicolonCount | 0 | | flaggedSentences | 11 | | totalSentences | 89 | | ratio | 0.124 | | matches | | 0 | "She'd finished her last delivery for Yu-Fei an hour ago — noodles to a woman in Barnes who'd tipped in exact change and apologies — and she should have gone home to the flat above Silas's bar, should have slept, should have done anything but follow the warmth." | | 1 | "She registered them the way you register a person standing in your doorway — a wrongness in the shape of the dark, and then the shape resolved: a ring of ancient oaks, but wrong for oaks, their trunks grey and smooth and tall as standing stones, arranged in a circle that no planting by any human hand would make." | | 2 | "Wildflowers covered it, edge to edge — white and violet and a red she didn't have a name for, blooming in November, blooming at midnight, every one of them open." | | 3 | "Not quiet — silence." | | 4 | "She watched it for what she'd have sworn was a full minute, and it said 00:12, and the little seconds counter was running — 13, 14, 15 — and then it said 12 again, and then 13, and she put the phone away with hands that were very steady, because she'd learned long ago that panic was a luxury you paid for later." | | 5 | "Because the silence wasn't total — there was something in it, at the very floor of her hearing, and it took her a moment to identify it because it was so ordinary it didn't belong here." | | 6 | "Behind her, always exactly behind her, and always exactly the same distance, and when she stopped, they stopped — a half-beat late." | | 7 | "That was the worst of it — she looked away and looked back, and every white and violet head in the clearing had swung on its stem to face her, hundreds of them, thousands, all pointed at her like an audience, and the red ones — the red ones were the color of the pendant, she realized, the exact deep crimson, and they hadn't turned." | | 8 | "Not painfully — worse than painfully." | | 9 | "From the trees, in a voice like hers — her own voice, played back slightly wrong, the vowels a shade too long — something said, \"Rory.\"" | | 10 | "She stood with her back straight and her thumb pressed hard into the old scar on her wrist, and she watched the treeline, and she noticed — because she was cool-headed, because that was the one thing Evan had never managed to take from her — that the pressed track in the grass was slowly, patiently, growing longer." |
| |
| 92.92% | Purple prose (modifier overload) | Target: <4% adverbs, <2% -ly adverbs, no adj stacking | | wordCount | 1310 | | adjectiveStacks | 0 | | stackExamples | (empty) | | adverbCount | 63 | | adverbRatio | 0.048091603053435114 | | lyAdverbCount | 18 | | lyAdverbRatio | 0.013740458015267175 | |
| 100.00% | Repeated phrase echo | Target: ≤20% sentences with echoes (window: 2) | | totalSentences | 89 | | echoCount | 0 | | echoWords | (empty) | |
| 100.00% | Sentence length variance | Target: CV ≥0.4 for sentence word counts | | totalSentences | 89 | | mean | 15.38 | | std | 15.97 | | cv | 1.038 | | sampleLengths | | 0 | 43 | | 1 | 6 | | 2 | 23 | | 3 | 48 | | 4 | 9 | | 5 | 25 | | 6 | 6 | | 7 | 43 | | 8 | 14 | | 9 | 3 | | 10 | 2 | | 11 | 42 | | 12 | 4 | | 13 | 8 | | 14 | 18 | | 15 | 8 | | 16 | 59 | | 17 | 15 | | 18 | 31 | | 19 | 9 | | 20 | 30 | | 21 | 40 | | 22 | 4 | | 23 | 4 | | 24 | 14 | | 25 | 7 | | 26 | 4 | | 27 | 20 | | 28 | 4 | | 29 | 6 | | 30 | 27 | | 31 | 13 | | 32 | 11 | | 33 | 3 | | 34 | 10 | | 35 | 5 | | 36 | 4 | | 37 | 3 | | 38 | 4 | | 39 | 63 | | 40 | 4 | | 41 | 4 | | 42 | 2 | | 43 | 2 | | 44 | 1 | | 45 | 34 | | 46 | 27 | | 47 | 7 | | 48 | 5 | | 49 | 20 |
| |
| 53.18% | Sentence opener variety | Target: ≥60% unique sentence openers | | consecutiveRepeats | 11 | | diversityRatio | 0.39325842696629215 | | totalSentences | 89 | | uniqueOpeners | 35 | |
| 86.58% | Adverb-first sentence starts | Target: ≥3% sentences starting with an adverb | | adverbCount | 2 | | totalSentences | 77 | | matches | | 0 | "Just late enough that she" | | 1 | "Just late enough for it" |
| | ratio | 0.026 | |
| 58.96% | Pronoun-first sentence starts | Target: ≤30% sentences starting with a pronoun | | pronounCount | 31 | | totalSentences | 77 | | matches | | 0 | "She'd finished her last delivery" | | 1 | "She felt it now through" | | 2 | "It had never done this" | | 3 | "She'd worn it because taking" | | 4 | "It pulled, a soft tidal" | | 5 | "Her phone said 00:12." | | 6 | "Her phone said the temperature" | | 7 | "Her phone said a lot" | | 8 | "She registered them the way" | | 9 | "Her thumb found the small" | | 10 | "She could hear her own" | | 11 | "She could hear the pendant," | | 12 | "she said aloud, because her" | | 13 | "It came out flat, dead," | | 14 | "She tried again." | | 15 | "She took out her phone." | | 16 | "She watched it." | | 17 | "It still said 00:12." | | 18 | "She watched it for what" | | 19 | "She turned to leave." |
| | ratio | 0.403 | |
| 100.00% | Subject-first sentence starts | Target: ≤72% sentences starting with a subject | | subjectCount | 55 | | totalSentences | 77 | | matches | | 0 | "The gate in Richmond Park's" | | 1 | "The dark was doing its" | | 2 | "She'd finished her last delivery" | | 3 | "The pendant had been getting" | | 4 | "She felt it now through" | | 5 | "It had never done this" | | 6 | "She'd worn it because taking" | | 7 | "It pulled, a soft tidal" | | 8 | "Her phone said 00:12." | | 9 | "Her phone said the temperature" | | 10 | "Her phone said a lot" | | 11 | "The oaks found her before" | | 12 | "She registered them the way" | | 13 | "The pendant flared against her" | | 14 | "Her thumb found the small" | | 15 | "The clearing opened around her" | | 16 | "Wildflowers covered it, edge to" | | 17 | "That was the first wrong" | | 18 | "Flowers open at midnight." | | 19 | "Flowers don't do that." |
| | ratio | 0.714 | |
| 100.00% | Subordinate conjunction sentence starts | Target: ≥2% sentences starting with a subordinating conjunction | | subConjCount | 3 | | totalSentences | 77 | | matches | | 0 | "Now it pulled." | | 1 | "Because the silence wasn't total" | | 2 | "As if whatever had made" |
| | ratio | 0.039 | |
| 0.00% | Technical jargon density | Target: ≤6% sentences with technical-jargon patterns | | analyzedSentences | 35 | | technicalSentenceCount | 7 | | matches | | 0 | "She'd finished her last delivery for Yu-Fei an hour ago — noodles to a woman in Barnes who'd tipped in exact change and apologies — and she should have gone hom…" | | 1 | "Her phone said a lot of reasonable things that had stopped being true somewhere around the third hill." | | 2 | "That was the first wrong thing, and she catalogued it in the cool, level part of her mind that had gotten her out of Cardiff and out of Evan's flat and into a l…" | | 3 | "She could hear the pendant, she realized slowly, a rhythm under her pulse that didn't belong to her, a slow double-throb like something enormous breathing far a…" | | 4 | "She watched it for what she'd have sworn was a full minute, and it said 00:12, and the little seconds counter was running — 13, 14, 15 — and then it said 12 aga…" | | 5 | "Where the ring of standing trees had been, the clearing simply continued, flowers running to a treeline that stood further off than any treeline had a right to …" | | 6 | "The treeline had depth to it now, and in the depth there were shapes that didn't resolve, tall and narrow, several of them, still in the way that things are sti…" |
| |
| 0.00% | Useless dialogue additions | Target: ≤5% dialogue tags with trailing filler fragments | | totalTags | 3 | | uselessAdditionCount | 1 | | matches | | 0 | "she said aloud, because her voice was a thing she could check" |
| |
| 100.00% | Dialogue tag variety (said vs. fancy) | Target: ≤10% fancy dialogue tags | | totalTags | 2 | | fancyCount | 0 | | fancyTags | (empty) | | dialogueSentences | 5 | | tagDensity | 0.4 | | leniency | 0.8 | | rawRatio | 0 | | effectiveRatio | 0 | |