| 100.00% | Adverbs in dialogue tags | Target: ≤10% dialogue tags with adverbs | |
| 94.20% | AI-ism adverb frequency | Target: <2% AI-ism adverbs (58 tracked) | | wordCount | 2585 | | totalAiIsmAdverbs | 3 | | found | | | highlights | | 0 | "sharply" | | 1 | "really" | | 2 | "precisely" |
| |
| 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) | |
| 82.59% | AI-ism word frequency | Target: <2% AI-ism words (290 tracked) | | wordCount | 2585 | | totalAiIsms | 9 | | found | | | highlights | | 0 | "unreadable" | | 1 | "silence" | | 2 | "stomach" | | 3 | "familiar" | | 4 | "remarkable" | | 5 | "flicked" | | 6 | "chill" | | 7 | "jaw clenched" | | 8 | "pulse" |
| |
| 66.67% | Cliché density | Target: ≤1 cliche(s) per 800-word window | | totalCliches | 3 | | maxInWindow | 2 | | found | | 0 | | label | "let out a breath" | | count | 1 |
| | 1 | | label | "stomach dropped/sank" | | count | 1 |
| | 2 | | label | "jaw/fists clenched" | | count | 1 |
|
| | highlights | | 0 | "let out a breath" | | 1 | "stomach dropped" | | 2 | "jaw clenched" |
| |
| 100.00% | Emotion telling (show vs. tell) | Target: ≤3% sentences with emotion telling | | emotionTells | 0 | | narrationSentences | 154 | | matches | (empty) | |
| 100.00% | Filter word density | Target: ≤3% sentences with filter/hedge words | | filterCount | 2 | | hedgeCount | 1 | | narrationSentences | 154 | | filterMatches | | | hedgeMatches | | |
| 100.00% | Gibberish response detection | Target: ≤1% gibberish-like sentences (hard fail if a sentence exceeds 800 words) | | analyzedSentences | 315 | | gibberishSentences | 0 | | adjustedGibberishSentences | 0 | | longSentenceCount | 0 | | runOnParagraphCount | 0 | | giantParagraphCount | 0 | | wordSaladCount | 0 | | repetitionLoopCount | 0 | | controlTokenCount | 0 | | maxSentenceWordsSeen | 78 | | ratio | 0 | | matches | (empty) | |
| 100.00% | Markdown formatting overuse | Target: ≤5% words in markdown formatting | | markdownSpans | 0 | | markdownWords | 0 | | totalWords | 2584 | | ratio | 0 | | matches | (empty) | |
| 100.00% | Missing dialogue indicators (quotation marks) | Target: ≤10% speech attributions without quotation marks | | totalAttributions | 14 | | unquotedAttributions | 0 | | matches | (empty) | |
| 50.00% | Name drop frequency | Target: ≤1.0 per-name mentions per 100 words | | totalMentions | 65 | | wordCount | 1663 | | uniqueNames | 12 | | maxNameDensity | 1.56 | | worstName | "Aurora" | | maxWindowNameDensity | 3.5 | | worstWindowName | "Aurora" | | discoveredNames | | Brick | 1 | | Lane | 1 | | Aurora | 26 | | Clerkenwell | 1 | | Stay | 1 | | Eva | 6 | | Edinburgh | 1 | | London | 1 | | French | 1 | | Lucien | 21 | | Enochian | 1 | | Ptolemy | 4 |
| | persons | | 0 | "Aurora" | | 1 | "Stay" | | 2 | "Eva" | | 3 | "Lucien" | | 4 | "Enochian" | | 5 | "Ptolemy" |
| | places | | 0 | "Brick" | | 1 | "Lane" | | 2 | "Clerkenwell" | | 3 | "Edinburgh" | | 4 | "London" | | 5 | "French" |
| | globalScore | 0.718 | | windowScore | 0.5 | |
| 100.00% | Narrator intent-glossing | Target: ≤2% narration sentences with intent-glossing patterns | | analyzedSentences | 113 | | glossingSentenceCount | 0 | | matches | (empty) | |
| 100.00% | "Not X but Y" pattern overuse | Target: ≤1 "not X but Y" per 1000 words | | totalMatches | 0 | | per1kWords | 0 | | wordCount | 2584 | | matches | (empty) | |
| 100.00% | Overuse of "that" (subordinate clause padding) | Target: ≤2% sentences with "that" clauses | | thatCount | 2 | | totalSentences | 315 | | matches | | 0 | "hated that she wanted that answer" |
| |
| 100.00% | Paragraph length variance | Target: CV ≥0.5 for paragraph word counts | | totalParagraphs | 219 | | mean | 11.8 | | std | 15.43 | | cv | 1.308 | | sampleLengths | | 0 | 11 | | 1 | 13 | | 2 | 20 | | 3 | 63 | | 4 | 10 | | 5 | 7 | | 6 | 3 | | 7 | 16 | | 8 | 3 | | 9 | 16 | | 10 | 1 | | 11 | 18 | | 12 | 8 | | 13 | 3 | | 14 | 5 | | 15 | 7 | | 16 | 12 | | 17 | 72 | | 18 | 3 | | 19 | 3 | | 20 | 2 | | 21 | 8 | | 22 | 5 | | 23 | 7 | | 24 | 84 | | 25 | 9 | | 26 | 12 | | 27 | 7 | | 28 | 4 | | 29 | 11 | | 30 | 73 | | 31 | 4 | | 32 | 9 | | 33 | 6 | | 34 | 9 | | 35 | 16 | | 36 | 13 | | 37 | 6 | | 38 | 5 | | 39 | 6 | | 40 | 72 | | 41 | 11 | | 42 | 2 | | 43 | 5 | | 44 | 9 | | 45 | 11 | | 46 | 2 | | 47 | 9 | | 48 | 24 | | 49 | 2 |
| |
| 100.00% | Passive voice overuse | Target: ≤2% passive sentences | | passiveCount | 0 | | totalSentences | 154 | | matches | (empty) | |
| 100.00% | Past progressive (was/were + -ing) overuse | Target: ≤2% past progressive verbs | | pastProgressiveCount | 0 | | totalVerbs | 264 | | matches | (empty) | |
| 100.00% | Em-dash & semicolon overuse | Target: ≤2% sentences with em-dashes/semicolons | | emDashCount | 1 | | semicolonCount | 0 | | flaggedSentences | 1 | | totalSentences | 315 | | ratio | 0.003 | | matches | | 0 | "She could still see that other night if she let herself—his flat in Clerkenwell, all polished wood and low lamps, his hand at the small of her back, the smell of smoke and bergamot on his collar, the moment he pulled away to answer a phone call he never explained, and the week after that, and the silence after that, and then the one message delivered through somebody else: Stay out of this, for your own good." |
| |
| 98.78% | Purple prose (modifier overload) | Target: <4% adverbs, <2% -ly adverbs, no adj stacking | | wordCount | 1667 | | adjectiveStacks | 0 | | stackExamples | (empty) | | adverbCount | 69 | | adverbRatio | 0.041391721655668866 | | lyAdverbCount | 5 | | lyAdverbRatio | 0.002999400119976005 | |
| 100.00% | Repeated phrase echo | Target: ≤20% sentences with echoes (window: 2) | | totalSentences | 315 | | echoCount | 0 | | echoWords | (empty) | |
| 100.00% | Sentence length variance | Target: CV ≥0.4 for sentence word counts | | totalSentences | 315 | | mean | 8.2 | | std | 7.34 | | cv | 0.894 | | sampleLengths | | 0 | 11 | | 1 | 13 | | 2 | 20 | | 3 | 36 | | 4 | 8 | | 5 | 9 | | 6 | 4 | | 7 | 6 | | 8 | 10 | | 9 | 7 | | 10 | 3 | | 11 | 7 | | 12 | 9 | | 13 | 3 | | 14 | 10 | | 15 | 6 | | 16 | 1 | | 17 | 12 | | 18 | 6 | | 19 | 8 | | 20 | 3 | | 21 | 5 | | 22 | 7 | | 23 | 6 | | 24 | 6 | | 25 | 8 | | 26 | 8 | | 27 | 25 | | 28 | 31 | | 29 | 3 | | 30 | 3 | | 31 | 2 | | 32 | 8 | | 33 | 5 | | 34 | 7 | | 35 | 7 | | 36 | 77 | | 37 | 4 | | 38 | 5 | | 39 | 12 | | 40 | 3 | | 41 | 4 | | 42 | 4 | | 43 | 11 | | 44 | 7 | | 45 | 6 | | 46 | 3 | | 47 | 16 | | 48 | 41 | | 49 | 4 |
| |
| 45.87% | Sentence opener variety | Target: ≥60% unique sentence openers | | consecutiveRepeats | 13 | | diversityRatio | 0.24126984126984127 | | totalSentences | 315 | | uniqueOpeners | 76 | |
| 0.00% | Adverb-first sentence starts | Target: ≥3% sentences starting with an adverb | | adverbCount | 0 | | totalSentences | 149 | | matches | (empty) | | ratio | 0 | |
| 64.30% | Pronoun-first sentence starts | Target: ≤30% sentences starting with a pronoun | | pronounCount | 58 | | totalSentences | 149 | | matches | | 0 | "His platinum hair stayed neat" | | 1 | "His mouth twitched, not enough" | | 2 | "He lowered his gaze to" | | 3 | "It moved over her oversized" | | 4 | "She could still see that" | | 5 | "She had deleted it." | | 6 | "She had memorised it first." | | 7 | "She should have shut the" | | 8 | "She knew it." | | 9 | "She watched him." | | 10 | "His cane stood planted, but" | | 11 | "Her eyes dropped to his" | | 12 | "He exhaled through his nose." | | 13 | "She turned on him." | | 14 | "His expression changed at once," | | 15 | "She pointed with her chin" | | 16 | "He laid the coat over" | | 17 | "Her stomach dropped." | | 18 | "She looked up sharply." | | 19 | "She crossed to him with" |
| | ratio | 0.389 | |
| 0.00% | Subject-first sentence starts | Target: ≤72% sentences starting with a subject | | subjectCount | 139 | | totalSentences | 149 | | matches | | 0 | "The first deadbolt scraped back," | | 1 | "Aurora kept one hand on" | | 2 | "The corridor light caught a" | | 3 | "Lucien stood on the landing" | | 4 | "Rain had darkened the shoulders" | | 5 | "His platinum hair stayed neat" | | 6 | "The other sat black and" | | 7 | "Ptolemy darted between Aurora’s ankles" | | 8 | "Aurora tightened her grip on" | | 9 | "Lucien looked past her at" | | 10 | "His mouth twitched, not enough" | | 11 | "He lowered his gaze to" | | 12 | "Aurora laughed once, hard and" | | 13 | "The rain ticked against the" | | 14 | "Lucien rested both hands on" | | 15 | "It moved over her oversized" | | 16 | "The words hung there, clean" | | 17 | "Aurora’s fingers dug into the" | | 18 | "She could still see that" | | 19 | "She had deleted it." |
| | ratio | 0.933 | |
| 0.00% | Subordinate conjunction sentence starts | Target: ≥2% sentences starting with a subordinating conjunction | | subConjCount | 0 | | totalSentences | 149 | | matches | (empty) | | ratio | 0 | |
| 100.00% | Technical jargon density | Target: ≤6% sentences with technical-jargon patterns | | analyzedSentences | 66 | | technicalSentenceCount | 1 | | matches | | 0 | "Lucien stood on the landing as if Brick Lane had rolled out a red carpet for him instead of a strip of worn lino that smelled of old oil and cumin from the curr…" |
| |
| 100.00% | Useless dialogue additions | Target: ≤5% dialogue tags with trailing filler fragments | | totalTags | 0 | | uselessAdditionCount | 0 | | matches | (empty) | |
| 100.00% | Dialogue tag variety (said vs. fancy) | Target: ≤10% fancy dialogue tags | |