| 100.00% | Adverbs in dialogue tags | Target: ≤10% dialogue tags with adverbs | | totalTags | 1 | | adverbTagCount | 0 | | adverbTags | (empty) | | dialogueSentences | 3 | | tagDensity | 0.333 | | leniency | 0.667 | | rawRatio | 0 | | effectiveRatio | 0 | |
| 89.32% | AI-ism adverb frequency | Target: <2% AI-ism adverbs (58 tracked) | | wordCount | 1404 | | totalAiIsmAdverbs | 3 | | found | | | highlights | | 0 | "very" | | 1 | "slowly" | | 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) | |
| 67.95% | AI-ism word frequency | Target: <2% AI-ism words (290 tracked) | | wordCount | 1404 | | totalAiIsms | 9 | | found | | | highlights | | 0 | "could feel" | | 1 | "pulse" | | 2 | "racing" | | 3 | "silence" | | 4 | "footsteps" | | 5 | "scanning" | | 6 | "stomach" |
| |
| 100.00% | Cliché density | Target: ≤1 cliche(s) per 800-word window | | totalCliches | 1 | | maxInWindow | 1 | | found | | 0 | | label | "stomach dropped/sank" | | count | 1 |
|
| | highlights | | |
| 100.00% | Emotion telling (show vs. tell) | Target: ≤3% sentences with emotion telling | | emotionTells | 0 | | narrationSentences | 100 | | matches | (empty) | |
| 100.00% | Filter word density | Target: ≤3% sentences with filter/hedge words | | filterCount | 2 | | hedgeCount | 0 | | narrationSentences | 100 | | filterMatches | | | hedgeMatches | (empty) | |
| 100.00% | Gibberish response detection | Target: ≤1% gibberish-like sentences (hard fail if a sentence exceeds 800 words) | | analyzedSentences | 102 | | 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 | 0 | | markdownWords | 0 | | totalWords | 1430 | | ratio | 0 | | matches | (empty) | |
| 100.00% | Missing dialogue indicators (quotation marks) | Target: ≤10% speech attributions without quotation marks | | totalAttributions | 4 | | unquotedAttributions | 0 | | matches | (empty) | |
| 100.00% | Name drop frequency | Target: ≤1.0 per-name mentions per 100 words | | totalMentions | 22 | | wordCount | 1406 | | uniqueNames | 12 | | maxNameDensity | 0.43 | | worstName | "Press" | | maxWindowNameDensity | 1 | | worstWindowName | "Press" | | discoveredNames | | Heartstone | 1 | | London | 3 | | Park | 1 | | Pen | 1 | | Ponds | 1 | | Isolde | 1 | | Cardiff | 1 | | Evan | 1 | | Rory | 4 | | Aurora | 1 | | Eva | 1 | | Press | 6 |
| | persons | | 0 | "Heartstone" | | 1 | "Evan" | | 2 | "Rory" | | 3 | "Eva" | | 4 | "Press" |
| | places | | 0 | "London" | | 1 | "Park" | | 2 | "Cardiff" |
| | globalScore | 1 | | windowScore | 1 | |
| 100.00% | Narrator intent-glossing | Target: ≤2% narration sentences with intent-glossing patterns | | analyzedSentences | 64 | | 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 | 1430 | | matches | (empty) | |
| 100.00% | Overuse of "that" (subordinate clause padding) | Target: ≤2% sentences with "that" clauses | | thatCount | 1 | | totalSentences | 102 | | matches | | |
| 100.00% | Paragraph length variance | Target: CV ≥0.5 for paragraph word counts | | totalParagraphs | 32 | | mean | 44.69 | | std | 30.24 | | cv | 0.677 | | sampleLengths | | 0 | 9 | | 1 | 94 | | 2 | 20 | | 3 | 89 | | 4 | 36 | | 5 | 86 | | 6 | 63 | | 7 | 68 | | 8 | 11 | | 9 | 76 | | 10 | 10 | | 11 | 73 | | 12 | 6 | | 13 | 84 | | 14 | 23 | | 15 | 79 | | 16 | 7 | | 17 | 50 | | 18 | 18 | | 19 | 65 | | 20 | 47 | | 21 | 10 | | 22 | 59 | | 23 | 11 | | 24 | 84 | | 25 | 9 | | 26 | 82 | | 27 | 39 | | 28 | 31 | | 29 | 1 | | 30 | 40 | | 31 | 50 |
| |
| 91.23% | Passive voice overuse | Target: ≤2% passive sentences | | passiveCount | 4 | | totalSentences | 100 | | matches | | 0 | "was burned" | | 1 | "was shut" | | 2 | "were gone" | | 3 | "been given" |
| |
| 16.51% | Past progressive (was/were + -ing) overuse | Target: ≤2% past progressive verbs | | pastProgressiveCount | 6 | | totalVerbs | 218 | | matches | | 0 | "was counting" | | 1 | "was still telling" | | 2 | "was racing " | | 3 | "was saying" | | 4 | "was keeping" | | 5 | "was coming" |
| |
| 0.00% | Em-dash & semicolon overuse | Target: ≤2% sentences with em-dashes/semicolons | | emDashCount | 26 | | semicolonCount | 5 | | flaggedSentences | 20 | | totalSentences | 102 | | ratio | 0.196 | | matches | | 0 | "Not a sound — a heat." | | 1 | "In the three weeks since it had appeared in her jacket pocket, wrapped in a scrap of paper with no name on it, the thing had stayed politely inert — a thumbnail of crimson stone on a silver chain, warm as a held hand, nothing more." | | 2 | "The pipes in the building above Silas' bar knocked at all hours; the old wiring hummed; she'd eaten late and her body was playing tricks." | | 3 | "She told herself all of it while she pulled on her jeans and the leather jacket she wore for deliveries, and she was still telling herself when she let herself down the stairwell into the cold, because the alternative — that the stone wanted her to go somewhere — was a thought she didn't want to finish." | | 4 | "She left the moped in the lay-by off Pen Ponds car park, checked the phone — 2:47 a.m., one bar of signal — and started walking with the pendant leading her like a diviner's rod through black trees." | | 5 | "By the time the first pale shape of the stones came filtering through the trees, it was racing — a heartbeat at the end of a sprint." | | 6 | "Grass the colour of bottle glass, and flowers — daisies, vetch, something yellow she didn't have a name for — all of it open and dewless under a moon that hung directly overhead, though she'd seen it low over the treetops on the walk in." | | 7 | "She noted it, filed it, and stepped in, because the pendant had gone almost hot against her ribs and some part of her brain — the part that had gotten her out of Cardiff, out of Evan's flat, out of a dozen tight corners since — was saying the answers are in there, and the rest of her was too tired to argue." | | 8 | "Even here, twelve miles out, the city made a sound — a low, constant hum like a fridge left open somewhere over the horizon." | | 9 | "She walked the ring and counted the stones — nine, there had been nine every time before, she was almost sure — and she took her flat keys out of her pocket and set them on the grass just inside the boundary where she'd entered, a deliberate mark, a you-are-here." | | 10 | "She was a delivery driver; she looked at that clock a dozen times a night; 2:47 was burned in." | | 11 | "That was somehow worse than the racing — it had slowed to match something, and the something was not her heart." | | 12 | "That instinct — don't look, don't look yet — rose in her like water." | | 13 | "Pale, upright, still, at the far side of the ring where the yellow flowers grew thickest, and it had been there the whole time — she knew that with a sick, certain knowledge, the way you know someone has been reading over your shoulder." | | 14 | "Her shadow lay across the grass at her feet — she glanced down at it and her stomach dropped, because the shadow fell away from the moon, pointing back the way she'd come, out through the gap in the ring." | | 15 | "The trees beyond them had drawn closer, or the dark between them had thickened; either way, the way in had become a way that wasn't." | | 16 | "She found the spot — a slight bruise in the grass, nothing more — and no keys, and standing over that empty patch of green she heard, for the first time, a sound." | | 17 | "Then, close — so close it might have been an inch from her ear, though nothing stood behind her, she checked, she checked twice — a voice." | | 18 | "Laila — the name only Eva used, the name she'd been given in London, the name that belonged to no records and no history." | | 19 | "The pendant went hot enough to bite through her shirt, and its pulse broke rhythm — press-press-press — like a heart slamming before a door opens." |
| |
| 100.00% | Purple prose (modifier overload) | Target: <4% adverbs, <2% -ly adverbs, no adj stacking | | wordCount | 135 | | adjectiveStacks | 0 | | stackExamples | (empty) | | adverbCount | 3 | | adverbRatio | 0.022222222222222223 | | lyAdverbCount | 1 | | lyAdverbRatio | 0.007407407407407408 | |
| 100.00% | Repeated phrase echo | Target: ≤20% sentences with echoes (window: 2) | | totalSentences | 102 | | echoCount | 0 | | echoWords | (empty) | |
| 100.00% | Sentence length variance | Target: CV ≥0.4 for sentence word counts | | totalSentences | 102 | | mean | 14.02 | | std | 13.96 | | cv | 0.995 | | sampleLengths | | 0 | 9 | | 1 | 6 | | 2 | 36 | | 3 | 6 | | 4 | 46 | | 5 | 4 | | 6 | 2 | | 7 | 2 | | 8 | 12 | | 9 | 7 | | 10 | 25 | | 11 | 57 | | 12 | 6 | | 13 | 6 | | 14 | 2 | | 15 | 19 | | 16 | 1 | | 17 | 2 | | 18 | 38 | | 19 | 10 | | 20 | 38 | | 21 | 45 | | 22 | 18 | | 23 | 5 | | 24 | 3 | | 25 | 21 | | 26 | 8 | | 27 | 2 | | 28 | 2 | | 29 | 27 | | 30 | 11 | | 31 | 12 | | 32 | 10 | | 33 | 9 | | 34 | 45 | | 35 | 10 | | 36 | 10 | | 37 | 63 | | 38 | 6 | | 39 | 4 | | 40 | 24 | | 41 | 11 | | 42 | 9 | | 43 | 26 | | 44 | 2 | | 45 | 5 | | 46 | 3 | | 47 | 20 | | 48 | 3 | | 49 | 5 |
| |
| 62.09% | Sentence opener variety | Target: ≥60% unique sentence openers | | consecutiveRepeats | 10 | | diversityRatio | 0.43137254901960786 | | totalSentences | 102 | | uniqueOpeners | 44 | |
| 100.00% | Adverb-first sentence starts | Target: ≥3% sentences starting with an adverb | | adverbCount | 4 | | totalSentences | 82 | | matches | | 0 | "Then she checked her phone." | | 1 | "Somewhere in the grove, something" | | 2 | "Instead she turned her head" | | 3 | "Then, close — so close" |
| | ratio | 0.049 | |
| 88.29% | Pronoun-first sentence starts | Target: ≤30% sentences starting with a pronoun | | pronounCount | 27 | | totalSentences | 82 | | matches | | 0 | "It had never done that" | | 1 | "She told herself it was" | | 2 | "She told herself all of" | | 3 | "It was more like the" | | 4 | "She took the delivery moped," | | 5 | "She left the moped in" | | 6 | "She'd been to the grove" | | 7 | "Her breath smoked." | | 8 | "Her breath didn't fog on" | | 9 | "She noted it, filed it," | | 10 | "She'd heard it every other" | | 11 | "she said, and her voice" | | 12 | "She was a practical person." | | 13 | "She'd learned practical the hard" | | 14 | "She walked the ring and" | | 15 | "She had looked at it" | | 16 | "She was certain." | | 17 | "She was a delivery driver;" | | 18 | "She became aware, in the" | | 19 | "She didn't look for it." |
| | ratio | 0.329 | |
| 100.00% | Subject-first sentence starts | Target: ≤72% sentences starting with a subject | | subjectCount | 54 | | totalSentences | 82 | | matches | | 0 | "The pendant woke her at" | | 1 | "Rory came up out of" | | 2 | "It had never done that" | | 3 | "She told herself it was" | | 4 | "The pipes in the building" | | 5 | "She told herself all of" | | 6 | "The stone finished it for" | | 7 | "It was more like the" | | 8 | "She took the delivery moped," | | 9 | "Richmond Park after midnight was" | | 10 | "She left the moped in" | | 11 | "She'd been to the grove" | | 12 | "Tonight the frost was hard." | | 13 | "Her breath smoked." | | 14 | "The pendant beat faster with" | | 15 | "The frost stopped at the" | | 16 | "Rory stood straddling the line" | | 17 | "Grass the colour of bottle" | | 18 | "Her breath didn't fog on" | | 19 | "That was the first thing" |
| | ratio | 0.659 | |
| 100.00% | Subordinate conjunction sentence starts | Target: ≥2% sentences starting with a subordinating conjunction | | subConjCount | 3 | | totalSentences | 82 | | matches | | 0 | "Now it was counting." | | 1 | "By the time the first" | | 2 | "Even here, twelve miles out," |
| | ratio | 0.037 | |
| 82.07% | Technical jargon density | Target: ≤6% sentences with technical-jargon patterns | | analyzedSentences | 47 | | technicalSentenceCount | 4 | | matches | | 0 | "Rory came up out of a thin sleep with her hand already pressed to her sternum, and through her fingers she could feel the Heartstone beating against her skin li…" | | 1 | "She'd been to the grove before, in daylight, with Isolde, and daylight had made it easy: a hollow off the main ride, ringed by standing stones that were actuall…" | | 2 | "Grass the colour of bottle glass, and flowers — daisies, vetch, something yellow she didn't have a name for — all of it open and dewless under a moon that hung …" | | 3 | "She noted it, filed it, and stepped in, because the pendant had gone almost hot against her ribs and some part of her brain — the part that had gotten her out o…" |
| |
| 100.00% | Useless dialogue additions | Target: ≤5% dialogue tags with trailing filler fragments | | totalTags | 1 | | uselessAdditionCount | 0 | | matches | (empty) | |
| 100.00% | Dialogue tag variety (said vs. fancy) | Target: ≤10% fancy dialogue tags | | totalTags | 1 | | fancyCount | 0 | | fancyTags | (empty) | | dialogueSentences | 3 | | tagDensity | 0.333 | | leniency | 0.667 | | rawRatio | 0 | | effectiveRatio | 0 | |