| 70.97% | Adverbs in dialogue tags | Target: ≤10% dialogue tags with adverbs | | totalTags | 12 | | adverbTagCount | 2 | | adverbTags | | 0 | "Silas said quietly [quietly]" | | 1 | "Silas said finally [finally]" |
| | dialogueSentences | 31 | | tagDensity | 0.387 | | leniency | 0.774 | | rawRatio | 0.167 | | effectiveRatio | 0.129 | |
| 100.00% | AI-ism adverb frequency | Target: <2% AI-ism adverbs (58 tracked) | | wordCount | 1157 | | 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) | |
| 48.14% | AI-ism word frequency | Target: <2% AI-ism words (290 tracked) | | wordCount | 1157 | | totalAiIsms | 12 | | found | | | highlights | | 0 | "crystal" | | 1 | "weight" | | 2 | "familiar" | | 3 | "silence" | | 4 | "warmth" |
| |
| 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 | 65 | | matches | (empty) | |
| 100.00% | Filter word density | Target: ≤3% sentences with filter/hedge words | | filterCount | 0 | | hedgeCount | 0 | | narrationSentences | 65 | | filterMatches | (empty) | | hedgeMatches | (empty) | |
| 100.00% | Gibberish response detection | Target: ≤1% gibberish-like sentences (hard fail if a sentence exceeds 800 words) | | analyzedSentences | 84 | | gibberishSentences | 0 | | adjustedGibberishSentences | 0 | | longSentenceCount | 0 | | runOnParagraphCount | 0 | | giantParagraphCount | 0 | | wordSaladCount | 0 | | repetitionLoopCount | 0 | | controlTokenCount | 0 | | repeatedSegmentCount | 0 | | maxSentenceWordsSeen | 77 | | ratio | 0 | | matches | (empty) | |
| 100.00% | Markdown formatting overuse | Target: ≤5% words in markdown formatting | | markdownSpans | 0 | | markdownWords | 0 | | totalWords | 1153 | | ratio | 0 | | matches | (empty) | |
| 100.00% | Missing dialogue indicators (quotation marks) | Target: ≤10% speech attributions without quotation marks | | totalAttributions | 12 | | unquotedAttributions | 0 | | matches | (empty) | |
| 27.38% | Name drop frequency | Target: ≤1.0 per-name mentions per 100 words | | totalMentions | 34 | | wordCount | 734 | | uniqueNames | 4 | | maxNameDensity | 2.45 | | worstName | "Silas" | | maxWindowNameDensity | 4 | | worstWindowName | "Thomas" | | discoveredNames | | Silas | 18 | | Hawke | 1 | | Thomas | 14 | | Macallan | 1 |
| | persons | | 0 | "Silas" | | 1 | "Hawke" | | 2 | "Thomas" |
| | places | (empty) | | globalScore | 0.274 | | windowScore | 0.333 | |
| 100.00% | Narrator intent-glossing | Target: ≤2% narration sentences with intent-glossing patterns | | analyzedSentences | 50 | | glossingSentenceCount | 0 | | matches | (empty) | |
| 100.00% | "Not X but Y" pattern overuse | Target: ≤1 "not X but Y" per 1000 words | | totalMatches | 1 | | per1kWords | 0.867 | | wordCount | 1153 | | matches | | 0 | "not much, but it’s dry" |
| |
| 100.00% | Overuse of "that" (subordinate clause padding) | Target: ≤2% sentences with "that" clauses | | thatCount | 0 | | totalSentences | 84 | | matches | (empty) | |
| 100.00% | Paragraph length variance | Target: CV ≥0.5 for paragraph word counts | | totalParagraphs | 37 | | mean | 31.16 | | std | 20.03 | | cv | 0.643 | | sampleLengths | | 0 | 75 | | 1 | 16 | | 2 | 83 | | 3 | 20 | | 4 | 21 | | 5 | 59 | | 6 | 12 | | 7 | 14 | | 8 | 23 | | 9 | 21 | | 10 | 43 | | 11 | 44 | | 12 | 11 | | 13 | 6 | | 14 | 9 | | 15 | 39 | | 16 | 40 | | 17 | 14 | | 18 | 37 | | 19 | 43 | | 20 | 25 | | 21 | 82 | | 22 | 15 | | 23 | 53 | | 24 | 9 | | 25 | 26 | | 26 | 40 | | 27 | 34 | | 28 | 34 | | 29 | 17 | | 30 | 5 | | 31 | 41 | | 32 | 20 | | 33 | 16 | | 34 | 26 | | 35 | 29 | | 36 | 51 |
| |
| 100.00% | Passive voice overuse | Target: ≤2% passive sentences | | passiveCount | 0 | | totalSentences | 65 | | matches | (empty) | |
| 91.60% | Past progressive (was/were + -ing) overuse | Target: ≤2% past progressive verbs | | pastProgressiveCount | 2 | | totalVerbs | 123 | | matches | | 0 | "was polishing" | | 1 | "was tasting" |
| |
| 6.80% | Em-dash & semicolon overuse | Target: ≤2% sentences with em-dashes/semicolons | | emDashCount | 4 | | semicolonCount | 0 | | flaggedSentences | 4 | | totalSentences | 84 | | ratio | 0.048 | | matches | | 0 | "His face was a roadmap of late nights and cheap whiskey—broken capillaries across the nose, eyes that had the flat, washed-out look of a man who had seen too much and forgotten how to look away." | | 1 | "The face was familiar in the way a half-remembered dream is familiar—present but just out of reach." | | 2 | "He closed his eyes, and for a moment the mask of ruin slipped, and Silas saw a ghost of the man he had known—sharp, careful, dangerous." | | 3 | "They drank, and the past stayed where it belonged—in the dark corners of the bar, in the photographs on the wall, in the scars and limps and the weight of years that neither of them could undo." |
| |
| 100.00% | Purple prose (modifier overload) | Target: <4% adverbs, <2% -ly adverbs, no adj stacking | | wordCount | 740 | | adjectiveStacks | 0 | | stackExamples | (empty) | | adverbCount | 18 | | adverbRatio | 0.024324324324324326 | | lyAdverbCount | 3 | | lyAdverbRatio | 0.004054054054054054 | |
| 100.00% | Repeated phrase echo | Target: ≤20% sentences with echoes (window: 2) | | totalSentences | 84 | | echoCount | 0 | | echoWords | (empty) | |
| 100.00% | Sentence length variance | Target: CV ≥0.4 for sentence word counts | | totalSentences | 84 | | mean | 13.73 | | std | 12 | | cv | 0.874 | | sampleLengths | | 0 | 14 | | 1 | 20 | | 2 | 9 | | 3 | 32 | | 4 | 14 | | 5 | 2 | | 6 | 10 | | 7 | 17 | | 8 | 36 | | 9 | 20 | | 10 | 11 | | 11 | 9 | | 12 | 3 | | 13 | 6 | | 14 | 12 | | 15 | 7 | | 16 | 17 | | 17 | 35 | | 18 | 3 | | 19 | 9 | | 20 | 3 | | 21 | 6 | | 22 | 5 | | 23 | 14 | | 24 | 9 | | 25 | 6 | | 26 | 15 | | 27 | 13 | | 28 | 21 | | 29 | 9 | | 30 | 11 | | 31 | 26 | | 32 | 7 | | 33 | 7 | | 34 | 4 | | 35 | 6 | | 36 | 9 | | 37 | 26 | | 38 | 13 | | 39 | 6 | | 40 | 34 | | 41 | 14 | | 42 | 12 | | 43 | 25 | | 44 | 28 | | 45 | 7 | | 46 | 8 | | 47 | 6 | | 48 | 9 | | 49 | 10 |
| |
| 56.75% | Sentence opener variety | Target: ≥60% unique sentence openers | | consecutiveRepeats | 4 | | diversityRatio | 0.36904761904761907 | | totalSentences | 84 | | uniqueOpeners | 31 | |
| 100.00% | Adverb-first sentence starts | Target: ≥3% sentences starting with an adverb | | adverbCount | 2 | | totalSentences | 58 | | matches | | 0 | "Then the man turned his" | | 1 | "Then Thomas drank, and the" |
| | ratio | 0.034 | |
| 75.17% | Pronoun-first sentence starts | Target: ≤30% sentences starting with a pronoun | | pronounCount | 21 | | totalSentences | 58 | | matches | | 0 | "He looked up from the" | | 1 | "He stood silhouetted against the" | | 2 | "He was maybe sixty, a" | | 3 | "His face was a roadmap" | | 4 | "He wore a trench coat" | | 5 | "He stopped at the bar," | | 6 | "His voice was gravel and" | | 7 | "It was not a happy" | | 8 | "He poured two fingers into" | | 9 | "He didn’t drink often, but" | | 10 | "He closed his eyes, and" | | 11 | "He gestured at the bar," | | 12 | "It burned going down, a" | | 13 | "It wasn’t a question about" | | 14 | "It was a question about" | | 15 | "He drained the rest of" | | 16 | "It wasn’t warmth." | | 17 | "It was a kind of" | | 18 | "He turned the signet ring" | | 19 | "They sat in silence for" |
| | ratio | 0.362 | |
| 3.10% | Subject-first sentence starts | Target: ≤72% sentences starting with a subject | | subjectCount | 53 | | totalSentences | 58 | | matches | | 0 | "The door chimed, a thin" | | 1 | "He looked up from the" | | 2 | "The man who stepped inside" | | 3 | "He stood silhouetted against the" | | 4 | "Silas set the glass down" | | 5 | "The man moved forward, shedding" | | 6 | "He was maybe sixty, a" | | 7 | "His face was a roadmap" | | 8 | "He wore a trench coat" | | 9 | "He stopped at the bar," | | 10 | "The leather creaked under him" | | 11 | "His voice was gravel and" | | 12 | "Silas studied him for a" | | 13 | "The face was familiar in" | | 14 | "The name came out dry," | | 15 | "Thomas Hawke smiled." | | 16 | "It was not a happy" | | 17 | "Thomas laughed, a short, ugly" | | 18 | "Silas reached under the counter" | | 19 | "He poured two fingers into" |
| | ratio | 0.914 | |
| 0.00% | Subordinate conjunction sentence starts | Target: ≥2% sentences starting with a subordinating conjunction | | subConjCount | 0 | | totalSentences | 58 | | matches | (empty) | | ratio | 0 | |
| 68.97% | Technical jargon density | Target: ≤6% sentences with technical-jargon patterns | | analyzedSentences | 29 | | technicalSentenceCount | 3 | | matches | | 0 | "He stood silhouetted against the green neon wash from the sign outside, his body hunched like a question mark, as if the weight of the street had pressed him in…" | | 1 | "His face was a roadmap of late nights and cheap whiskey—broken capillaries across the nose, eyes that had the flat, washed-out look of a man who had seen too mu…" | | 2 | "Then the man turned his head, and the light caught the pale line of a scar that ran from his temple to the hinge of his jaw, and Silas felt the floor tilt under…" |
| |
| 100.00% | Useless dialogue additions | Target: ≤5% dialogue tags with trailing filler fragments | | totalTags | 12 | | uselessAdditionCount | 0 | | matches | (empty) | |
| 100.00% | Dialogue tag variety (said vs. fancy) | Target: ≤10% fancy dialogue tags | | totalTags | 10 | | fancyCount | 1 | | fancyTags | | 0 | "Thomas repeated (repeat)" |
| | dialogueSentences | 31 | | tagDensity | 0.323 | | leniency | 0.645 | | rawRatio | 0.1 | | effectiveRatio | 0.065 | |