| 100.00% | Adverbs in dialogue tags | Target: ≤10% dialogue tags with adverbs | | totalTags | 20 | | adverbTagCount | 1 | | adverbTags | | 0 | "She stepped back [back]" |
| | dialogueSentences | 47 | | tagDensity | 0.426 | | leniency | 0.851 | | rawRatio | 0.05 | | effectiveRatio | 0.043 | |
| 81.66% | AI-ism adverb frequency | Target: <2% AI-ism adverbs (58 tracked) | | wordCount | 1636 | | totalAiIsmAdverbs | 6 | | found | | 0 | | | 1 | | | 2 | | adverb | "deliberately" | | count | 1 |
| | 3 | |
| | highlights | | 0 | "really" | | 1 | "precisely" | | 2 | "deliberately" | | 3 | "slowly" |
| |
| 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) | |
| 87.78% | AI-ism word frequency | Target: <2% AI-ism words (290 tracked) | | wordCount | 1636 | | totalAiIsms | 4 | | found | | | highlights | | 0 | "eyebrow" | | 1 | "calculated" | | 2 | "warmth" |
| |
| 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 | 59 | | matches | (empty) | |
| 46.00% | Filter word density | Target: ≤3% sentences with filter/hedge words | | filterCount | 2 | | hedgeCount | 2 | | narrationSentences | 59 | | filterMatches | | | hedgeMatches | | |
| 100.00% | Gibberish response detection | Target: ≤1% gibberish-like sentences (hard fail if a sentence exceeds 800 words) | | analyzedSentences | 85 | | gibberishSentences | 0 | | adjustedGibberishSentences | 0 | | longSentenceCount | 0 | | runOnParagraphCount | 0 | | giantParagraphCount | 0 | | wordSaladCount | 0 | | repetitionLoopCount | 0 | | controlTokenCount | 0 | | repeatedSegmentCount | 0 | | maxSentenceWordsSeen | 98 | | ratio | 0 | | matches | (empty) | |
| 100.00% | Markdown formatting overuse | Target: ≤5% words in markdown formatting | | markdownSpans | 0 | | markdownWords | 0 | | totalWords | 1649 | | ratio | 0 | | matches | (empty) | |
| 100.00% | Missing dialogue indicators (quotation marks) | Target: ≤10% speech attributions without quotation marks | | totalAttributions | 25 | | unquotedAttributions | 0 | | matches | (empty) | |
| 100.00% | Name drop frequency | Target: ≤1.0 per-name mentions per 100 words | | totalMentions | 28 | | wordCount | 1125 | | uniqueNames | 12 | | maxNameDensity | 0.71 | | worstName | "Lucien" | | maxWindowNameDensity | 2 | | worstWindowName | "Lucien" | | discoveredNames | | Rory | 5 | | London | 2 | | Moreau | 3 | | Brick | 1 | | Lane | 1 | | Lucien | 8 | | Wapping | 1 | | Eva | 3 | | Sumerian | 1 | | Portugal | 1 | | Rotherhithe | 1 | | East | 1 |
| | persons | | 0 | "Rory" | | 1 | "Moreau" | | 2 | "Lucien" | | 3 | "Eva" |
| | places | | 0 | "London" | | 1 | "Brick" | | 2 | "Lane" | | 3 | "Wapping" | | 4 | "Portugal" | | 5 | "Rotherhithe" | | 6 | "East" |
| | globalScore | 1 | | windowScore | 1 | |
| 94.44% | Narrator intent-glossing | Target: ≤2% narration sentences with intent-glossing patterns | | analyzedSentences | 45 | | glossingSentenceCount | 1 | | matches | | 0 | "as if reading something there, and he did not look up at the peephole, which meant he knew she was watching and was letting her decide" |
| |
| 100.00% | "Not X but Y" pattern overuse | Target: ≤1 "not X but Y" per 1000 words | | totalMatches | 0 | | per1kWords | 0 | | wordCount | 1649 | | matches | (empty) | |
| 100.00% | Overuse of "that" (subordinate clause padding) | Target: ≤2% sentences with "that" clauses | | thatCount | 1 | | totalSentences | 85 | | matches | | |
| 100.00% | Paragraph length variance | Target: CV ≥0.5 for paragraph word counts | | totalParagraphs | 39 | | mean | 42.28 | | std | 38.16 | | cv | 0.903 | | sampleLengths | | 0 | 46 | | 1 | 91 | | 2 | 18 | | 3 | 45 | | 4 | 47 | | 5 | 17 | | 6 | 39 | | 7 | 26 | | 8 | 12 | | 9 | 125 | | 10 | 6 | | 11 | 50 | | 12 | 21 | | 13 | 51 | | 14 | 69 | | 15 | 8 | | 16 | 76 | | 17 | 6 | | 18 | 51 | | 19 | 9 | | 20 | 82 | | 21 | 28 | | 22 | 160 | | 23 | 13 | | 24 | 89 | | 25 | 2 | | 26 | 4 | | 27 | 94 | | 28 | 7 | | 29 | 99 | | 30 | 8 | | 31 | 1 | | 32 | 14 | | 33 | 62 | | 34 | 42 | | 35 | 88 | | 36 | 28 | | 37 | 9 | | 38 | 6 |
| |
| 93.37% | Passive voice overuse | Target: ≤2% passive sentences | | passiveCount | 2 | | totalSentences | 59 | | matches | | 0 | "was gone" | | 1 | "was calculated" |
| |
| 0.00% | Past progressive (was/were + -ing) overuse | Target: ≤2% past progressive verbs | | pastProgressiveCount | 7 | | totalVerbs | 186 | | matches | | 0 | "was looking" | | 1 | "was watching" | | 2 | "was letting" | | 3 | "was doing" | | 4 | "was coming " | | 5 | "was already kneeling" | | 6 | "was knitting" |
| |
| 0.00% | Em-dash & semicolon overuse | Target: ≤2% sentences with em-dashes/semicolons | | emDashCount | 13 | | semicolonCount | 2 | | flaggedSentences | 10 | | totalSentences | 85 | | ratio | 0.118 | | matches | | 0 | "Nobody else in London knocked like that — precise, unhurried, as though the door owed him money and he intended to collect politely." | | 1 | "That was the whole problem with Lucien in a sentence, really — her hands always went ahead of her head." | | 2 | "\"I'm afraid of your landlady's security cameras, and of your landlord's opinions, and mostly of the fact that you haven't answered any of my messages in five weeks, so I had to resort to standing in the rain outside a flat belonging to a woman who has hexed me twice.\" He set the cane against the wall with the care of a man laying down a weapon — which it was; she'd seen the blade come out of it once, in a basement in Wapping, and never quite forgotten the sound it made — and held out the paper bag." | | 3 | "Their fingers didn't touch, which she suspected was deliberate on his part — Lucien was a man who calculated even the margins of a gesture." | | 4 | "She turned to face him, arms crossed, and made herself hold his mismatched gaze — one eye amber, one black, and she'd once thought the black one was the dangerous one until she'd learned better." | | 5 | "The job in Rotherhithe — the warehouse, the thing they'd put down together, the way she'd taken a cut across the forearm doing what he should have warned her was coming — he'd known the mark had hired a second party." | | 6 | "\"Cleared. That's what October was. Not checking your routes. Paying it. The last payment cleared on Tuesday.\" He reached for the cane, levering himself up with visible effort, and she saw now what she should have seen at the door — the pallor under the rain-flush, the way his breathing sat shallow." | | 7 | "\"So. You have the whole of it. I'll thank you to tell Eva she needn't renew the hexes; the second one still itches when it rains.\"" | | 8 | "His free hand came up — slowly, telegraphing every inch, the way you'd move around something wild — and tucked a strand of black hair behind her ear." | | 9 | "\"That's the problem. You never ask. You triangulate, you trade, you pay debts in secret and show up at midnight soaked through with a dinner you bought out of pity.\" She took his hand — the uninjured one — and held it against her own cheek before her head could file an objection." |
| |
| 100.00% | Purple prose (modifier overload) | Target: <4% adverbs, <2% -ly adverbs, no adj stacking | | wordCount | 1116 | | adjectiveStacks | 0 | | stackExamples | (empty) | | adverbCount | 40 | | adverbRatio | 0.035842293906810034 | | lyAdverbCount | 14 | | lyAdverbRatio | 0.012544802867383513 | |
| 100.00% | Repeated phrase echo | Target: ≤20% sentences with echoes (window: 2) | | totalSentences | 85 | | echoCount | 0 | | echoWords | (empty) | |
| 100.00% | Sentence length variance | Target: CV ≥0.4 for sentence word counts | | totalSentences | 85 | | mean | 19.4 | | std | 17.94 | | cv | 0.925 | | sampleLengths | | 0 | 23 | | 1 | 23 | | 2 | 3 | | 3 | 41 | | 4 | 10 | | 5 | 37 | | 6 | 18 | | 7 | 17 | | 8 | 8 | | 9 | 20 | | 10 | 3 | | 11 | 2 | | 12 | 42 | | 13 | 14 | | 14 | 3 | | 15 | 23 | | 16 | 16 | | 17 | 26 | | 18 | 12 | | 19 | 100 | | 20 | 25 | | 21 | 6 | | 22 | 16 | | 23 | 25 | | 24 | 9 | | 25 | 21 | | 26 | 26 | | 27 | 20 | | 28 | 5 | | 29 | 58 | | 30 | 11 | | 31 | 8 | | 32 | 14 | | 33 | 8 | | 34 | 10 | | 35 | 35 | | 36 | 9 | | 37 | 3 | | 38 | 3 | | 39 | 47 | | 40 | 4 | | 41 | 9 | | 42 | 37 | | 43 | 45 | | 44 | 8 | | 45 | 18 | | 46 | 2 | | 47 | 3 | | 48 | 4 | | 49 | 41 |
| |
| 72.16% | Sentence opener variety | Target: ≥60% unique sentence openers | | consecutiveRepeats | 7 | | diversityRatio | 0.4823529411764706 | | totalSentences | 85 | | uniqueOpeners | 41 | |
| 0.00% | Adverb-first sentence starts | Target: ≥3% sentences starting with an adverb | | adverbCount | 0 | | totalSentences | 52 | | matches | (empty) | | ratio | 0 | |
| 0.00% | Pronoun-first sentence starts | Target: ≤30% sentences starting with a pronoun | | pronounCount | 29 | | totalSentences | 52 | | matches | | 0 | "She looked anyway." | | 1 | "His charcoal suit had darkened" | | 2 | "He was looking down at" | | 3 | "She had decided, the last" | | 4 | "Her hands had gone ahead" | | 5 | "She opened the door on" | | 6 | "His voice was rougher than" | | 7 | "She stepped back to let" | | 8 | "He set the cane against" | | 9 | "Their fingers didn't touch, which" | | 10 | "She'd noticed it months ago" | | 11 | "She put the bag on" | | 12 | "She turned to face him," | | 13 | "He lowered himself onto Eva's" | | 14 | "He tipped his head back" | | 15 | "She sat down on the" | | 16 | "He told her." | | 17 | "It took four minutes." | | 18 | "He'd known, and he'd let" | | 19 | "He'd weighed her safety against" |
| | ratio | 0.558 | |
| 0.00% | Subject-first sentence starts | Target: ≤72% sentences starting with a subject | | subjectCount | 48 | | totalSentences | 52 | | matches | | 0 | "The knock came at half" | | 1 | "Nobody else in London knocked" | | 2 | "She looked anyway." | | 3 | "Lucien Moreau stood in the" | | 4 | "His charcoal suit had darkened" | | 5 | "He was looking down at" | | 6 | "She had decided, the last" | | 7 | "Ptolemy wound around her ankles," | | 8 | "Her hands had gone ahead" | | 9 | "That was the whole problem" | | 10 | "The second bolt." | | 11 | "She opened the door on" | | 12 | "His voice was rougher than" | | 13 | "She stepped back to let" | | 14 | "Lucien said, shrugging out of" | | 15 | "He set the cane against" | | 16 | "Rory took the bag" | | 17 | "Their fingers didn't touch, which" | | 18 | "She'd noticed it months ago" | | 19 | "She put the bag on" |
| | ratio | 0.923 | |
| 0.00% | Subordinate conjunction sentence starts | Target: ≥2% sentences starting with a subordinating conjunction | | subConjCount | 0 | | totalSentences | 52 | | matches | (empty) | | ratio | 0 | |
| 85.71% | Technical jargon density | Target: ≤6% sentences with technical-jargon patterns | | analyzedSentences | 25 | | technicalSentenceCount | 2 | | matches | | 0 | "He was looking down at the worn carpet of the landing as if reading something there, and he did not look up at the peephole, which meant he knew she was watchin…" | | 1 | "She worked the buttons of his shirt with steady fingers and did not let herself notice the warmth of him, the old crescent scar on her own wrist catching the la…" |
| |
| 100.00% | Useless dialogue additions | Target: ≤5% dialogue tags with trailing filler fragments | | totalTags | 20 | | uselessAdditionCount | 0 | | matches | (empty) | |
| 100.00% | Dialogue tag variety (said vs. fancy) | Target: ≤10% fancy dialogue tags | | totalTags | 8 | | fancyCount | 2 | | fancyTags | | 0 | "For a man who spoke four languages and negotiated between creatures that considered honesty a hereditary weakness (speak negotiate)" | | 1 | "he agreed (agree)" |
| | dialogueSentences | 47 | | tagDensity | 0.17 | | leniency | 0.34 | | rawRatio | 0.25 | | effectiveRatio | 0.085 | |