| 100.00% | Adverbs in dialogue tags | Target: ≤10% dialogue tags with adverbs | | totalTags | 22 | | adverbTagCount | 2 | | adverbTags | | 0 | "he said quietly [quietly]" | | 1 | "She turned around [around]" |
| | dialogueSentences | 59 | | tagDensity | 0.373 | | leniency | 0.746 | | rawRatio | 0.091 | | effectiveRatio | 0.068 | |
| 90.83% | AI-ism adverb frequency | Target: <2% AI-ism adverbs (58 tracked) | | wordCount | 1636 | | totalAiIsmAdverbs | 3 | | found | | | highlights | | 0 | "precisely" | | 1 | "very" | | 2 | "softly" |
| |
| 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) | |
| 84.72% | AI-ism word frequency | Target: <2% AI-ism words (290 tracked) | | wordCount | 1636 | | totalAiIsms | 5 | | found | | | highlights | | 0 | "stomach" | | 1 | "comforting" | | 2 | "silence" | | 3 | "eyebrow" | | 4 | "flickered" |
| |
| 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 | 79 | | matches | (empty) | |
| 100.00% | Filter word density | Target: ≤3% sentences with filter/hedge words | | filterCount | 1 | | hedgeCount | 0 | | narrationSentences | 79 | | filterMatches | | | hedgeMatches | (empty) | |
| 100.00% | Gibberish response detection | Target: ≤1% gibberish-like sentences (hard fail if a sentence exceeds 800 words) | | analyzedSentences | 111 | | gibberishSentences | 0 | | adjustedGibberishSentences | 0 | | longSentenceCount | 0 | | runOnParagraphCount | 0 | | giantParagraphCount | 0 | | wordSaladCount | 0 | | repetitionLoopCount | 0 | | controlTokenCount | 0 | | repeatedSegmentCount | 0 | | maxSentenceWordsSeen | 62 | | ratio | 0 | | matches | (empty) | |
| 100.00% | Markdown formatting overuse | Target: ≤5% words in markdown formatting | | markdownSpans | 3 | | markdownWords | 8 | | totalWords | 1649 | | ratio | 0.005 | | matches | | 0 | "thank you" | | 1 | "ah, there you are." | | 2 | "thank you" |
| |
| 100.00% | Missing dialogue indicators (quotation marks) | Target: ≤10% speech attributions without quotation marks | | totalAttributions | 30 | | unquotedAttributions | 0 | | matches | (empty) | |
| 100.00% | Name drop frequency | Target: ≤1.0 per-name mentions per 100 words | | totalMentions | 37 | | wordCount | 1019 | | uniqueNames | 13 | | maxNameDensity | 0.98 | | worstName | "Aurora" | | maxWindowNameDensity | 1.5 | | worstWindowName | "Aurora" | | discoveredNames | | Eva | 4 | | Post-it | 2 | | Sumerian | 1 | | Aurora | 10 | | Lucien | 7 | | Moreau | 3 | | Soho | 1 | | Ptolemy | 3 | | London | 1 | | Camden | 2 | | Armagnac | 1 | | Brick | 1 | | Lane | 1 |
| | persons | | 0 | "Eva" | | 1 | "Aurora" | | 2 | "Lucien" | | 3 | "Moreau" | | 4 | "Ptolemy" |
| | places | | 0 | "Soho" | | 1 | "London" | | 2 | "Brick" | | 3 | "Lane" |
| | globalScore | 1 | | windowScore | 1 | |
| 0.00% | Narrator intent-glossing | Target: ≤2% narration sentences with intent-glossing patterns | | analyzedSentences | 43 | | glossingSentenceCount | 5 | | matches | | 0 | "looked like he always looked, which was t" | | 1 | "not quite" | | 2 | "felt like the safest room in the world" | | 3 | "felt like a box with him in it" | | 4 | "felt like being read in a language you" |
| |
| 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) | |
| 46.55% | Overuse of "that" (subordinate clause padding) | Target: ≤2% sentences with "that" clauses | | thatCount | 4 | | totalSentences | 111 | | matches | | 0 | "knew that knock" | | 1 | "hated that she" | | 2 | "turned that attention" | | 3 | "chose that moment" |
| |
| 100.00% | Paragraph length variance | Target: CV ≥0.5 for paragraph word counts | | totalParagraphs | 63 | | mean | 26.17 | | std | 25.88 | | cv | 0.989 | | sampleLengths | | 0 | 50 | | 1 | 30 | | 2 | 4 | | 3 | 8 | | 4 | 14 | | 5 | 16 | | 6 | 3 | | 7 | 14 | | 8 | 43 | | 9 | 68 | | 10 | 3 | | 11 | 1 | | 12 | 3 | | 13 | 23 | | 14 | 73 | | 15 | 10 | | 16 | 5 | | 17 | 20 | | 18 | 61 | | 19 | 76 | | 20 | 15 | | 21 | 6 | | 22 | 3 | | 23 | 61 | | 24 | 5 | | 25 | 18 | | 26 | 20 | | 27 | 6 | | 28 | 68 | | 29 | 42 | | 30 | 10 | | 31 | 18 | | 32 | 89 | | 33 | 5 | | 34 | 26 | | 35 | 53 | | 36 | 6 | | 37 | 17 | | 38 | 48 | | 39 | 53 | | 40 | 6 | | 41 | 31 | | 42 | 36 | | 43 | 3 | | 44 | 4 | | 45 | 2 | | 46 | 65 | | 47 | 49 | | 48 | 14 | | 49 | 7 |
| |
| 100.00% | Passive voice overuse | Target: ≤2% passive sentences | | passiveCount | 1 | | totalSentences | 79 | | matches | | |
| 0.00% | Past progressive (was/were + -ing) overuse | Target: ≤2% past progressive verbs | | pastProgressiveCount | 6 | | totalVerbs | 183 | | matches | | 0 | "was still wrestling" | | 1 | "was thinking" | | 2 | "was already making" | | 3 | "was making" | | 4 | "were stinging" | | 5 | "were shaking" |
| |
| 0.00% | Em-dash & semicolon overuse | Target: ≤2% sentences with em-dashes/semicolons | | emDashCount | 12 | | semicolonCount | 2 | | flaggedSentences | 14 | | totalSentences | 111 | | ratio | 0.126 | | matches | | 0 | "So Aurora was still wrestling with it when the knock came again — three raps, unhurried, patient in a way that made her stomach drop before her brain caught up." | | 1 | "She thought about it seriously, the way you think about jumping off a bridge — a clean fantasy with no follow-through." | | 2 | "Something moved across his face — the amber eye caught the hall light and flared, and the black one gave her nothing at all, as usual." | | 3 | "She'd spent four months learning to read the amber one and had never once managed the other, and she'd told him that in a Soho basement at four in the morning, and he had laughed, and she had thought — well." | | 4 | "One bedroom above the curry house, and Eva's books had colonised every surface — the sofa, the table, the top of the fridge, three stacks on the floor forming a corridor you had to walk single-file." | | 5 | "\"You've been delivering noodles for Yu-Fei and taking the long route past Silas' bar so you don't have to pass my street.\" He set the cane against the wall — a small deliberate act, hands empty, look, no weapons, and she hated that she noticed." | | 6 | "He looked at her instead, and it was the looking that undid people — Lucien Moreau's whole trade was built on knowing more than he said, and when he turned that attention on you it felt like being read in a language you didn't speak." | | 7 | "\"I don't remember that,\" she said, which was a lie, and he knew it was a lie, and he let it stand — which was worse." | | 8 | "She watched it land — watched the amber eye go flat and dangerous and then, with an effort she could actually see, soften." | | 9 | "Lucien Moreau, fixer, information broker, four languages, the man who had once negotiated a ceasefire between two covens using nothing but a bottle of Armagnac and a rumour — stood in a cramped Brick Lane flat surrounded by other people's books and appeared, briefly, to have nothing to say." | | 10 | "\"You did.\" Now he did smile, and it was not the card-table smile; it was something younger and more foolish and it did terrible things to her." | | 11 | "\"Neither am I. I'm good at knowing things. This is the one subject in which I have no sources.\" He came closer — one step, then another, until she could smell rain on wool and something faintly of cedar, and the stack of books finally gave up and slid softly to the floor between them like a curtain coming down." | | 12 | "Her hands were shaking, which was new; she'd been calm in the warehouse, calm in Camden, calm with a knife an inch from her ribs." | | 13 | "Something flickered — surprise, then delight, then a kind of steadying." |
| |
| 90.04% | Purple prose (modifier overload) | Target: <4% adverbs, <2% -ly adverbs, no adj stacking | | wordCount | 1012 | | adjectiveStacks | 0 | | stackExamples | (empty) | | adverbCount | 52 | | adverbRatio | 0.05138339920948617 | | lyAdverbCount | 11 | | lyAdverbRatio | 0.010869565217391304 | |
| 100.00% | Repeated phrase echo | Target: ≤20% sentences with echoes (window: 2) | | totalSentences | 111 | | echoCount | 0 | | echoWords | (empty) | |
| 100.00% | Sentence length variance | Target: CV ≥0.4 for sentence word counts | | totalSentences | 111 | | mean | 14.86 | | std | 14.28 | | cv | 0.961 | | sampleLengths | | 0 | 8 | | 1 | 42 | | 2 | 30 | | 3 | 4 | | 4 | 8 | | 5 | 5 | | 6 | 9 | | 7 | 7 | | 8 | 9 | | 9 | 3 | | 10 | 14 | | 11 | 6 | | 12 | 21 | | 13 | 16 | | 14 | 10 | | 15 | 20 | | 16 | 21 | | 17 | 5 | | 18 | 5 | | 19 | 7 | | 20 | 3 | | 21 | 1 | | 22 | 3 | | 23 | 16 | | 24 | 7 | | 25 | 26 | | 26 | 41 | | 27 | 6 | | 28 | 4 | | 29 | 6 | | 30 | 5 | | 31 | 6 | | 32 | 14 | | 33 | 5 | | 34 | 56 | | 35 | 4 | | 36 | 36 | | 37 | 10 | | 38 | 26 | | 39 | 6 | | 40 | 9 | | 41 | 6 | | 42 | 3 | | 43 | 45 | | 44 | 16 | | 45 | 5 | | 46 | 9 | | 47 | 9 | | 48 | 5 | | 49 | 1 |
| |
| 58.26% | Sentence opener variety | Target: ≥60% unique sentence openers | | consecutiveRepeats | 7 | | diversityRatio | 0.38738738738738737 | | totalSentences | 111 | | uniqueOpeners | 43 | |
| 100.00% | Adverb-first sentence starts | Target: ≥3% sentences starting with an adverb | | adverbCount | 2 | | totalSentences | 65 | | matches | | 0 | "Then she yanked the deadbolt" | | 1 | "Instead she stepped back, because" |
| | ratio | 0.031 | |
| 4.62% | Pronoun-first sentence starts | Target: ≤30% sentences starting with a pronoun | | pronounCount | 35 | | totalSentences | 65 | | matches | | 0 | "She knew that knock." | | 1 | "she said through the wood" | | 2 | "She could have left him" | | 3 | "She thought about it seriously," | | 4 | "He looked like he always" | | 5 | "He had walked here, then." | | 6 | "He always walked when he" | | 7 | "She stayed in the doorway," | | 8 | "She'd spent four months learning" | | 9 | "She'd thought a lot of" | | 10 | "He tapped the cane once" | | 11 | "She should have said no." | | 12 | "It was always small." | | 13 | "It did not feel safe" | | 14 | "It felt like a box" | | 15 | "He set the cane against" | | 16 | "He didn't, not immediately." | | 17 | "He looked at her instead," | | 18 | "She'd also watched him fall" | | 19 | "She almost laughed." |
| | ratio | 0.538 | |
| 13.85% | Subject-first sentence starts | Target: ≤72% sentences starting with a subject | | subjectCount | 58 | | totalSentences | 65 | | matches | | 0 | "The third deadbolt was the" | | 1 | "Aurora had been telling Eva" | | 2 | "She knew that knock." | | 3 | "she said through the wood" | | 4 | "Aurora put her forehead against" | | 5 | "Ptolemy came and sat on" | | 6 | "She could have left him" | | 7 | "She thought about it seriously," | | 8 | "He looked like he always" | | 9 | "Charcoal suit, no overcoat despite" | | 10 | "The ivory cane in his" | | 11 | "Rain beaded on his shoulders." | | 12 | "He had walked here, then." | | 13 | "He always walked when he" | | 14 | "She stayed in the doorway," | | 15 | "Something moved across his face" | | 16 | "She'd spent four months learning" | | 17 | "She'd thought a lot of" | | 18 | "He tapped the cane once" | | 19 | "She should have said no." |
| | ratio | 0.892 | |
| 76.92% | Subordinate conjunction sentence starts | Target: ≥2% sentences starting with a subordinating conjunction | | subConjCount | 1 | | totalSentences | 65 | | matches | | | ratio | 0.015 | |
| 100.00% | Technical jargon density | Target: ≤6% sentences with technical-jargon patterns | | analyzedSentences | 26 | | technicalSentenceCount | 1 | | matches | | 0 | "Lucien Moreau, fixer, information broker, four languages, the man who had once negotiated a ceasefire between two covens using nothing but a bottle of Armagnac …" |
| |
| 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 | 14 | | fancyCount | 0 | | fancyTags | (empty) | | dialogueSentences | 59 | | tagDensity | 0.237 | | leniency | 0.475 | | rawRatio | 0 | | effectiveRatio | 0 | |