| 100.00% | Adverbs in dialogue tags | Target: ≤10% dialogue tags with adverbs | | totalTags | 22 | | adverbTagCount | 0 | | adverbTags | (empty) | | dialogueSentences | 67 | | tagDensity | 0.328 | | leniency | 0.657 | | rawRatio | 0 | | effectiveRatio | 0 | |
| 84.24% | AI-ism adverb frequency | Target: <2% AI-ism adverbs (58 tracked) | | wordCount | 1269 | | totalAiIsmAdverbs | 4 | | found | | | highlights | | 0 | "slightly" | | 1 | "quickly" | | 2 | "very" |
| |
| 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) | |
| 92.12% | AI-ism word frequency | Target: <2% AI-ism words (290 tracked) | | wordCount | 1269 | | 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 | 49 | | matches | (empty) | |
| 84.55% | Filter word density | Target: ≤3% sentences with filter/hedge words | | filterCount | 0 | | hedgeCount | 2 | | narrationSentences | 49 | | filterMatches | (empty) | | hedgeMatches | | |
| 100.00% | Gibberish response detection | Target: ≤1% gibberish-like sentences (hard fail if a sentence exceeds 800 words) | | analyzedSentences | 94 | | gibberishSentences | 0 | | adjustedGibberishSentences | 0 | | longSentenceCount | 0 | | runOnParagraphCount | 0 | | giantParagraphCount | 0 | | wordSaladCount | 0 | | repetitionLoopCount | 0 | | controlTokenCount | 0 | | repeatedSegmentCount | 0 | | maxSentenceWordsSeen | 69 | | ratio | 0 | | matches | (empty) | |
| 100.00% | Markdown formatting overuse | Target: ≤5% words in markdown formatting | | markdownSpans | 0 | | markdownWords | 0 | | totalWords | 1271 | | ratio | 0 | | matches | (empty) | |
| 100.00% | Missing dialogue indicators (quotation marks) | Target: ≤10% speech attributions without quotation marks | | totalAttributions | 22 | | unquotedAttributions | 0 | | matches | (empty) | |
| 97.37% | Name drop frequency | Target: ≤1.0 per-name mentions per 100 words | | totalMentions | 24 | | wordCount | 665 | | uniqueNames | 10 | | maxNameDensity | 1.05 | | worstName | "Rory" | | maxWindowNameDensity | 1.5 | | worstWindowName | "Rory" | | discoveredNames | | Rory | 7 | | Moreau | 1 | | Ptolemy | 3 | | Lucien | 4 | | Water | 1 | | Yu-Fei | 1 | | Eva | 4 | | Bermondsey | 1 | | Silence | 1 | | Rain | 1 |
| | persons | | 0 | "Rory" | | 1 | "Moreau" | | 2 | "Ptolemy" | | 3 | "Lucien" | | 4 | "Yu-Fei" | | 5 | "Eva" | | 6 | "Bermondsey" | | 7 | "Rain" |
| | places | (empty) | | globalScore | 0.974 | | windowScore | 1 | |
| 66.67% | Narrator intent-glossing | Target: ≤2% narration sentences with intent-glossing patterns | | analyzedSentences | 30 | | glossingSentenceCount | 1 | | matches | | 0 | "felt like a small victory she'd remembe" |
| |
| 100.00% | "Not X but Y" pattern overuse | Target: ≤1 "not X but Y" per 1000 words | | totalMatches | 0 | | per1kWords | 0 | | wordCount | 1271 | | matches | (empty) | |
| 100.00% | Overuse of "that" (subordinate clause padding) | Target: ≤2% sentences with "that" clauses | | thatCount | 1 | | totalSentences | 94 | | matches | | |
| 100.00% | Paragraph length variance | Target: CV ≥0.5 for paragraph word counts | | totalParagraphs | 63 | | mean | 20.17 | | std | 21.92 | | cv | 1.087 | | sampleLengths | | 0 | 20 | | 1 | 45 | | 2 | 4 | | 3 | 18 | | 4 | 12 | | 5 | 6 | | 6 | 40 | | 7 | 19 | | 8 | 6 | | 9 | 32 | | 10 | 52 | | 11 | 3 | | 12 | 73 | | 13 | 11 | | 14 | 7 | | 15 | 41 | | 16 | 4 | | 17 | 3 | | 18 | 12 | | 19 | 64 | | 20 | 5 | | 21 | 2 | | 22 | 31 | | 23 | 1 | | 24 | 1 | | 25 | 30 | | 26 | 40 | | 27 | 4 | | 28 | 17 | | 29 | 19 | | 30 | 17 | | 31 | 3 | | 32 | 58 | | 33 | 5 | | 34 | 3 | | 35 | 76 | | 36 | 8 | | 37 | 12 | | 38 | 1 | | 39 | 4 | | 40 | 91 | | 41 | 5 | | 42 | 21 | | 43 | 17 | | 44 | 1 | | 45 | 6 | | 46 | 3 | | 47 | 3 | | 48 | 67 | | 49 | 4 |
| |
| 98.10% | Passive voice overuse | Target: ≤2% passive sentences | | passiveCount | 1 | | totalSentences | 49 | | matches | | |
| 100.00% | Past progressive (was/were + -ing) overuse | Target: ≤2% past progressive verbs | | pastProgressiveCount | 0 | | totalVerbs | 115 | | matches | (empty) | |
| 21.28% | Em-dash & semicolon overuse | Target: ≤2% sentences with em-dashes/semicolons | | emDashCount | 4 | | semicolonCount | 0 | | flaggedSentences | 4 | | totalSentences | 94 | | ratio | 0.043 | | matches | | 0 | "He came in the way he came into everywhere — as though the room had been arranged for him and someone had done a slightly poor job of it." | | 1 | "She watched the element flush orange and did not turn around, because the mention of Bermondsey went through her like a nail through a plank — the warehouse, the rain, his hand pressed flat against her sternum to keep her behind him, the way he'd said her name once, low, and then hadn't said it again for four months." | | 2 | "\"Come in here and be charming about it. You had a phone. You had my number. You have—\" she turned, \"—you have people who deliver messages for you. Actual employed humans.\"" | | 3 | "\"That is my profession.\" Something moved in his face — a crack in the porcelain, quickly plastered." |
| |
| 100.00% | Purple prose (modifier overload) | Target: <4% adverbs, <2% -ly adverbs, no adj stacking | | wordCount | 724 | | adjectiveStacks | 0 | | stackExamples | (empty) | | adverbCount | 19 | | adverbRatio | 0.026243093922651933 | | lyAdverbCount | 3 | | lyAdverbRatio | 0.004143646408839779 | |
| 100.00% | Repeated phrase echo | Target: ≤20% sentences with echoes (window: 2) | | totalSentences | 94 | | echoCount | 0 | | echoWords | (empty) | |
| 100.00% | Sentence length variance | Target: CV ≥0.4 for sentence word counts | | totalSentences | 94 | | mean | 13.52 | | std | 13.81 | | cv | 1.022 | | sampleLengths | | 0 | 20 | | 1 | 45 | | 2 | 4 | | 3 | 11 | | 4 | 7 | | 5 | 12 | | 6 | 6 | | 7 | 19 | | 8 | 21 | | 9 | 19 | | 10 | 6 | | 11 | 18 | | 12 | 12 | | 13 | 2 | | 14 | 5 | | 15 | 47 | | 16 | 3 | | 17 | 29 | | 18 | 29 | | 19 | 15 | | 20 | 5 | | 21 | 6 | | 22 | 7 | | 23 | 19 | | 24 | 22 | | 25 | 4 | | 26 | 3 | | 27 | 12 | | 28 | 5 | | 29 | 59 | | 30 | 5 | | 31 | 2 | | 32 | 31 | | 33 | 1 | | 34 | 1 | | 35 | 10 | | 36 | 20 | | 37 | 16 | | 38 | 24 | | 39 | 4 | | 40 | 8 | | 41 | 9 | | 42 | 19 | | 43 | 1 | | 44 | 6 | | 45 | 10 | | 46 | 3 | | 47 | 14 | | 48 | 44 | | 49 | 5 |
| |
| 80.85% | Sentence opener variety | Target: ≥60% unique sentence openers | | consecutiveRepeats | 4 | | diversityRatio | 0.5106382978723404 | | totalSentences | 94 | | uniqueOpeners | 48 | |
| 0.00% | Adverb-first sentence starts | Target: ≥3% sentences starting with an adverb | | adverbCount | 0 | | totalSentences | 38 | | matches | (empty) | | ratio | 0 | |
| 30.53% | Pronoun-first sentence starts | Target: ≤30% sentences starting with a pronoun | | pronounCount | 18 | | totalSentences | 38 | | matches | | 0 | "He tipped his head, the" | | 1 | "He didn't move to come" | | 2 | "She should have said no." | | 3 | "She stepped back." | | 4 | "He came in the way" | | 5 | "He looked at all of" | | 6 | "She watched the element flush" | | 7 | "she turned, \"—you have people" | | 8 | "He unbuttoned his jacket, and" | | 9 | "He looked at her steadily" | | 10 | "He came a step closer," | | 11 | "His voice dropped" | | 12 | "Her hand was steady, which" | | 13 | "She brought the mugs over" | | 14 | "She felt it up her" | | 15 | "She stepped back and sat" | | 16 | "He looked at her over" | | 17 | "He set the mug on" |
| | ratio | 0.474 | |
| 0.00% | Subject-first sentence starts | Target: ≤72% sentences starting with a subject | | subjectCount | 35 | | totalSentences | 38 | | matches | | 0 | "The third deadbolt stuck, the" | | 1 | "Lucien Moreau stood on the" | | 2 | "Rory kept her hand on" | | 3 | "He tipped his head, the" | | 4 | "Ptolemy shot between her ankles," | | 5 | "He didn't move to come" | | 6 | "Water ran off the sleeve" | | 7 | "She should have said no." | | 8 | "She stepped back." | | 9 | "He came in the way" | | 10 | "Books stacked three deep on" | | 11 | "He looked at all of" | | 12 | "Rory crossed to the kitchenette," | | 13 | "The kettle began to tick." | | 14 | "She watched the element flush" | | 15 | "she turned, \"—you have people" | | 16 | "Lucien set the cane against" | | 17 | "He unbuttoned his jacket, and" | | 18 | "He looked at her steadily" | | 19 | "The kettle climbed toward its" |
| | ratio | 0.921 | |
| 0.00% | Subordinate conjunction sentence starts | Target: ≥2% sentences starting with a subordinating conjunction | | subConjCount | 0 | | totalSentences | 38 | | matches | (empty) | | ratio | 0 | |
| 16.81% | Technical jargon density | Target: ≤6% sentences with technical-jargon patterns | | analyzedSentences | 17 | | technicalSentenceCount | 3 | | matches | | 0 | "Four months of practising that word in her head, rehearsing it in the shower and on the number 8 bus and over cartons of cooling chow mein in the back of Yu-Fei…" | | 1 | "She felt it up her arm, into her jaw, that stupid animal recognition that had never once asked her permission." | | 2 | "Rory looked at the red string on the wall, at Ptolemy's yellow eyes glowing under the radiator, at the man standing in the middle of Eva's paper wreckage with h…" |
| |
| 100.00% | Useless dialogue additions | Target: ≤5% dialogue tags with trailing filler fragments | | totalTags | 22 | | uselessAdditionCount | 0 | | matches | (empty) | |
| 100.00% | Dialogue tag variety (said vs. fancy) | Target: ≤10% fancy dialogue tags | | totalTags | 10 | | fancyCount | 0 | | fancyTags | (empty) | | dialogueSentences | 67 | | tagDensity | 0.149 | | leniency | 0.299 | | rawRatio | 0 | | effectiveRatio | 0 | |