| 75.00% | Adverbs in dialogue tags | Target: ≤10% dialogue tags with adverbs | | totalTags | 6 | | adverbTagCount | 1 | | adverbTags | | 0 | "she said quietly [quietly]" |
| | dialogueSentences | 16 | | tagDensity | 0.375 | | leniency | 0.75 | | rawRatio | 0.167 | | effectiveRatio | 0.125 | |
| 100.00% | AI-ism adverb frequency | Target: <2% AI-ism adverbs (58 tracked) | | wordCount | 1120 | | totalAiIsmAdverbs | 0 | | found | (empty) | | highlights | (empty) | |
| 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) | |
| 50.89% | AI-ism word frequency | Target: <2% AI-ism words (290 tracked) | | wordCount | 1120 | | totalAiIsms | 11 | | found | | | highlights | | 0 | "gloom" | | 1 | "measured" | | 2 | "flickered" | | 3 | "traced" | | 4 | "weight" | | 5 | "crystalline" | | 6 | "etch" | | 7 | "pulse" |
| |
| 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 | 62 | | matches | (empty) | |
| 100.00% | Filter word density | Target: ≤3% sentences with filter/hedge words | | filterCount | 0 | | hedgeCount | 1 | | narrationSentences | 62 | | filterMatches | (empty) | | hedgeMatches | | |
| 100.00% | Gibberish response detection | Target: ≤1% gibberish-like sentences (hard fail if a sentence exceeds 800 words) | | analyzedSentences | 72 | | gibberishSentences | 0 | | adjustedGibberishSentences | 0 | | longSentenceCount | 0 | | runOnParagraphCount | 0 | | giantParagraphCount | 0 | | wordSaladCount | 0 | | repetitionLoopCount | 0 | | controlTokenCount | 0 | | repeatedSegmentCount | 0 | | maxSentenceWordsSeen | 66 | | ratio | 0 | | matches | (empty) | |
| 100.00% | Markdown formatting overuse | Target: ≤5% words in markdown formatting | | markdownSpans | 0 | | markdownWords | 0 | | totalWords | 1115 | | ratio | 0 | | matches | (empty) | |
| 100.00% | Missing dialogue indicators (quotation marks) | Target: ≤10% speech attributions without quotation marks | | totalAttributions | 11 | | unquotedAttributions | 0 | | matches | (empty) | |
| 100.00% | Name drop frequency | Target: ≤1.0 per-name mentions per 100 words | | totalMentions | 23 | | wordCount | 797 | | uniqueNames | 12 | | maxNameDensity | 0.88 | | worstName | "Harlow" | | maxWindowNameDensity | 1.5 | | worstWindowName | "Harlow" | | discoveredNames | | Harlow | 7 | | Quinn | 1 | | Camden | 2 | | Hackney | 1 | | Superintendent | 1 | | Eva | 3 | | British | 1 | | Museum | 1 | | Constable | 3 | | March | 1 | | Northern | 1 | | Line | 1 |
| | persons | | 0 | "Harlow" | | 1 | "Quinn" | | 2 | "Superintendent" | | 3 | "Eva" | | 4 | "Museum" | | 5 | "Constable" |
| | places | | | globalScore | 1 | | windowScore | 1 | |
| 93.18% | Narrator intent-glossing | Target: ≤2% narration sentences with intent-glossing patterns | | analyzedSentences | 44 | | glossingSentenceCount | 1 | | matches | | 0 | "spiral that seemed to draw the eye toward the compass" |
| |
| 100.00% | "Not X but Y" pattern overuse | Target: ≤1 "not X but Y" per 1000 words | | totalMatches | 1 | | per1kWords | 0.897 | | wordCount | 1115 | | matches | | 0 | "not the cheap construction chalk used by graffiti crews but something grainier, almost crystalline" |
| |
| 100.00% | Overuse of "that" (subordinate clause padding) | Target: ≤2% sentences with "that" clauses | | thatCount | 1 | | totalSentences | 72 | | matches | | |
| 100.00% | Paragraph length variance | Target: CV ≥0.5 for paragraph word counts | | totalParagraphs | 20 | | mean | 55.75 | | std | 38.3 | | cv | 0.687 | | sampleLengths | | 0 | 93 | | 1 | 76 | | 2 | 18 | | 3 | 93 | | 4 | 98 | | 5 | 57 | | 6 | 4 | | 7 | 40 | | 8 | 3 | | 9 | 26 | | 10 | 102 | | 11 | 58 | | 12 | 22 | | 13 | 11 | | 14 | 94 | | 15 | 39 | | 16 | 49 | | 17 | 18 | | 18 | 71 | | 19 | 143 |
| |
| 99.60% | Passive voice overuse | Target: ≤2% passive sentences | | passiveCount | 1 | | totalSentences | 62 | | matches | | 0 | "were cracked" | | 1 | "been chalked" |
| |
| 100.00% | Past progressive (was/were + -ing) overuse | Target: ≤2% past progressive verbs | | pastProgressiveCount | 1 | | totalVerbs | 127 | | matches | | |
| 0.00% | Em-dash & semicolon overuse | Target: ≤2% sentences with em-dashes/semicolons | | emDashCount | 5 | | semicolonCount | 1 | | flaggedSentences | 5 | | totalSentences | 72 | | ratio | 0.069 | | matches | | 0 | "The air thickened the deeper she went—damp brick, stale electricity, and something sharper, like scorched herbs." | | 1 | "Halfway down the final flight an arc of blue-white light flickered from below, then steadied; someone had rigged portable floods." | | 2 | "Another officer—young, new name-tape, easy name to forget—stood by the body." | | 3 | "The symbols were nothing she recognized from gang graffiti files, yet fractions of them appeared in the margins of an occult text Eva had once left open on her kitchen table—Eva who worked nights in the British Museum stacks and who’d once muttered that markets moved every full moon and that bone tokens bought more than antiques down here." | | 4 | "When she pressed, the step moved—fractionally, but enough to let a sliver of darker air escape." |
| |
| 100.00% | Purple prose (modifier overload) | Target: <4% adverbs, <2% -ly adverbs, no adj stacking | | wordCount | 814 | | adjectiveStacks | 0 | | stackExamples | (empty) | | adverbCount | 25 | | adverbRatio | 0.030712530712530713 | | lyAdverbCount | 5 | | lyAdverbRatio | 0.006142506142506142 | |
| 100.00% | Repeated phrase echo | Target: ≤20% sentences with echoes (window: 2) | | totalSentences | 72 | | echoCount | 0 | | echoWords | (empty) | |
| 100.00% | Sentence length variance | Target: CV ≥0.4 for sentence word counts | | totalSentences | 72 | | mean | 15.49 | | std | 13.16 | | cv | 0.85 | | sampleLengths | | 0 | 33 | | 1 | 5 | | 2 | 16 | | 3 | 19 | | 4 | 20 | | 5 | 6 | | 6 | 24 | | 7 | 20 | | 8 | 11 | | 9 | 15 | | 10 | 7 | | 11 | 11 | | 12 | 2 | | 13 | 62 | | 14 | 29 | | 15 | 2 | | 16 | 8 | | 17 | 20 | | 18 | 12 | | 19 | 3 | | 20 | 2 | | 21 | 12 | | 22 | 20 | | 23 | 5 | | 24 | 14 | | 25 | 15 | | 26 | 18 | | 27 | 15 | | 28 | 9 | | 29 | 4 | | 30 | 4 | | 31 | 36 | | 32 | 3 | | 33 | 26 | | 34 | 2 | | 35 | 10 | | 36 | 21 | | 37 | 10 | | 38 | 59 | | 39 | 8 | | 40 | 5 | | 41 | 21 | | 42 | 7 | | 43 | 12 | | 44 | 5 | | 45 | 22 | | 46 | 7 | | 47 | 4 | | 48 | 16 | | 49 | 14 |
| |
| 79.17% | Sentence opener variety | Target: ≥60% unique sentence openers | | consecutiveRepeats | 3 | | diversityRatio | 0.5 | | totalSentences | 72 | | uniqueOpeners | 36 | |
| 61.73% | Adverb-first sentence starts | Target: ≥3% sentences starting with an adverb | | adverbCount | 1 | | totalSentences | 54 | | matches | | 0 | "Somewhere above, the full moon" |
| | ratio | 0.019 | |
| 86.67% | Pronoun-first sentence starts | Target: ≤30% sentences starting with a pronoun | | pronounCount | 18 | | totalSentences | 54 | | matches | | 0 | "She moved with the same" | | 1 | "She emerged onto the eastbound" | | 2 | "He looked up and started" | | 3 | "He pointed at a small" | | 4 | "She lifted the sheet corner" | | 5 | "She bent closer and caught" | | 6 | "She recorded the coincidence anyway," | | 7 | "She moved two metres along" | | 8 | "She pocketed it, aware of" | | 9 | "He cleared his throat." | | 10 | "She walked to the wall" | | 11 | "She scraped a sample onto" | | 12 | "She turned to the constable." | | 13 | "She moved the floodlight so" | | 14 | "Its patina glinted verdigris under" | | 15 | "she said quietly" | | 16 | "She returned the sheet to" | | 17 | "She would call Eva tonight" |
| | ratio | 0.333 | |
| 89.63% | Subject-first sentence starts | Target: ≤72% sentences starting with a subject | | subjectCount | 40 | | totalSentences | 54 | | matches | | 0 | "Detective Harlow Quinn descended the" | | 1 | "The air thickened the deeper" | | 2 | "She moved with the same" | | 3 | "Halfway down the final flight" | | 4 | "She emerged onto the eastbound" | | 5 | "The tiles were cracked, the" | | 6 | "Another officer—young, new name-tape, easy" | | 7 | "He looked up and started" | | 8 | "He pointed at a small" | | 9 | "She lifted the sheet corner" | | 10 | "The deceased’s skin was grey-blue" | | 11 | "She bent closer and caught" | | 12 | "The same combination that the" | | 13 | "Coincidence, her Superintendent would say." | | 14 | "She recorded the coincidence anyway," | | 15 | "She moved two metres along" | | 16 | "The chalkings repeated every fourth" | | 17 | "She pocketed it, aware of" | | 18 | "He cleared his throat." | | 19 | "She walked to the wall" |
| | ratio | 0.741 | |
| 0.00% | Subordinate conjunction sentence starts | Target: ≥2% sentences starting with a subordinating conjunction | | subConjCount | 0 | | totalSentences | 54 | | matches | (empty) | | ratio | 0 | |
| 100.00% | Technical jargon density | Target: ≤6% sentences with technical-jargon patterns | | analyzedSentences | 34 | | technicalSentenceCount | 2 | | matches | | 0 | "At the centre of the platform a shape lay under a white sheet that was already darkening at the edges." | | 1 | "For now she walked the platform once more, counting tile spirals under the flood’s glare, building the next question she would ask the dead man’s body when the …" |
| |
| 100.00% | Useless dialogue additions | Target: ≤5% dialogue tags with trailing filler fragments | | totalTags | 6 | | uselessAdditionCount | 0 | | matches | (empty) | |
| 100.00% | Dialogue tag variety (said vs. fancy) | Target: ≤10% fancy dialogue tags | | totalTags | 4 | | fancyCount | 0 | | fancyTags | (empty) | | dialogueSentences | 16 | | tagDensity | 0.25 | | leniency | 0.5 | | rawRatio | 0 | | effectiveRatio | 0 | |