| 100.00% | Adverbs in dialogue tags | Target: ≤10% dialogue tags with adverbs | | totalTags | 19 | | adverbTagCount | 1 | | adverbTags | | 0 | "His thumb moved once [once]" |
| | dialogueSentences | 42 | | tagDensity | 0.452 | | leniency | 0.905 | | rawRatio | 0.053 | | effectiveRatio | 0.048 | |
| 93.59% | AI-ism adverb frequency | Target: <2% AI-ism adverbs (58 tracked) | | wordCount | 1559 | | totalAiIsmAdverbs | 2 | | found | | | highlights | | |
| 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) | |
| 83.96% | AI-ism word frequency | Target: <2% AI-ism words (290 tracked) | | wordCount | 1559 | | totalAiIsms | 5 | | found | | | highlights | | 0 | "silence" | | 1 | "absolutely" | | 2 | "weight" | | 3 | "comforting" |
| |
| 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 | 70 | | matches | (empty) | |
| 100.00% | Filter word density | Target: ≤3% sentences with filter/hedge words | | filterCount | 0 | | hedgeCount | 0 | | narrationSentences | 70 | | filterMatches | (empty) | | hedgeMatches | (empty) | |
| 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 | 75 | | ratio | 0 | | matches | (empty) | |
| 100.00% | Markdown formatting overuse | Target: ≤5% words in markdown formatting | | markdownSpans | 0 | | markdownWords | 0 | | totalWords | 1578 | | ratio | 0 | | matches | (empty) | |
| 100.00% | Missing dialogue indicators (quotation marks) | Target: ≤10% speech attributions without quotation marks | | totalAttributions | 25 | | unquotedAttributions | 0 | | matches | (empty) | |
| 83.33% | Name drop frequency | Target: ≤1.0 per-name mentions per 100 words | | totalMentions | 33 | | wordCount | 1046 | | uniqueNames | 14 | | maxNameDensity | 0.76 | | worstName | "Eva" | | maxWindowNameDensity | 2.5 | | worstWindowName | "Eva" | | discoveredNames | | Lucien | 4 | | Moreau | 2 | | Eva | 8 | | English | 1 | | Oxford | 1 | | Bodleian | 1 | | Rory | 6 | | Ptolemy | 2 | | Borges | 1 | | Whitechapel | 1 | | Laila | 1 | | Soho | 1 | | Brick | 2 | | Lane | 2 |
| | persons | | 0 | "Lucien" | | 1 | "Moreau" | | 2 | "Eva" | | 3 | "Bodleian" | | 4 | "Rory" | | 5 | "Ptolemy" | | 6 | "Laila" |
| | places | | 0 | "Oxford" | | 1 | "Whitechapel" | | 2 | "Soho" | | 3 | "Brick" | | 4 | "Lane" |
| | globalScore | 1 | | windowScore | 0.833 | |
| 100.00% | Narrator intent-glossing | Target: ≤2% narration sentences with intent-glossing patterns | | analyzedSentences | 50 | | glossingSentenceCount | 1 | | matches | | 0 | "as if translating from a language with no exact equivalent" |
| |
| 100.00% | "Not X but Y" pattern overuse | Target: ≤1 "not X but Y" per 1000 words | | totalMatches | 0 | | per1kWords | 0 | | wordCount | 1578 | | matches | (empty) | |
| 96.49% | Overuse of "that" (subordinate clause padding) | Target: ≤2% sentences with "that" clauses | | thatCount | 2 | | totalSentences | 95 | | matches | | 0 | "was that she" | | 1 | "knew that name" |
| |
| 100.00% | Paragraph length variance | Target: CV ≥0.5 for paragraph word counts | | totalParagraphs | 50 | | mean | 31.56 | | std | 30.98 | | cv | 0.982 | | sampleLengths | | 0 | 47 | | 1 | 88 | | 2 | 17 | | 3 | 9 | | 4 | 6 | | 5 | 49 | | 6 | 4 | | 7 | 38 | | 8 | 51 | | 9 | 111 | | 10 | 36 | | 11 | 3 | | 12 | 59 | | 13 | 11 | | 14 | 33 | | 15 | 7 | | 16 | 23 | | 17 | 82 | | 18 | 3 | | 19 | 13 | | 20 | 79 | | 21 | 52 | | 22 | 101 | | 23 | 77 | | 24 | 46 | | 25 | 12 | | 26 | 1 | | 27 | 5 | | 28 | 9 | | 29 | 2 | | 30 | 3 | | 31 | 107 | | 32 | 9 | | 33 | 40 | | 34 | 60 | | 35 | 7 | | 36 | 2 | | 37 | 3 | | 38 | 6 | | 39 | 34 | | 40 | 36 | | 41 | 32 | | 42 | 25 | | 43 | 15 | | 44 | 20 | | 45 | 6 | | 46 | 6 | | 47 | 4 | | 48 | 12 | | 49 | 77 |
| |
| 100.00% | Passive voice overuse | Target: ≤2% passive sentences | | passiveCount | 1 | | totalSentences | 70 | | matches | | |
| 87.64% | Past progressive (was/were + -ing) overuse | Target: ≤2% past progressive verbs | | pastProgressiveCount | 3 | | totalVerbs | 178 | | matches | | 0 | "was laughing" | | 1 | "wasn't looking" | | 2 | "was looking" |
| |
| 0.00% | Em-dash & semicolon overuse | Target: ≤2% sentences with em-dashes/semicolons | | emDashCount | 12 | | semicolonCount | 1 | | flaggedSentences | 10 | | totalSentences | 95 | | ratio | 0.105 | | matches | | 0 | "He always dressed for everything — grief, war, apology." | | 1 | "The landing lamp found his eyes, one amber and one black, and her first thought — before the anger, before all of it — was that she had missed them." | | 2 | "He came in the way he did everything, as if the room had been arranged for him in advance, and she shut the door and threw all three deadbolts behind him — which was, she noted, the exact opposite of what she'd spent the last six weeks doing." | | 3 | "Eva was in Oxford for a fortnight, prying at the Bodleian's restricted stacks, and Rory had been keeping the place alive — feeding the cat, sleeping on the sofa, telling herself it was temporary the way you tell yourself a wound is temporary." | | 4 | "She could still feel it if she let herself — the scooter juddering up the kerb, the alley, the roof in Whitechapel with the jar strapped to her back, warm as a sleeping animal." | | 5 | "Her voice came out flat, which surprised her; she'd expected it to break." | | 6 | "She crossed the room in four steps, took his face in both hands — rain-cold jaw, the loosened curl of hair under her fingers — and kissed him." | | 7 | "His hand came up to her back, then slid around to catch her left wrist, gentle, his thumb finding the small crescent scar there — the question he'd asked her once in a stairwell, a year ago, that she'd never answered." | | 8 | "He laughed — actually laughed, low and startled, and she felt it more than heard it, and then neither of them was laughing, and the kiss stopped being an argument and became something else, something with no terms at all." | | 9 | "Outside, Brick Lane went on being Brick Lane — rain, neon, the smell of other people's dinners — and inside, for the first time in six weeks, the quiet had someone in it." |
| |
| 100.00% | Purple prose (modifier overload) | Target: <4% adverbs, <2% -ly adverbs, no adj stacking | | wordCount | 879 | | adjectiveStacks | 0 | | stackExamples | (empty) | | adverbCount | 33 | | adverbRatio | 0.03754266211604096 | | lyAdverbCount | 7 | | lyAdverbRatio | 0.007963594994311717 | |
| 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.61 | | std | 16.02 | | cv | 0.964 | | sampleLengths | | 0 | 47 | | 1 | 7 | | 2 | 9 | | 3 | 34 | | 4 | 30 | | 5 | 8 | | 6 | 17 | | 7 | 9 | | 8 | 6 | | 9 | 6 | | 10 | 28 | | 11 | 6 | | 12 | 1 | | 13 | 1 | | 14 | 1 | | 15 | 6 | | 16 | 4 | | 17 | 36 | | 18 | 2 | | 19 | 3 | | 20 | 48 | | 21 | 36 | | 22 | 43 | | 23 | 32 | | 24 | 36 | | 25 | 3 | | 26 | 3 | | 27 | 21 | | 28 | 35 | | 29 | 11 | | 30 | 4 | | 31 | 13 | | 32 | 16 | | 33 | 7 | | 34 | 13 | | 35 | 4 | | 36 | 6 | | 37 | 72 | | 38 | 10 | | 39 | 3 | | 40 | 13 | | 41 | 34 | | 42 | 16 | | 43 | 29 | | 44 | 5 | | 45 | 13 | | 46 | 34 | | 47 | 26 | | 48 | 75 | | 49 | 17 |
| |
| 65.26% | Sentence opener variety | Target: ≥60% unique sentence openers | | consecutiveRepeats | 8 | | diversityRatio | 0.4421052631578947 | | totalSentences | 95 | | uniqueOpeners | 42 | |
| 100.00% | Adverb-first sentence starts | Target: ≥3% sentences starting with an adverb | | adverbCount | 2 | | totalSentences | 60 | | matches | | 0 | "Then he said, quietly," | | 1 | "Then the cane slid out" |
| | ratio | 0.033 | |
| 0.00% | Pronoun-first sentence starts | Target: ≤30% sentences starting with a pronoun | | pronounCount | 34 | | totalSentences | 60 | | matches | | 0 | "He had dressed for it," | | 1 | "He always dressed for everything" | | 2 | "She hated him a little" | | 3 | "Her name in that voice" | | 4 | "She put her hand on" | | 5 | "It hung there, half open," | | 6 | "She stepped back." | | 7 | "He came in the way" | | 8 | "He stood with the cane" | | 9 | "He took a breath." | | 10 | "She had never once seen" | | 11 | "She didn't say anything." | | 12 | "She didn't trust what she'd" | | 13 | "His thumb moved once along" | | 14 | "She could still feel it" | | 15 | "Her voice came out flat," | | 16 | "He said it slowly, as" | | 17 | "It came out of her" | | 18 | "He looked at her for" | | 19 | "He was at the door." |
| | ratio | 0.567 | |
| 60.00% | Subject-first sentence starts | Target: ≤72% sentences starting with a subject | | subjectCount | 48 | | totalSentences | 60 | | matches | | 0 | "Rory opened the door on" | | 1 | "He had dressed for it," | | 2 | "He always dressed for everything" | | 3 | "The charcoal suit was dark" | | 4 | "The landing lamp found his" | | 5 | "She hated him a little" | | 6 | "Her name in that voice" | | 7 | "She put her hand on" | | 8 | "The door stopped being a" | | 9 | "It hung there, half open," | | 10 | "A pause, precise as everything" | | 11 | "She stepped back." | | 12 | "He came in the way" | | 13 | "The flat was Eva's, and" | | 14 | "Eva was in Oxford for" | | 15 | "Ptolemy, who had hissed at" | | 16 | "Lucien didn't sit." | | 17 | "He stood with the cane" | | 18 | "The smell of the curry" | | 19 | "He took a breath." |
| | ratio | 0.8 | |
| 0.00% | Subordinate conjunction sentence starts | Target: ≥2% sentences starting with a subordinating conjunction | | subConjCount | 0 | | totalSentences | 60 | | matches | (empty) | | ratio | 0 | |
| 100.00% | Technical jargon density | Target: ≤6% sentences with technical-jargon patterns | | analyzedSentences | 27 | | technicalSentenceCount | 1 | | matches | | 0 | "He came in the way he did everything, as if the room had been arranged for him in advance, and she shut the door and threw all three deadbolts behind him — whic…" |
| |
| 72.37% | Useless dialogue additions | Target: ≤5% dialogue tags with trailing filler fragments | | totalTags | 19 | | uselessAdditionCount | 2 | | matches | | 0 | "He said, as if translating from a language with no exact equivalent" | | 1 | "he said, quietly," |
| |
| 100.00% | Dialogue tag variety (said vs. fancy) | Target: ≤10% fancy dialogue tags | | totalTags | 10 | | fancyCount | 1 | | fancyTags | | 0 | "the morning there would (would)" |
| | dialogueSentences | 42 | | tagDensity | 0.238 | | leniency | 0.476 | | rawRatio | 0.1 | | effectiveRatio | 0.048 | |