| 100.00% | Adverbs in dialogue tags | Target: ≤10% dialogue tags with adverbs | | totalTags | 4 | | adverbTagCount | 0 | | adverbTags | (empty) | | dialogueSentences | 137 | | tagDensity | 0.029 | | leniency | 0.058 | | rawRatio | 0 | | effectiveRatio | 0 | |
| 95.95% | AI-ism adverb frequency | Target: <2% AI-ism adverbs (58 tracked) | | wordCount | 2472 | | 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) | |
| 67.64% | AI-ism word frequency | Target: <2% AI-ism words (290 tracked) | | wordCount | 2472 | | totalAiIsms | 16 | | found | | | highlights | | 0 | "weight" | | 1 | "charm" | | 2 | "warmth" | | 3 | "unsettled" | | 4 | "grave" | | 5 | "silence" | | 6 | "stomach" | | 7 | "shattered" | | 8 | "traced" | | 9 | "flicked" | | 10 | "comforting" | | 11 | "pulse" | | 12 | "silk" | | 13 | "familiar" |
| |
| 100.00% | Cliché density | Target: ≤1 cliche(s) per 800-word window | | totalCliches | 2 | | maxInWindow | 1 | | found | | 0 | | label | "let out a breath" | | count | 2 |
|
| | highlights | | |
| 100.00% | Emotion telling (show vs. tell) | Target: ≤3% sentences with emotion telling | | emotionTells | 0 | | narrationSentences | 180 | | matches | (empty) | |
| 100.00% | Filter word density | Target: ≤3% sentences with filter/hedge words | | filterCount | 0 | | hedgeCount | 0 | | narrationSentences | 180 | | filterMatches | (empty) | | hedgeMatches | (empty) | |
| 100.00% | Gibberish response detection | Target: ≤1% gibberish-like sentences (hard fail if a sentence exceeds 800 words) | | analyzedSentences | 313 | | gibberishSentences | 0 | | adjustedGibberishSentences | 0 | | longSentenceCount | 0 | | runOnParagraphCount | 0 | | giantParagraphCount | 0 | | wordSaladCount | 0 | | repetitionLoopCount | 0 | | controlTokenCount | 0 | | maxSentenceWordsSeen | 46 | | ratio | 0 | | matches | (empty) | |
| 100.00% | Markdown formatting overuse | Target: ≤5% words in markdown formatting | | markdownSpans | 0 | | markdownWords | 0 | | totalWords | 2472 | | ratio | 0 | | matches | (empty) | |
| 100.00% | Missing dialogue indicators (quotation marks) | Target: ≤10% speech attributions without quotation marks | | totalAttributions | 14 | | unquotedAttributions | 0 | | matches | (empty) | |
| 100.00% | Name drop frequency | Target: ≤1.0 per-name mentions per 100 words | | totalMentions | 35 | | wordCount | 1707 | | uniqueNames | 7 | | maxNameDensity | 0.82 | | worstName | "Aurora" | | maxWindowNameDensity | 1.5 | | worstWindowName | "Aurora" | | discoveredNames | | Moreau | 1 | | Aurora | 14 | | Eva | 5 | | French | 1 | | Ptolemy | 4 | | Lucien | 7 | | Blood | 3 |
| | persons | | 0 | "Moreau" | | 1 | "Aurora" | | 2 | "Eva" | | 3 | "Ptolemy" | | 4 | "Lucien" | | 5 | "Blood" |
| | places | (empty) | | globalScore | 1 | | windowScore | 1 | |
| 100.00% | Narrator intent-glossing | Target: ≤2% narration sentences with intent-glossing patterns | | analyzedSentences | 118 | | 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.405 | | wordCount | 2472 | | matches | | 0 | "not deep enough to spill him open but ugly, the edges red" |
| |
| 100.00% | Overuse of "that" (subordinate clause padding) | Target: ≤2% sentences with "that" clauses | | thatCount | 1 | | totalSentences | 313 | | matches | | |
| 100.00% | Paragraph length variance | Target: CV ≥0.5 for paragraph word counts | | totalParagraphs | 231 | | mean | 10.7 | | std | 12.27 | | cv | 1.146 | | sampleLengths | | 0 | 20 | | 1 | 65 | | 2 | 15 | | 3 | 8 | | 4 | 14 | | 5 | 30 | | 6 | 1 | | 7 | 7 | | 8 | 7 | | 9 | 3 | | 10 | 9 | | 11 | 3 | | 12 | 7 | | 13 | 16 | | 14 | 3 | | 15 | 4 | | 16 | 9 | | 17 | 46 | | 18 | 5 | | 19 | 3 | | 20 | 5 | | 21 | 15 | | 22 | 10 | | 23 | 6 | | 24 | 11 | | 25 | 9 | | 26 | 8 | | 27 | 31 | | 28 | 17 | | 29 | 13 | | 30 | 4 | | 31 | 3 | | 32 | 56 | | 33 | 7 | | 34 | 7 | | 35 | 52 | | 36 | 3 | | 37 | 6 | | 38 | 1 | | 39 | 2 | | 40 | 19 | | 41 | 9 | | 42 | 3 | | 43 | 2 | | 44 | 3 | | 45 | 5 | | 46 | 8 | | 47 | 8 | | 48 | 27 | | 49 | 7 |
| |
| 100.00% | Passive voice overuse | Target: ≤2% passive sentences | | passiveCount | 0 | | totalSentences | 180 | | matches | (empty) | |
| 100.00% | Past progressive (was/were + -ing) overuse | Target: ≤2% past progressive verbs | | pastProgressiveCount | 0 | | totalVerbs | 284 | | matches | (empty) | |
| 100.00% | Em-dash & semicolon overuse | Target: ≤2% sentences with em-dashes/semicolons | | emDashCount | 0 | | semicolonCount | 0 | | flaggedSentences | 0 | | totalSentences | 313 | | ratio | 0 | | matches | (empty) | |
| 100.00% | Purple prose (modifier overload) | Target: <4% adverbs, <2% -ly adverbs, no adj stacking | | wordCount | 1713 | | adjectiveStacks | 0 | | stackExamples | (empty) | | adverbCount | 55 | | adverbRatio | 0.03210741389375365 | | lyAdverbCount | 6 | | lyAdverbRatio | 0.0035026269702276708 | |
| 100.00% | Repeated phrase echo | Target: ≤20% sentences with echoes (window: 2) | | totalSentences | 313 | | echoCount | 0 | | echoWords | (empty) | |
| 100.00% | Sentence length variance | Target: CV ≥0.4 for sentence word counts | | totalSentences | 313 | | mean | 7.9 | | std | 6.98 | | cv | 0.884 | | sampleLengths | | 0 | 5 | | 1 | 15 | | 2 | 23 | | 3 | 17 | | 4 | 25 | | 5 | 10 | | 6 | 5 | | 7 | 8 | | 8 | 14 | | 9 | 30 | | 10 | 1 | | 11 | 7 | | 12 | 7 | | 13 | 3 | | 14 | 9 | | 15 | 3 | | 16 | 7 | | 17 | 16 | | 18 | 3 | | 19 | 4 | | 20 | 9 | | 21 | 16 | | 22 | 10 | | 23 | 4 | | 24 | 6 | | 25 | 10 | | 26 | 5 | | 27 | 3 | | 28 | 5 | | 29 | 15 | | 30 | 10 | | 31 | 6 | | 32 | 11 | | 33 | 9 | | 34 | 8 | | 35 | 18 | | 36 | 5 | | 37 | 8 | | 38 | 11 | | 39 | 6 | | 40 | 13 | | 41 | 4 | | 42 | 3 | | 43 | 4 | | 44 | 27 | | 45 | 25 | | 46 | 7 | | 47 | 7 | | 48 | 17 | | 49 | 6 |
| |
| 46.17% | Sentence opener variety | Target: ≥60% unique sentence openers | | consecutiveRepeats | 12 | | diversityRatio | 0.2364217252396166 | | totalSentences | 313 | | uniqueOpeners | 74 | |
| 100.00% | Adverb-first sentence starts | Target: ≥3% sentences starting with an adverb | | adverbCount | 7 | | totalSentences | 161 | | matches | | 0 | "Good enough for a man" | | 1 | "Even the street noise dulled." | | 2 | "More dangerous than charm." | | 3 | "Just a man in Eva’s" | | 4 | "Instead she stayed where she" | | 5 | "Then he reached up, slow" | | 6 | "Somewhere on the windowsill, Ptolemy" |
| | ratio | 0.043 | |
| 28.70% | Pronoun-first sentence starts | Target: ≤30% sentences starting with a pronoun | | pronounCount | 77 | | totalSentences | 161 | | matches | | 0 | "His ivory-handled cane rested against" | | 1 | "She kept the door where" | | 2 | "His mouth twitched, then pulled" | | 3 | "His hand tightened on the" | | 4 | "He let out a breath" | | 5 | "He held her gaze and" | | 6 | "His face had gone pale" | | 7 | "It shifted her a step" | | 8 | "He crossed the threshold." | | 9 | "she muttered, and shut the" | | 10 | "He leaned the cane against" | | 11 | "She stared at him until" | | 12 | "She jerked her chin towards" | | 13 | "She went through the kitchen" | | 14 | "She grabbed the first-aid tin" | | 15 | "He had taken off his" | | 16 | "His waistcoat hung open." | | 17 | "She put the tin on" | | 18 | "She soaked cotton and pressed" | | 19 | "He hissed through his teeth" |
| | ratio | 0.478 | |
| 31.43% | Subject-first sentence starts | Target: ≤72% sentences starting with a subject | | subjectCount | 138 | | totalSentences | 161 | | matches | | 0 | "The third deadbolt scraped back." | | 1 | "Aurora pulled the door open" | | 2 | "Lucien Moreau filled the doorway" | | 3 | "Blood ran from a cut" | | 4 | "His ivory-handled cane rested against" | | 5 | "The black one swallowed it." | | 6 | "Ptolemy wound round Aurora’s ankles" | | 7 | "Lucien looked past her shoulder" | | 8 | "She kept the door where" | | 9 | "His mouth twitched, then pulled" | | 10 | "Rain slid off his coat" | | 11 | "A door somewhere downstairs opened," | | 12 | "Lucien shifted his weight." | | 13 | "His hand tightened on the" | | 14 | "The pale knuckles stood out" | | 15 | "Aurora’s gaze dropped to it." | | 16 | "He let out a breath" | | 17 | "He held her gaze and" | | 18 | "Rain clung to his lashes." | | 19 | "His face had gone pale" |
| | ratio | 0.857 | |
| 62.11% | Subordinate conjunction sentence starts | Target: ≥2% sentences starting with a subordinating conjunction | | subConjCount | 2 | | totalSentences | 161 | | matches | | 0 | "Even with her back turned" | | 1 | "If anything, the closeness put" |
| | ratio | 0.012 | |
| 97.51% | Technical jargon density | Target: ≤6% sentences with technical-jargon patterns | | analyzedSentences | 63 | | technicalSentenceCount | 4 | | matches | | 0 | "Eva kept supplies for fieldwork that looked too much like grave-robbing for Aurora’s taste." | | 1 | "Lucien looked at her wrist as if it had burned him." | | 2 | "Just a man in Eva’s tiny kitchen with half his shirt hanging off and stitches in his side, looking at her as if the next breath might cost him something he had …" | | 3 | "Aurora’s chest tightened with a feeling she did not want to name because naming it would make it real and she was still angry and he was still the man who had l…" |
| |
| 100.00% | Useless dialogue additions | Target: ≤5% dialogue tags with trailing filler fragments | | totalTags | 4 | | uselessAdditionCount | 0 | | matches | (empty) | |
| 100.00% | Dialogue tag variety (said vs. fancy) | Target: ≤10% fancy dialogue tags | | totalTags | 3 | | fancyCount | 3 | | fancyTags | | 0 | "she muttered (mutter)" | | 1 | "he murmured (murmur)" | | 2 | "he murmured (murmur)" |
| | dialogueSentences | 137 | | tagDensity | 0.022 | | leniency | 0.044 | | rawRatio | 1 | | effectiveRatio | 0.044 | |