| 100.00% | Adverbs in dialogue tags | Target: ≤10% dialogue tags with adverbs | | totalTags | 21 | | adverbTagCount | 1 | | adverbTags | | 0 | "He gestured vaguely [vaguely]" |
| | dialogueSentences | 57 | | tagDensity | 0.368 | | leniency | 0.737 | | rawRatio | 0.048 | | effectiveRatio | 0.035 | |
| 96.87% | AI-ism adverb frequency | Target: <2% AI-ism adverbs (58 tracked) | | wordCount | 1596 | | totalAiIsmAdverbs | 1 | | found | | | highlights | | |
| 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) | |
| 74.94% | AI-ism word frequency | Target: <2% AI-ism words (290 tracked) | | wordCount | 1596 | | totalAiIsms | 8 | | found | | | highlights | | 0 | "weight" | | 1 | "silence" | | 2 | "comfortable" | | 3 | "pulse" | | 4 | "calculated" | | 5 | "charm" |
| |
| 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 | 1 | | hedgeCount | 0 | | narrationSentences | 83 | | filterMatches | | | hedgeMatches | (empty) | |
| 100.00% | Gibberish response detection | Target: ≤1% gibberish-like sentences (hard fail if a sentence exceeds 800 words) | | analyzedSentences | 119 | | gibberishSentences | 0 | | adjustedGibberishSentences | 0 | | longSentenceCount | 0 | | runOnParagraphCount | 0 | | giantParagraphCount | 0 | | wordSaladCount | 0 | | repetitionLoopCount | 0 | | controlTokenCount | 0 | | repeatedSegmentCount | 0 | | maxSentenceWordsSeen | 64 | | ratio | 0 | | matches | (empty) | |
| 100.00% | Markdown formatting overuse | Target: ≤5% words in markdown formatting | | markdownSpans | 0 | | markdownWords | 0 | | totalWords | 1610 | | ratio | 0 | | matches | (empty) | |
| 100.00% | Missing dialogue indicators (quotation marks) | Target: ≤10% speech attributions without quotation marks | | totalAttributions | 14 | | unquotedAttributions | 0 | | matches | (empty) | |
| 100.00% | Name drop frequency | Target: ≤1.0 per-name mentions per 100 words | | totalMentions | 38 | | wordCount | 1132 | | uniqueNames | 9 | | maxNameDensity | 0.97 | | worstName | "Rory" | | maxWindowNameDensity | 1.5 | | worstWindowName | "Eva" | | discoveredNames | | Eva | 6 | | Ptolemy | 3 | | Cardiff | 1 | | Silas | 2 | | Lucien | 9 | | Rory | 11 | | Started | 1 | | Sancerre | 4 | | Moreau | 1 |
| | persons | | 0 | "Eva" | | 1 | "Ptolemy" | | 2 | "Silas" | | 3 | "Lucien" | | 4 | "Rory" | | 5 | "Sancerre" | | 6 | "Moreau" |
| | places | | | globalScore | 1 | | windowScore | 1 | |
| 100.00% | Narrator intent-glossing | Target: ≤2% narration sentences with intent-glossing patterns | | analyzedSentences | 60 | | glossingSentenceCount | 1 | | matches | | 0 | "smelled like old tobacco" |
| |
| 100.00% | "Not X but Y" pattern overuse | Target: ≤1 "not X but Y" per 1000 words | | totalMatches | 1 | | per1kWords | 0.621 | | wordCount | 1610 | | matches | | 0 | "not the comfortable kind she'd been enjoying, but the loaded kind, the kind" |
| |
| 100.00% | Overuse of "that" (subordinate clause padding) | Target: ≤2% sentences with "that" clauses | | thatCount | 1 | | totalSentences | 119 | | matches | | |
| 100.00% | Paragraph length variance | Target: CV ≥0.5 for paragraph word counts | | totalParagraphs | 63 | | mean | 25.56 | | std | 22.9 | | cv | 0.896 | | sampleLengths | | 0 | 75 | | 1 | 3 | | 2 | 57 | | 3 | 1 | | 4 | 16 | | 5 | 31 | | 6 | 1 | | 7 | 1 | | 8 | 5 | | 9 | 67 | | 10 | 4 | | 11 | 1 | | 12 | 10 | | 13 | 39 | | 14 | 7 | | 15 | 4 | | 16 | 63 | | 17 | 39 | | 18 | 65 | | 19 | 5 | | 20 | 42 | | 21 | 7 | | 22 | 31 | | 23 | 31 | | 24 | 48 | | 25 | 43 | | 26 | 3 | | 27 | 17 | | 28 | 52 | | 29 | 19 | | 30 | 3 | | 31 | 56 | | 32 | 9 | | 33 | 40 | | 34 | 1 | | 35 | 48 | | 36 | 38 | | 37 | 6 | | 38 | 4 | | 39 | 95 | | 40 | 11 | | 41 | 42 | | 42 | 9 | | 43 | 50 | | 44 | 32 | | 45 | 13 | | 46 | 8 | | 47 | 32 | | 48 | 12 | | 49 | 6 |
| |
| 100.00% | Passive voice overuse | Target: ≤2% passive sentences | | passiveCount | 1 | | totalSentences | 83 | | matches | | |
| 100.00% | Past progressive (was/were + -ing) overuse | Target: ≤2% past progressive verbs | | pastProgressiveCount | 1 | | totalVerbs | 200 | | matches | | |
| 0.00% | Em-dash & semicolon overuse | Target: ≤2% sentences with em-dashes/semicolons | | emDashCount | 13 | | semicolonCount | 0 | | flaggedSentences | 13 | | totalSentences | 119 | | ratio | 0.109 | | matches | | 0 | "The three deadbolts on Eva's front door took a particular sequence to open — one turn left, two turns right, a pause, then the final click." | | 1 | "Rory had the flat to herself — had been looking forward to the quiet, the cat purring on the armrest, the stack of case law she'd borrowed from Silas's shelf that smelled like old tobacco." | | 2 | "She knew that voice the way you know the sound of rain on a window you've slept beside — intimately, and against her better judgment." | | 3 | "He never arrived at all — not since the last time, which she had filed away in the part of her brain designated for things she refused to examine." | | 4 | "There he was, below, looking up with his mismatched eyes catching the streetlight — amber and black, the demon half of him always more visible at night." | | 5 | "Something shifted behind his amber eye — recognition, maybe, or something sharper." | | 6 | "He smelled of leather and cold air and whatever cologne he wore that she'd never been able to name — something dark and botanical, like crushed violets left to wilt." | | 7 | "He followed anyway, settling into one of Eva's mismatched chairs with the ease of someone who'd sat there before — which he had, twice, both times in circumstances she preferred not to revisit." | | 8 | "The silence in the flat was different now — not the comfortable kind she'd been enjoying, but the loaded kind, the kind that had a pulse." | | 9 | "She had never seen this — a crease between his brows that didn't belong to any performance." | | 10 | "The overhead light caught the platinum of his hair and the sharp geometry of his suit and the absurd elegance of him, and she thought about the last time he'd been in this flat — how he'd touched the scar on her wrist without asking, how she'd let him, how the silence afterward had stretched until it became a wall neither of them could climb." | | 11 | "\"I trust you to be exactly who you've always been.\" He held her stare, and something passed between them — old, unresolved, humming at a frequency she felt in her teeth." | | 12 | "A ghost of a smile crossed his face — the first real one she'd seen all evening." |
| |
| 100.00% | Purple prose (modifier overload) | Target: <4% adverbs, <2% -ly adverbs, no adj stacking | | wordCount | 1122 | | adjectiveStacks | 0 | | stackExamples | (empty) | | adverbCount | 35 | | adverbRatio | 0.031194295900178252 | | lyAdverbCount | 6 | | lyAdverbRatio | 0.0053475935828877 | |
| 100.00% | Repeated phrase echo | Target: ≤20% sentences with echoes (window: 2) | | totalSentences | 119 | | echoCount | 0 | | echoWords | (empty) | |
| 100.00% | Sentence length variance | Target: CV ≥0.4 for sentence word counts | | totalSentences | 119 | | mean | 13.53 | | std | 11.49 | | cv | 0.849 | | sampleLengths | | 0 | 26 | | 1 | 23 | | 2 | 26 | | 3 | 3 | | 4 | 4 | | 5 | 10 | | 6 | 35 | | 7 | 8 | | 8 | 1 | | 9 | 2 | | 10 | 14 | | 11 | 25 | | 12 | 6 | | 13 | 1 | | 14 | 1 | | 15 | 5 | | 16 | 5 | | 17 | 29 | | 18 | 4 | | 19 | 29 | | 20 | 4 | | 21 | 1 | | 22 | 10 | | 23 | 14 | | 24 | 15 | | 25 | 6 | | 26 | 4 | | 27 | 7 | | 28 | 4 | | 29 | 15 | | 30 | 12 | | 31 | 27 | | 32 | 3 | | 33 | 6 | | 34 | 11 | | 35 | 21 | | 36 | 7 | | 37 | 18 | | 38 | 18 | | 39 | 29 | | 40 | 5 | | 41 | 22 | | 42 | 12 | | 43 | 8 | | 44 | 7 | | 45 | 23 | | 46 | 8 | | 47 | 20 | | 48 | 11 | | 49 | 18 |
| |
| 51.54% | Sentence opener variety | Target: ≥60% unique sentence openers | | consecutiveRepeats | 12 | | diversityRatio | 0.3697478991596639 | | totalSentences | 119 | | uniqueOpeners | 44 | |
| 90.09% | Adverb-first sentence starts | Target: ≥3% sentences starting with an adverb | | adverbCount | 2 | | totalSentences | 74 | | matches | | 0 | "Then a voice, low and" | | 1 | "Of course Lucien knew about" |
| | ratio | 0.027 | |
| 20.00% | Pronoun-first sentence starts | Target: ≤30% sentences starting with a pronoun | | pronounCount | 37 | | totalSentences | 74 | | matches | | 0 | "She was halfway through a" | | 1 | "It was nearly eleven." | | 2 | "She pressed the intercom button" | | 3 | "She knew that voice the" | | 4 | "Her finger hovered over the" | | 5 | "She could picture him standing" | | 6 | "He never arrived unannounced." | | 7 | "He never arrived at all" | | 8 | "She looked at the tabby," | | 9 | "He wasn't smiling." | | 10 | "He never smiled when it" | | 11 | "She unlocked the first deadbolt," | | 12 | "His gaze moved across her" | | 13 | "He stepped past her into" | | 14 | "He turned to face her," | | 15 | "He smelled of leather and" | | 16 | "He paused, and for the" | | 17 | "She needed the barrier." | | 18 | "He followed anyway, settling into" | | 19 | "she asked, opening the fridge" |
| | ratio | 0.5 | |
| 7.30% | Subject-first sentence starts | Target: ≤72% sentences starting with a subject | | subjectCount | 67 | | totalSentences | 74 | | matches | | 0 | "The three deadbolts on Eva's" | | 1 | "Rory had the rhythm memorised," | | 2 | "She was halfway through a" | | 3 | "It was nearly eleven." | | 4 | "Eva was in Cardiff for" | | 5 | "Rory had the flat to" | | 6 | "She pressed the intercom button" | | 7 | "She knew that voice the" | | 8 | "Her finger hovered over the" | | 9 | "The intercom hissed between them." | | 10 | "She could picture him standing" | | 11 | "He never arrived unannounced." | | 12 | "He never arrived at all" | | 13 | "She looked at the tabby," | | 14 | "The curry house had a" | | 15 | "Lucien knew about everything." | | 16 | "The words landed between them" | | 17 | "Rory set the case file" | | 18 | "He wasn't smiling." | | 19 | "He never smiled when it" |
| | ratio | 0.905 | |
| 0.00% | Subordinate conjunction sentence starts | Target: ≥2% sentences starting with a subordinating conjunction | | subConjCount | 0 | | totalSentences | 74 | | matches | (empty) | | ratio | 0 | |
| 53.57% | Technical jargon density | Target: ≤6% sentences with technical-jargon patterns | | analyzedSentences | 40 | | technicalSentenceCount | 5 | | matches | | 0 | "Rory had the flat to herself — had been looking forward to the quiet, the cat purring on the armrest, the stack of case law she'd borrowed from Silas's shelf th…" | | 1 | "The curry house had a small rear entrance that led to the building's shared stairwell." | | 2 | "Up close, she could see the fatigue carved beneath his cheekbones, the slight looseness at his collar that meant he'd been wearing the suit for more than twenty…" | | 3 | "He followed anyway, settling into one of Eva's mismatched chairs with the ease of someone who'd sat there before — which he had, twice, both times in circumstan…" | | 4 | "The silence in the flat was different now — not the comfortable kind she'd been enjoying, but the loaded kind, the kind that had a pulse." |
| |
| 100.00% | Useless dialogue additions | Target: ≤5% dialogue tags with trailing filler fragments | | totalTags | 21 | | uselessAdditionCount | 0 | | matches | (empty) | |
| 100.00% | Dialogue tag variety (said vs. fancy) | Target: ≤10% fancy dialogue tags | | totalTags | 9 | | fancyCount | 2 | | fancyTags | | 0 | "he continued (continue)" | | 1 | "he agreed (agree)" |
| | dialogueSentences | 57 | | tagDensity | 0.158 | | leniency | 0.316 | | rawRatio | 0.222 | | effectiveRatio | 0.07 | |