| 100.00% | Adverbs in dialogue tags | Target: ≤10% dialogue tags with adverbs | | totalTags | 15 | | adverbTagCount | 0 | | adverbTags | (empty) | | dialogueSentences | 58 | | tagDensity | 0.259 | | leniency | 0.517 | | rawRatio | 0 | | effectiveRatio | 0 | |
| 100.00% | AI-ism adverb frequency | Target: <2% AI-ism adverbs (58 tracked) | | wordCount | 1337 | | totalAiIsmAdverbs | 0 | | found | (empty) | | highlights | (empty) | |
| 100.00% | AI-ism character names | Target: 0 AI-default names (16 tracked, −20% each) | | codexExemptions | | | found | (empty) | |
| 100.00% | AI-ism location names | Target: 0 AI-default location names (33 tracked, −20% each) | | codexExemptions | (empty) | | found | (empty) | |
| 92.52% | AI-ism word frequency | Target: <2% AI-ism words (290 tracked) | | wordCount | 1337 | | 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 | 89 | | matches | (empty) | |
| 100.00% | Filter word density | Target: ≤3% sentences with filter/hedge words | | filterCount | 0 | | hedgeCount | 0 | | narrationSentences | 89 | | filterMatches | (empty) | | hedgeMatches | (empty) | |
| 100.00% | Gibberish response detection | Target: ≤1% gibberish-like sentences (hard fail if a sentence exceeds 800 words) | | analyzedSentences | 133 | | gibberishSentences | 0 | | adjustedGibberishSentences | 0 | | longSentenceCount | 0 | | runOnParagraphCount | 0 | | giantParagraphCount | 0 | | wordSaladCount | 0 | | repetitionLoopCount | 0 | | controlTokenCount | 0 | | repeatedSegmentCount | 0 | | maxSentenceWordsSeen | 57 | | ratio | 0 | | matches | (empty) | |
| 100.00% | Markdown formatting overuse | Target: ≤5% words in markdown formatting | | markdownSpans | 0 | | markdownWords | 0 | | totalWords | 1337 | | ratio | 0 | | matches | (empty) | |
| 100.00% | Missing dialogue indicators (quotation marks) | Target: ≤10% speech attributions without quotation marks | | totalAttributions | 20 | | unquotedAttributions | 0 | | matches | (empty) | |
| 100.00% | Name drop frequency | Target: ≤1.0 per-name mentions per 100 words | | totalMentions | 27 | | wordCount | 977 | | uniqueNames | 10 | | maxNameDensity | 0.82 | | worstName | "Helen" | | maxWindowNameDensity | 1.5 | | worstWindowName | "Helen" | | discoveredNames | | Silas | 2 | | Blackwood | 1 | | Helen | 8 | | Thorne | 4 | | Watched | 1 | | Vienna | 2 | | Ankara | 3 | | Prague | 4 | | Tuesday | 1 | | Soho | 1 |
| | persons | | 0 | "Silas" | | 1 | "Blackwood" | | 2 | "Helen" | | 3 | "Thorne" |
| | places | | 0 | "Vienna" | | 1 | "Ankara" | | 2 | "Prague" | | 3 | "Soho" |
| | globalScore | 1 | | windowScore | 1 | |
| 97.92% | Narrator intent-glossing | Target: ≤2% narration sentences with intent-glossing patterns | | analyzedSentences | 48 | | glossingSentenceCount | 1 | | matches | | 0 | "looked like the woman he had known" |
| |
| 100.00% | "Not X but Y" pattern overuse | Target: ≤1 "not X but Y" per 1000 words | | totalMatches | 0 | | per1kWords | 0 | | wordCount | 1337 | | matches | (empty) | |
| 100.00% | Overuse of "that" (subordinate clause padding) | Target: ≤2% sentences with "that" clauses | | thatCount | 1 | | totalSentences | 133 | | matches | | |
| 100.00% | Paragraph length variance | Target: CV ≥0.5 for paragraph word counts | | totalParagraphs | 69 | | mean | 19.38 | | std | 21.89 | | cv | 1.13 | | sampleLengths | | 0 | 22 | | 1 | 56 | | 2 | 1 | | 3 | 25 | | 4 | 2 | | 5 | 39 | | 6 | 5 | | 7 | 1 | | 8 | 51 | | 9 | 10 | | 10 | 4 | | 11 | 6 | | 12 | 41 | | 13 | 39 | | 14 | 2 | | 15 | 4 | | 16 | 48 | | 17 | 7 | | 18 | 19 | | 19 | 3 | | 20 | 17 | | 21 | 5 | | 22 | 5 | | 23 | 5 | | 24 | 8 | | 25 | 49 | | 26 | 21 | | 27 | 1 | | 28 | 1 | | 29 | 15 | | 30 | 9 | | 31 | 68 | | 32 | 6 | | 33 | 1 | | 34 | 32 | | 35 | 100 | | 36 | 20 | | 37 | 6 | | 38 | 5 | | 39 | 5 | | 40 | 15 | | 41 | 13 | | 42 | 18 | | 43 | 15 | | 44 | 1 | | 45 | 5 | | 46 | 20 | | 47 | 26 | | 48 | 16 | | 49 | 3 |
| |
| 97.38% | Passive voice overuse | Target: ≤2% passive sentences | | passiveCount | 2 | | totalSentences | 89 | | matches | | 0 | "been burned" | | 1 | "been supposed" |
| |
| 100.00% | Past progressive (was/were + -ing) overuse | Target: ≤2% past progressive verbs | | pastProgressiveCount | 2 | | totalVerbs | 161 | | matches | | 0 | "was holding" | | 1 | "was trying" |
| |
| 100.00% | Em-dash & semicolon overuse | Target: ≤2% sentences with em-dashes/semicolons | | emDashCount | 0 | | semicolonCount | 0 | | flaggedSentences | 0 | | totalSentences | 133 | | ratio | 0 | | matches | (empty) | |
| 100.00% | Purple prose (modifier overload) | Target: <4% adverbs, <2% -ly adverbs, no adj stacking | | wordCount | 611 | | adjectiveStacks | 0 | | stackExamples | (empty) | | adverbCount | 19 | | adverbRatio | 0.031096563011456628 | | lyAdverbCount | 4 | | lyAdverbRatio | 0.006546644844517185 | |
| 100.00% | Repeated phrase echo | Target: ≤20% sentences with echoes (window: 2) | | totalSentences | 133 | | echoCount | 0 | | echoWords | (empty) | |
| 100.00% | Sentence length variance | Target: CV ≥0.4 for sentence word counts | | totalSentences | 133 | | mean | 10.05 | | std | 9.54 | | cv | 0.949 | | sampleLengths | | 0 | 22 | | 1 | 13 | | 2 | 27 | | 3 | 6 | | 4 | 10 | | 5 | 1 | | 6 | 4 | | 7 | 3 | | 8 | 18 | | 9 | 2 | | 10 | 8 | | 11 | 15 | | 12 | 16 | | 13 | 5 | | 14 | 1 | | 15 | 5 | | 16 | 14 | | 17 | 32 | | 18 | 3 | | 19 | 7 | | 20 | 4 | | 21 | 6 | | 22 | 9 | | 23 | 4 | | 24 | 19 | | 25 | 2 | | 26 | 2 | | 27 | 5 | | 28 | 23 | | 29 | 16 | | 30 | 2 | | 31 | 4 | | 32 | 3 | | 33 | 1 | | 34 | 12 | | 35 | 3 | | 36 | 3 | | 37 | 26 | | 38 | 4 | | 39 | 3 | | 40 | 3 | | 41 | 6 | | 42 | 2 | | 43 | 4 | | 44 | 4 | | 45 | 3 | | 46 | 14 | | 47 | 3 | | 48 | 5 | | 49 | 5 |
| |
| 45.11% | Sentence opener variety | Target: ≥60% unique sentence openers | | consecutiveRepeats | 20 | | diversityRatio | 0.3609022556390977 | | totalSentences | 133 | | uniqueOpeners | 48 | |
| 45.66% | Adverb-first sentence starts | Target: ≥3% sentences starting with an adverb | | adverbCount | 1 | | totalSentences | 73 | | matches | | | ratio | 0.014 | |
| 6.30% | Pronoun-first sentence starts | Target: ≤30% sentences starting with a pronoun | | pronounCount | 39 | | totalSentences | 73 | | matches | | 0 | "She had not looked up" | | 1 | "Her hair was shorter than" | | 2 | "She lifted her gaze." | | 3 | "He set the glass in" | | 4 | "He poured his own measure." | | 5 | "His knee clicked under the" | | 6 | "He lowered himself onto the" | | 7 | "She turned the glass a" | | 8 | "Her eyes travelled the room," | | 9 | "He glanced at the print" | | 10 | "She almost smiled." | | 11 | "He lifted his glass." | | 12 | "She raised hers." | | 13 | "She watched him drink." | | 14 | "He flexed it under the" | | 15 | "He wondered if she knew" | | 16 | "she said, without looking at" | | 17 | "He pulled the pints." | | 18 | "He set the tray on" | | 19 | "He had learned, in the" |
| | ratio | 0.534 | |
| 55.89% | Subject-first sentence starts | Target: ≤72% sentences starting with a subject | | subjectCount | 59 | | totalSentences | 73 | | matches | | 0 | "The woman at the bar" | | 1 | "She had not looked up" | | 2 | "Her hair was shorter than" | | 3 | "She lifted her gaze." | | 4 | "A small nod." | | 5 | "The corner of her mouth" | | 6 | "He set the glass in" | | 7 | "The single malt measured out" | | 8 | "The amber caught the green" | | 9 | "He poured his own measure." | | 10 | "His knee clicked under the" | | 11 | "He lowered himself onto the" | | 12 | "She turned the glass a" | | 13 | "Her eyes travelled the room," | | 14 | "He glanced at the print" | | 15 | "She almost smiled." | | 16 | "Helen Thorne had never quite" | | 17 | "He lifted his glass." | | 18 | "She raised hers." | | 19 | "The toast hung between them," |
| | ratio | 0.808 | |
| 0.00% | Subordinate conjunction sentence starts | Target: ≥2% sentences starting with a subordinating conjunction | | subConjCount | 0 | | totalSentences | 73 | | matches | (empty) | | ratio | 0 | |
| 20.41% | Technical jargon density | Target: ≤6% sentences with technical-jargon patterns | | analyzedSentences | 35 | | technicalSentenceCount | 6 | | matches | | 0 | "Her hair was shorter than he remembered, silver threading through chestnut at the temples, cut in a way that would never have been practical in the field." | | 1 | "Not in the long cold months in Prague when they had planned an operation that had gone wrong in every way an operation could go wrong." | | 2 | "The gin he made with the same care he gave everything now, the precision of a man who had decided, somewhere around his fiftieth birthday, that if he could no l…" | | 3 | "He had learned, in the years since Prague, that silence was more useful than questions, that people who had spent their lives asking them were often the easiest…" | | 4 | "She had been the woman who had not come back for him in Prague, though that was unfair, and he knew it was unfair, and she knew he knew, and they had never disc…" | | 5 | "The woman who had once, on a bad night in Ankara, leaned her head against his shoulder in the back of a car and murmured that she was tired of being the smartes…" |
| |
| 91.67% | Useless dialogue additions | Target: ≤5% dialogue tags with trailing filler fragments | | totalTags | 15 | | uselessAdditionCount | 1 | | matches | | 0 | "she said, without looking at him" |
| |
| 100.00% | Dialogue tag variety (said vs. fancy) | Target: ≤10% fancy dialogue tags | | totalTags | 13 | | fancyCount | 1 | | fancyTags | | | dialogueSentences | 58 | | tagDensity | 0.224 | | leniency | 0.448 | | rawRatio | 0.077 | | effectiveRatio | 0.034 | |