| 100.00% | Adverbs in dialogue tags | Target: ≤10% dialogue tags with adverbs | |
| 95.73% | AI-ism adverb frequency | Target: <2% AI-ism adverbs (58 tracked) | | wordCount | 1170 | | totalAiIsmAdverbs | 1 | | 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) | |
| 31.62% | AI-ism word frequency | Target: <2% AI-ism words (290 tracked) | | wordCount | 1170 | | totalAiIsms | 16 | | found | | | highlights | | 0 | "echoing" | | 1 | "crystal" | | 2 | "rhythmic" | | 3 | "glint" | | 4 | "pulsed" | | 5 | "familiar" | | 6 | "traced" | | 7 | "flicker" | | 8 | "weight" | | 9 | "pulse" | | 10 | "stomach" | | 11 | "predator" | | 12 | "facade" | | 13 | "measured" | | 14 | "warmth" |
| |
| 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 | 99 | | matches | (empty) | |
| 100.00% | Filter word density | Target: ≤3% sentences with filter/hedge words | | filterCount | 1 | | hedgeCount | 0 | | narrationSentences | 99 | | filterMatches | | | hedgeMatches | (empty) | |
| 100.00% | Gibberish response detection | Target: ≤1% gibberish-like sentences (hard fail if a sentence exceeds 800 words) | | analyzedSentences | 99 | | gibberishSentences | 0 | | adjustedGibberishSentences | 0 | | longSentenceCount | 0 | | runOnParagraphCount | 0 | | giantParagraphCount | 0 | | wordSaladCount | 0 | | repetitionLoopCount | 0 | | controlTokenCount | 0 | | repeatedSegmentCount | 0 | | maxSentenceWordsSeen | 38 | | ratio | 0 | | matches | (empty) | |
| 100.00% | Markdown formatting overuse | Target: ≤5% words in markdown formatting | | markdownSpans | 0 | | markdownWords | 0 | | totalWords | 1167 | | ratio | 0 | | matches | (empty) | |
| 100.00% | Missing dialogue indicators (quotation marks) | Target: ≤10% speech attributions without quotation marks | | totalAttributions | 2 | | unquotedAttributions | 0 | | matches | (empty) | |
| 66.67% | Name drop frequency | Target: ≤1.0 per-name mentions per 100 words | | totalMentions | 46 | | wordCount | 1167 | | uniqueNames | 11 | | maxNameDensity | 0.86 | | worstName | "You" | | maxWindowNameDensity | 3 | | worstWindowName | "You" | | discoveredNames | | Raven | 2 | | Nest | 2 | | Soho | 1 | | London | 4 | | Crescent | 1 | | Rory | 5 | | Cardiff | 3 | | Silas | 9 | | Evan | 8 | | Underground | 1 | | You | 10 |
| | persons | | 0 | "Raven" | | 1 | "Nest" | | 2 | "Rory" | | 3 | "Silas" | | 4 | "Evan" | | 5 | "You" |
| | places | | 0 | "Soho" | | 1 | "London" | | 2 | "Cardiff" |
| | globalScore | 1 | | windowScore | 0.667 | |
| 57.41% | Narrator intent-glossing | Target: ≤2% narration sentences with intent-glossing patterns | | analyzedSentences | 81 | | glossingSentenceCount | 3 | | matches | | 0 | "felt like another woman’s biography" | | 1 | "looked like it had seen enough wars to se" | | 2 | "looked like a ghost" |
| |
| 100.00% | "Not X but Y" pattern overuse | Target: ≤1 "not X but Y" per 1000 words | | totalMatches | 0 | | per1kWords | 0 | | wordCount | 1167 | | matches | (empty) | |
| 100.00% | Overuse of "that" (subordinate clause padding) | Target: ≤2% sentences with "that" clauses | | thatCount | 1 | | totalSentences | 99 | | matches | | |
| 100.00% | Paragraph length variance | Target: CV ≥0.5 for paragraph word counts | | totalParagraphs | 30 | | mean | 38.9 | | std | 22.4 | | cv | 0.576 | | sampleLengths | | 0 | 97 | | 1 | 13 | | 2 | 87 | | 3 | 59 | | 4 | 5 | | 5 | 58 | | 6 | 13 | | 7 | 60 | | 8 | 21 | | 9 | 46 | | 10 | 22 | | 11 | 28 | | 12 | 31 | | 13 | 45 | | 14 | 39 | | 15 | 58 | | 16 | 23 | | 17 | 41 | | 18 | 26 | | 19 | 21 | | 20 | 49 | | 21 | 36 | | 22 | 24 | | 23 | 23 | | 24 | 22 | | 25 | 46 | | 26 | 36 | | 27 | 36 | | 28 | 16 | | 29 | 86 |
| |
| 98.17% | Passive voice overuse | Target: ≤2% passive sentences | | passiveCount | 2 | | totalSentences | 99 | | matches | | 0 | "is supposed" | | 1 | "been told" |
| |
| 100.00% | Past progressive (was/were + -ing) overuse | Target: ≤2% past progressive verbs | | pastProgressiveCount | 2 | | totalVerbs | 198 | | matches | | 0 | "were still running" | | 1 | "were cracking" |
| |
| 0.00% | Em-dash & semicolon overuse | Target: ≤2% sentences with em-dashes/semicolons | | emDashCount | 3 | | semicolonCount | 4 | | flaggedSentences | 7 | | totalSentences | 99 | | ratio | 0.071 | | matches | | 0 | "The Crescent scar on her left wrist pulsed—a phantom ache from a childhood that felt like another woman’s biography." | | 1 | "He didn't look like an abuser; he looked like a ghost." | | 2 | "Time hadn't just passed; it had carved him out, leaving only the sharp edges." | | 3 | "She felt the weight of her choice to leave—the abandoned law school, the flight to London, the nights she spent shivering in the back room of this bar while Silas taught her how to hold her own." | | 4 | "The regret wasn't in leaving; it was in the years she spent pretending he didn't dictate the rhythm of her pulse." | | 5 | "It wasn't hatred anymore; it was worse." | | 6 | "She felt nothing—no fear, no longing, just the steady, measured beat of her own heart." |
| |
| 94.00% | Purple prose (modifier overload) | Target: <4% adverbs, <2% -ly adverbs, no adj stacking | | wordCount | 1171 | | adjectiveStacks | 1 | | stackExamples | | 0 | "cold, hollow steel-edged stillness." |
| | adverbCount | 27 | | adverbRatio | 0.02305721605465414 | | lyAdverbCount | 3 | | lyAdverbRatio | 0.0025619128949615714 | |
| 100.00% | Repeated phrase echo | Target: ≤20% sentences with echoes (window: 2) | | totalSentences | 99 | | echoCount | 0 | | echoWords | (empty) | |
| 100.00% | Sentence length variance | Target: CV ≥0.4 for sentence word counts | | totalSentences | 99 | | mean | 11.79 | | std | 6.58 | | cv | 0.558 | | sampleLengths | | 0 | 17 | | 1 | 10 | | 2 | 15 | | 3 | 13 | | 4 | 15 | | 5 | 27 | | 6 | 2 | | 7 | 11 | | 8 | 10 | | 9 | 19 | | 10 | 19 | | 11 | 3 | | 12 | 20 | | 13 | 16 | | 14 | 5 | | 15 | 5 | | 16 | 19 | | 17 | 7 | | 18 | 23 | | 19 | 1 | | 20 | 4 | | 21 | 11 | | 22 | 10 | | 23 | 26 | | 24 | 11 | | 25 | 13 | | 26 | 12 | | 27 | 11 | | 28 | 12 | | 29 | 9 | | 30 | 9 | | 31 | 7 | | 32 | 5 | | 33 | 16 | | 34 | 12 | | 35 | 10 | | 36 | 17 | | 37 | 7 | | 38 | 17 | | 39 | 5 | | 40 | 3 | | 41 | 18 | | 42 | 7 | | 43 | 11 | | 44 | 20 | | 45 | 12 | | 46 | 19 | | 47 | 14 | | 48 | 8 | | 49 | 9 |
| |
| 38.89% | Sentence opener variety | Target: ≥60% unique sentence openers | | consecutiveRepeats | 11 | | diversityRatio | 0.26262626262626265 | | totalSentences | 99 | | uniqueOpeners | 26 | |
| 0.00% | Adverb-first sentence starts | Target: ≥3% sentences starting with an adverb | | adverbCount | 0 | | totalSentences | 95 | | matches | (empty) | | ratio | 0 | |
| 0.00% | Pronoun-first sentence starts | Target: ≤30% sentences starting with a pronoun | | pronounCount | 55 | | totalSentences | 95 | | matches | | 0 | "She pushed through the heavy" | | 1 | "He glanced up, his hazel" | | 2 | "She set the insulated delivery" | | 3 | "She didn't move." | | 4 | "He nursed a whiskey, the" | | 5 | "His face was a map" | | 6 | "It’s been a lifetime." | | 7 | "She gripped the strap of" | | 8 | "He didn't look like an" | | 9 | "I thought the city was" | | 10 | "She stepped back, the leather" | | 11 | "He didn't carry the arrogance" | | 12 | "He carried a cold, hollow" | | 13 | "They find their way back" | | 14 | "She moved to the bar," | | 15 | "It wasn’t the scent of" | | 16 | "It was the scent of" | | 17 | "I’m not the girl who" | | 18 | "He rested his hands on" | | 19 | "His signet ring shone like" |
| | ratio | 0.579 | |
| 0.00% | Subject-first sentence starts | Target: ≤72% sentences starting with a subject | | subjectCount | 88 | | totalSentences | 95 | | matches | | 0 | "The green neon sign of" | | 1 | "Aurora wiped her forehead, the" | | 2 | "She pushed through the heavy" | | 3 | "Silas stood behind the mahogany" | | 4 | "He glanced up, his hazel" | | 5 | "The noodles will be cold," | | 6 | "She set the insulated delivery" | | 7 | "The Crescent scar on her" | | 8 | "Silas gestured toward a corner" | | 9 | "She didn't move." | | 10 | "A man sat in the" | | 11 | "He nursed a whiskey, the" | | 12 | "The man turned his head." | | 13 | "The movement was slow, deliberate." | | 14 | "His face was a map" | | 15 | "Sunlight hit his features as" | | 16 | "A jagged line of scar" | | 17 | "It’s been a lifetime." | | 18 | "She gripped the strap of" | | 19 | "The breath left her lungs" |
| | ratio | 0.926 | |
| 52.63% | Subordinate conjunction sentence starts | Target: ≥2% sentences starting with a subordinating conjunction | | subConjCount | 1 | | totalSentences | 95 | | matches | | 0 | "Because if you did, you’re" |
| | ratio | 0.011 | |
| 100.00% | Technical jargon density | Target: ≤6% sentences with technical-jargon patterns | | analyzedSentences | 58 | | technicalSentenceCount | 2 | | matches | | 0 | "The Crescent scar on her left wrist pulsed—a phantom ache from a childhood that felt like another woman’s biography." | | 1 | "The facade of the hardened traveler slipped, revealing the flickering, insecure boy who had terrified her for so long." |
| |
| 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 | |