| 100.00% | Adverbs in dialogue tags | Target: ≤10% dialogue tags with adverbs | | totalTags | 23 | | adverbTagCount | 2 | | adverbTags | | 0 | "She stopped again [again]" | | 1 | "Carys said carefully [carefully]" |
| | dialogueSentences | 52 | | tagDensity | 0.442 | | leniency | 0.885 | | rawRatio | 0.087 | | effectiveRatio | 0.077 | |
| 83.75% | AI-ism adverb frequency | Target: <2% AI-ism adverbs (58 tracked) | | wordCount | 1538 | | totalAiIsmAdverbs | 5 | | found | | | highlights | | 0 | "slightly" | | 1 | "carefully" | | 2 | "slowly" | | 3 | "very" | | 4 | "suddenly" |
| |
| 100.00% | AI-ism character names | Target: 0 AI-default names (16 tracked, −20% each) | | codexExemptions | | | found | (empty) | |
| 100.00% | AI-ism location names | Target: 0 AI-default location names (33 tracked, −20% each) | | codexExemptions | (empty) | | found | (empty) | |
| 93.50% | AI-ism word frequency | Target: <2% AI-ism words (290 tracked) | | wordCount | 1538 | | totalAiIsms | 2 | | found | | | highlights | | |
| 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 | 69 | | matches | (empty) | |
| 100.00% | Filter word density | Target: ≤3% sentences with filter/hedge words | | filterCount | 1 | | hedgeCount | 1 | | narrationSentences | 69 | | filterMatches | | | hedgeMatches | | |
| 100.00% | Gibberish response detection | Target: ≤1% gibberish-like sentences (hard fail if a sentence exceeds 800 words) | | analyzedSentences | 95 | | gibberishSentences | 0 | | adjustedGibberishSentences | 0 | | longSentenceCount | 0 | | runOnParagraphCount | 0 | | giantParagraphCount | 0 | | wordSaladCount | 0 | | repetitionLoopCount | 0 | | controlTokenCount | 0 | | repeatedSegmentCount | 0 | | maxSentenceWordsSeen | 95 | | ratio | 0 | | matches | (empty) | |
| 100.00% | Markdown formatting overuse | Target: ≤5% words in markdown formatting | | markdownSpans | 0 | | markdownWords | 0 | | totalWords | 1557 | | ratio | 0 | | matches | (empty) | |
| 100.00% | Missing dialogue indicators (quotation marks) | Target: ≤10% speech attributions without quotation marks | | totalAttributions | 22 | | unquotedAttributions | 0 | | matches | (empty) | |
| 23.99% | Name drop frequency | Target: ≤1.0 per-name mentions per 100 words | | totalMentions | 56 | | wordCount | 992 | | uniqueNames | 10 | | maxNameDensity | 2.52 | | worstName | "Rory" | | maxWindowNameDensity | 4 | | worstWindowName | "Rory" | | discoveredNames | | Bowen | 1 | | Rory | 25 | | Carys | 19 | | Cathays | 2 | | Friday | 1 | | Bar | 1 | | Silas | 4 | | Yu-Fei | 1 | | Cantonese | 1 | | Soho | 1 |
| | persons | | | places | | 0 | "Cathays" | | 1 | "Bar" | | 2 | "Cantonese" | | 3 | "Soho" |
| | globalScore | 0.24 | | windowScore | 0.333 | |
| 85.90% | Narrator intent-glossing | Target: ≤2% narration sentences with intent-glossing patterns | | analyzedSentences | 39 | | glossingSentenceCount | 1 | | matches | | 0 | "Apparently Carys had stood out" |
| |
| 100.00% | "Not X but Y" pattern overuse | Target: ≤1 "not X but Y" per 1000 words | | totalMatches | 0 | | per1kWords | 0 | | wordCount | 1557 | | matches | (empty) | |
| 100.00% | Overuse of "that" (subordinate clause padding) | Target: ≤2% sentences with "that" clauses | | thatCount | 1 | | totalSentences | 95 | | matches | | |
| 100.00% | Paragraph length variance | Target: CV ≥0.5 for paragraph word counts | | totalParagraphs | 43 | | mean | 36.21 | | std | 33.46 | | cv | 0.924 | | sampleLengths | | 0 | 71 | | 1 | 17 | | 2 | 15 | | 3 | 55 | | 4 | 27 | | 5 | 6 | | 6 | 2 | | 7 | 74 | | 8 | 18 | | 9 | 121 | | 10 | 6 | | 11 | 1 | | 12 | 24 | | 13 | 43 | | 14 | 57 | | 15 | 3 | | 16 | 3 | | 17 | 29 | | 18 | 40 | | 19 | 70 | | 20 | 6 | | 21 | 44 | | 22 | 22 | | 23 | 1 | | 24 | 37 | | 25 | 76 | | 26 | 16 | | 27 | 6 | | 28 | 22 | | 29 | 72 | | 30 | 62 | | 31 | 12 | | 32 | 110 | | 33 | 9 | | 34 | 3 | | 35 | 4 | | 36 | 54 | | 37 | 59 | | 38 | 17 | | 39 | 137 | | 40 | 44 | | 41 | 14 | | 42 | 48 |
| |
| 95.09% | Passive voice overuse | Target: ≤2% passive sentences | | passiveCount | 2 | | totalSentences | 69 | | matches | | 0 | "been headed" | | 1 | "being asked" |
| |
| 100.00% | Past progressive (was/were + -ing) overuse | Target: ≤2% past progressive verbs | | pastProgressiveCount | 1 | | totalVerbs | 172 | | matches | | |
| 0.00% | Em-dash & semicolon overuse | Target: ≤2% sentences with em-dashes/semicolons | | emDashCount | 8 | | semicolonCount | 0 | | flaggedSentences | 6 | | totalSentences | 95 | | ratio | 0.063 | | matches | | 0 | "Silas was down at the far end of the bar polishing glasses that were already clean, and Rory felt rather than saw his attention shift — that small, calibrated stillness he had, the old habits of a life he didn't talk about." | | 1 | "At university Carys had been the one who always knew where the exits were, who planned her nights out the way other people planned careers — which, to be fair, she'd also planned." | | 2 | "\"You're living here? Working here?\" A glance around — the old maps on the walls, the photographs, the low amber light." | | 3 | "Watched her rearrange it, try to fit it into the shape of the Rory she'd known — the Rory who'd been headed for the Bar, who'd argued seminar leaders into corners for fun, whose father used to ring the flat phone and ask for her by her full name like a summons." | | 4 | "His hazel eyes moved over her the way they moved over everyone — once, thoroughly — and then he smiled, and it was a good smile, warm and entirely unrevealing." | | 5 | "The bar sounds went on around them — someone's laugh at a corner table, ice in a shaker — but they'd thinned somehow, gone distant, the way sound did when your whole attention narrowed to a point." |
| |
| 100.00% | Purple prose (modifier overload) | Target: <4% adverbs, <2% -ly adverbs, no adj stacking | | wordCount | 989 | | adjectiveStacks | 0 | | stackExamples | (empty) | | adverbCount | 39 | | adverbRatio | 0.03943377148634985 | | lyAdverbCount | 12 | | lyAdverbRatio | 0.012133468149646108 | |
| 100.00% | Repeated phrase echo | Target: ≤20% sentences with echoes (window: 2) | | totalSentences | 95 | | echoCount | 0 | | echoWords | (empty) | |
| 100.00% | Sentence length variance | Target: CV ≥0.4 for sentence word counts | | totalSentences | 95 | | mean | 16.39 | | std | 16.25 | | cv | 0.991 | | sampleLengths | | 0 | 20 | | 1 | 51 | | 2 | 17 | | 3 | 2 | | 4 | 13 | | 5 | 42 | | 6 | 8 | | 7 | 5 | | 8 | 4 | | 9 | 23 | | 10 | 3 | | 11 | 3 | | 12 | 2 | | 13 | 17 | | 14 | 13 | | 15 | 23 | | 16 | 21 | | 17 | 8 | | 18 | 10 | | 19 | 2 | | 20 | 18 | | 21 | 4 | | 22 | 33 | | 23 | 19 | | 24 | 14 | | 25 | 31 | | 26 | 6 | | 27 | 1 | | 28 | 21 | | 29 | 3 | | 30 | 11 | | 31 | 21 | | 32 | 11 | | 33 | 5 | | 34 | 52 | | 35 | 3 | | 36 | 3 | | 37 | 10 | | 38 | 19 | | 39 | 12 | | 40 | 28 | | 41 | 31 | | 42 | 5 | | 43 | 30 | | 44 | 4 | | 45 | 6 | | 46 | 44 | | 47 | 8 | | 48 | 14 | | 49 | 1 |
| |
| 57.54% | Sentence opener variety | Target: ≥60% unique sentence openers | | consecutiveRepeats | 12 | | diversityRatio | 0.42105263157894735 | | totalSentences | 95 | | uniqueOpeners | 40 | |
| 100.00% | Adverb-first sentence starts | Target: ≥3% sentences starting with an adverb | | adverbCount | 2 | | totalSentences | 52 | | matches | | 0 | "Apparently it had." | | 1 | "Apparently Carys had stood outside" |
| | ratio | 0.038 | |
| 100.00% | Pronoun-first sentence starts | Target: ≤30% sentences starting with a pronoun | | pronounCount | 10 | | totalSentences | 52 | | matches | | 0 | "He noticed everyone who came" | | 1 | "He noticed who noticed Rory." | | 2 | "She was doing the maths" | | 3 | "She stopped again, and Rory" | | 4 | "She unbuttoned the camel coat" | | 5 | "She was polished now, glossed," | | 6 | "She watched Carys receive this." | | 7 | "His hazel eyes moved over" | | 8 | "She looked down at her" | | 9 | "She looked up" |
| | ratio | 0.192 | |
| 75.38% | Subject-first sentence starts | Target: ≤72% sentences starting with a subject | | subjectCount | 40 | | totalSentences | 52 | | matches | | 0 | "The green neon from the" | | 1 | "Rory was halfway through her" | | 2 | "Rory knew her by the" | | 3 | "Silas was down at the" | | 4 | "He noticed everyone who came" | | 5 | "He noticed who noticed Rory." | | 6 | "Carys saw her then." | | 7 | "The recognition moved across her" | | 8 | "Carys came toward her with" | | 9 | "She was doing the maths" | | 10 | "She stopped again, and Rory" | | 11 | "She unbuttoned the camel coat" | | 12 | "Some things didn't change." | | 13 | "She was polished now, glossed," | | 14 | "A glance around — the" | | 15 | "Rory turned her glass on" | | 16 | "The crescent scar on her" | | 17 | "She watched Carys receive this." | | 18 | "Carys stopped, folded her hands" | | 19 | "Rory raised her voice slightly" |
| | ratio | 0.769 | |
| 96.15% | Subordinate conjunction sentence starts | Target: ≥2% sentences starting with a subordinating conjunction | | subConjCount | 1 | | totalSentences | 52 | | matches | | 0 | "Whether the slow closing of" |
| | ratio | 0.019 | |
| 15.31% | Technical jargon density | Target: ≤6% sentences with technical-jargon patterns | | analyzedSentences | 28 | | technicalSentenceCount | 5 | | matches | | 0 | "Rory was halfway through her second gin when the door opened and let in the cold, and with it a woman in a camel coat who stood for a moment blinking in the dim…" | | 1 | "Silas was down at the far end of the bar polishing glasses that were already clean, and Rory felt rather than saw his attention shift — that small, calibrated s…" | | 2 | "There were lines at the corners of her eyes that hadn't been there at twenty-two, when they'd shared a mildewed flat in Cathays and a bottle of something awful …" | | 3 | "Watched her rearrange it, try to fit it into the shape of the Rory she'd known — the Rory who'd been headed for the Bar, who'd argued seminar leaders into corne…" | | 4 | "Rory looked at the map on the wall opposite, some nineteenth-century survey of a coastline that had probably changed since." |
| |
| 100.00% | Useless dialogue additions | Target: ≤5% dialogue tags with trailing filler fragments | | totalTags | 23 | | uselessAdditionCount | 0 | | matches | (empty) | |
| 100.00% | Dialogue tag variety (said vs. fancy) | Target: ≤10% fancy dialogue tags | | totalTags | 14 | | fancyCount | 0 | | fancyTags | (empty) | | dialogueSentences | 52 | | tagDensity | 0.269 | | leniency | 0.538 | | rawRatio | 0 | | effectiveRatio | 0 | |