| 100.00% | Adverbs in dialogue tags | Target: ≤10% dialogue tags with adverbs | | totalTags | 22 | | adverbTagCount | 2 | | adverbTags | | 0 | "Silas said quietly [quietly]" | | 1 | "Nathan’s voice cracked just [just]" |
| | dialogueSentences | 54 | | tagDensity | 0.407 | | leniency | 0.815 | | rawRatio | 0.091 | | effectiveRatio | 0.074 | |
| 93.46% | AI-ism adverb frequency | Target: <2% AI-ism adverbs (58 tracked) | | wordCount | 1530 | | totalAiIsmAdverbs | 2 | | found | | | highlights | | |
| 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) | |
| 57.52% | AI-ism word frequency | Target: <2% AI-ism words (290 tracked) | | wordCount | 1530 | | totalAiIsms | 13 | | found | | 0 | | | 1 | | | 2 | | | 3 | | | 4 | | | 5 | | | 6 | | word | "the last thing" | | count | 1 |
| | 7 | | | 8 | |
| | highlights | | 0 | "scanned" | | 1 | "familiar" | | 2 | "flickered" | | 3 | "measured" | | 4 | "silence" | | 5 | "flicked" | | 6 | "the last thing" | | 7 | "weight" | | 8 | "echoed" |
| |
| 100.00% | Cliché density | Target: ≤1 cliche(s) per 800-word window | | totalCliches | 1 | | maxInWindow | 1 | | found | | 0 | | label | "let out a breath" | | count | 1 |
|
| | highlights | | |
| 100.00% | Emotion telling (show vs. tell) | Target: ≤3% sentences with emotion telling | | emotionTells | 0 | | narrationSentences | 108 | | matches | (empty) | |
| 100.00% | Filter word density | Target: ≤3% sentences with filter/hedge words | | filterCount | 0 | | hedgeCount | 1 | | narrationSentences | 108 | | filterMatches | (empty) | | hedgeMatches | | |
| 100.00% | Gibberish response detection | Target: ≤1% gibberish-like sentences (hard fail if a sentence exceeds 800 words) | | analyzedSentences | 139 | | gibberishSentences | 0 | | adjustedGibberishSentences | 0 | | longSentenceCount | 0 | | runOnParagraphCount | 0 | | giantParagraphCount | 0 | | wordSaladCount | 0 | | repetitionLoopCount | 0 | | controlTokenCount | 0 | | repeatedSegmentCount | 0 | | maxSentenceWordsSeen | 59 | | ratio | 0 | | matches | (empty) | |
| 100.00% | Markdown formatting overuse | Target: ≤5% words in markdown formatting | | markdownSpans | 0 | | markdownWords | 0 | | totalWords | 1522 | | ratio | 0 | | matches | (empty) | |
| 100.00% | Missing dialogue indicators (quotation marks) | Target: ≤10% speech attributions without quotation marks | | totalAttributions | 17 | | unquotedAttributions | 0 | | matches | (empty) | |
| 0.00% | Name drop frequency | Target: ≤1.0 per-name mentions per 100 words | | totalMentions | 80 | | wordCount | 1104 | | uniqueNames | 12 | | maxNameDensity | 3.08 | | worstName | "Silas" | | maxWindowNameDensity | 6 | | worstWindowName | "Nathan" | | discoveredNames | | Raven | 1 | | Nest | 1 | | Prague | 4 | | Aurora | 1 | | Carter | 1 | | Golden | 1 | | Empress | 1 | | Silas | 34 | | Cross | 1 | | Nathan | 33 | | Charles | 1 | | Bridge | 1 |
| | persons | | 0 | "Raven" | | 1 | "Aurora" | | 2 | "Carter" | | 3 | "Silas" | | 4 | "Cross" | | 5 | "Nathan" |
| | places | | 0 | "Prague" | | 1 | "Charles" | | 2 | "Bridge" |
| | globalScore | 0 | | windowScore | 0 | |
| 9.15% | Narrator intent-glossing | Target: ≤2% narration sentences with intent-glossing patterns | | analyzedSentences | 71 | | glossingSentenceCount | 4 | | matches | | 0 | "looked like his understudy after a long," | | 1 | "not quite a smile" | | 2 | "felt like a stone on his chest" | | 3 | "not quite as steady as he would have liked" |
| |
| 68.59% | "Not X but Y" pattern overuse | Target: ≤1 "not X but Y" per 1000 words | | totalMatches | 2 | | per1kWords | 1.314 | | wordCount | 1522 | | matches | | 0 | "not like a customer looking for a seat, but like a man checking exits" | | 1 | "not lift, but change shape" |
| |
| 100.00% | Overuse of "that" (subordinate clause padding) | Target: ≤2% sentences with "that" clauses | | thatCount | 1 | | totalSentences | 139 | | matches | | |
| 100.00% | Paragraph length variance | Target: CV ≥0.5 for paragraph word counts | | totalParagraphs | 59 | | mean | 25.8 | | std | 26.6 | | cv | 1.031 | | sampleLengths | | 0 | 120 | | 1 | 4 | | 2 | 61 | | 3 | 1 | | 4 | 14 | | 5 | 2 | | 6 | 73 | | 7 | 27 | | 8 | 13 | | 9 | 32 | | 10 | 43 | | 11 | 5 | | 12 | 24 | | 13 | 6 | | 14 | 80 | | 15 | 6 | | 16 | 6 | | 17 | 36 | | 18 | 2 | | 19 | 3 | | 20 | 19 | | 21 | 21 | | 22 | 4 | | 23 | 2 | | 24 | 10 | | 25 | 15 | | 26 | 4 | | 27 | 93 | | 28 | 6 | | 29 | 17 | | 30 | 53 | | 31 | 9 | | 32 | 12 | | 33 | 59 | | 34 | 13 | | 35 | 5 | | 36 | 2 | | 37 | 54 | | 38 | 60 | | 39 | 8 | | 40 | 2 | | 41 | 60 | | 42 | 51 | | 43 | 7 | | 44 | 72 | | 45 | 4 | | 46 | 9 | | 47 | 21 | | 48 | 16 | | 49 | 5 |
| |
| 95.52% | Passive voice overuse | Target: ≤2% passive sentences | | passiveCount | 3 | | totalSentences | 108 | | matches | | 0 | "was covered" | | 1 | "been hollowed" | | 2 | "was caught" |
| |
| 100.00% | Past progressive (was/were + -ing) overuse | Target: ≤2% past progressive verbs | | pastProgressiveCount | 1 | | totalVerbs | 203 | | matches | | |
| 0.00% | Em-dash & semicolon overuse | Target: ≤2% sentences with em-dashes/semicolons | | emDashCount | 8 | | semicolonCount | 1 | | flaggedSentences | 7 | | totalSentences | 139 | | ratio | 0.05 | | matches | | 0 | "The old maps on the walls seemed to lean in closer, and the black-and-white photographs—dead operatives, long-closed embassies, a city street in Prague he should have thrown away—held their ghosts more plainly in the hush." | | 1 | "Upstairs, the flat where Aurora Carter rented from him was dark; she had come in late from a delivery for the Golden Empress and gone straight to bed." | | 2 | "Nathan Cross had always been vain—good suits, polished shoes, a smile that made sources want to confess." | | 3 | "He watched Nathan study the room—the maps, the photographs, the bookshelf with the hidden latch behind the bar." | | 4 | "“I went deep. Too deep, maybe. After Prague I didn’t know how to come up for air. So I stayed down. Took the jobs nobody wanted. The long-term covers, the ones that eat you alive.” He ran a thumb along the scar that trailed from his left ear to his jaw—a scar Silas had never seen before." | | 5 | "Silas wanted to say something—that it was his fault, that the order that sent Nathan left had been wrong, that his knee was a small price for walking away while Nathan was caught." | | 6 | "Nathan had paid the real price—his marriage, his mind, his own face—and Silas had let him vanish into that silence because facing him would mean facing the order that had cost everything." |
| |
| 100.00% | Purple prose (modifier overload) | Target: <4% adverbs, <2% -ly adverbs, no adj stacking | | wordCount | 1117 | | adjectiveStacks | 0 | | stackExamples | (empty) | | adverbCount | 28 | | adverbRatio | 0.025067144136078783 | | lyAdverbCount | 10 | | lyAdverbRatio | 0.008952551477170993 | |
| 100.00% | Repeated phrase echo | Target: ≤20% sentences with echoes (window: 2) | | totalSentences | 139 | | echoCount | 0 | | echoWords | (empty) | |
| 100.00% | Sentence length variance | Target: CV ≥0.4 for sentence word counts | | totalSentences | 139 | | mean | 10.95 | | std | 8.93 | | cv | 0.815 | | sampleLengths | | 0 | 11 | | 1 | 22 | | 2 | 12 | | 3 | 35 | | 4 | 28 | | 5 | 12 | | 6 | 4 | | 7 | 7 | | 8 | 14 | | 9 | 8 | | 10 | 21 | | 11 | 11 | | 12 | 1 | | 13 | 4 | | 14 | 7 | | 15 | 3 | | 16 | 2 | | 17 | 9 | | 18 | 17 | | 19 | 15 | | 20 | 32 | | 21 | 5 | | 22 | 18 | | 23 | 4 | | 24 | 5 | | 25 | 5 | | 26 | 3 | | 27 | 16 | | 28 | 10 | | 29 | 6 | | 30 | 12 | | 31 | 13 | | 32 | 10 | | 33 | 8 | | 34 | 5 | | 35 | 10 | | 36 | 4 | | 37 | 7 | | 38 | 3 | | 39 | 6 | | 40 | 3 | | 41 | 12 | | 42 | 18 | | 43 | 15 | | 44 | 21 | | 45 | 11 | | 46 | 6 | | 47 | 6 | | 48 | 7 | | 49 | 17 |
| |
| 43.53% | Sentence opener variety | Target: ≥60% unique sentence openers | | consecutiveRepeats | 9 | | diversityRatio | 0.2733812949640288 | | totalSentences | 139 | | uniqueOpeners | 38 | |
| 100.00% | Adverb-first sentence starts | Target: ≥3% sentences starting with an adverb | | adverbCount | 3 | | totalSentences | 93 | | matches | | 0 | "Then the door opened." | | 1 | "Then something flickered." | | 2 | "Then he reached across the" |
| | ratio | 0.032 | |
| 100.00% | Pronoun-first sentence starts | Target: ≤30% sentences starting with a pronoun | | pronounCount | 22 | | totalSentences | 93 | | matches | | 0 | "He could tell by the" | | 1 | "He wore a shapeless grey" | | 2 | "He scanned the room left" | | 3 | "His black hair had receded" | | 4 | "His left knee gave its" | | 5 | "He didn’t move to embrace." | | 6 | "His silver signet ring clicked" | | 7 | "He took a sip, closed" | | 8 | "He watched Nathan study the" | | 9 | "It showed a cobbled street" | | 10 | "His mouth twisted, not quite" | | 11 | "He ran a thumb along" | | 12 | "He’d told himself he was" | | 13 | "He’d burned them in the" | | 14 | "He could see himself as" | | 15 | "He’d aged, yes, but not" | | 16 | "He had spent seventeen years" | | 17 | "He reached into his satchel" | | 18 | "He smoothed it on the" | | 19 | "It showed Nathan in a" |
| | ratio | 0.237 | |
| 19.14% | Subject-first sentence starts | Target: ≤72% sentences starting with a subject | | subjectCount | 82 | | totalSentences | 93 | | matches | | 0 | "The rain had chased the" | | 1 | "Silas stood behind the bar," | | 2 | "The Raven’s Nest was quiet," | | 3 | "The old maps on the" | | 4 | "He could tell by the" | | 5 | "A man stepped in from" | | 6 | "He wore a shapeless grey" | | 7 | "Water dripped from his hair" | | 8 | "He scanned the room left" | | 9 | "The gesture was so familiar" | | 10 | "The man’s head turned." | | 11 | "The voice was thinner than" | | 12 | "Nathan Cross had always been" | | 13 | "The man standing in the" | | 14 | "His black hair had receded" | | 15 | "Silas limped around the bar." | | 16 | "His left knee gave its" | | 17 | "He didn’t move to embrace." | | 18 | "Neither did Silas." | | 19 | "Silas gestured to a stool" |
| | ratio | 0.882 | |
| 53.76% | Subordinate conjunction sentence starts | Target: ≥2% sentences starting with a subordinating conjunction | | subConjCount | 1 | | totalSentences | 93 | | matches | | 0 | "Now the thought felt like" |
| | ratio | 0.011 | |
| 100.00% | Technical jargon density | Target: ≤6% sentences with technical-jargon patterns | | analyzedSentences | 43 | | technicalSentenceCount | 2 | | matches | | 0 | "He could see himself as Nathan must see him: grey-streaked hair, trimmed beard, the careful stillness of a man who’d built a life out of avoiding the past." | | 1 | "Nathan had paid the real price—his marriage, his mind, his own face—and Silas had let him vanish into that silence because facing him would mean facing the orde…" |
| |
| 100.00% | Useless dialogue additions | Target: ≤5% dialogue tags with trailing filler fragments | | totalTags | 22 | | uselessAdditionCount | 1 | | matches | | 0 | "His mouth twisted, not quite a smile" |
| |
| 100.00% | Dialogue tag variety (said vs. fancy) | Target: ≤10% fancy dialogue tags | | totalTags | 13 | | fancyCount | 1 | | fancyTags | | 0 | "Nathan continued (continue)" |
| | dialogueSentences | 54 | | tagDensity | 0.241 | | leniency | 0.481 | | rawRatio | 0.077 | | effectiveRatio | 0.037 | |