| 100.00% | Adverbs in dialogue tags | Target: ≤10% dialogue tags with adverbs | |
| 96.03% | AI-ism adverb frequency | Target: <2% AI-ism adverbs (58 tracked) | | wordCount | 1259 | | totalAiIsmAdverbs | 1 | | 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) | |
| 48.37% | AI-ism word frequency | Target: <2% AI-ism words (290 tracked) | | wordCount | 1259 | | totalAiIsms | 13 | | found | | | highlights | | 0 | "shattered" | | 1 | "porcelain" | | 2 | "rhythmic" | | 3 | "shimmered" | | 4 | "processed" | | 5 | "scanning" | | 6 | "weight" | | 7 | "firmly" | | 8 | "standard" | | 9 | "flickered" | | 10 | "etching" | | 11 | "gloom" |
| |
| 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 | 103 | | matches | (empty) | |
| 45.77% | Filter word density | Target: ≤3% sentences with filter/hedge words | | filterCount | 2 | | hedgeCount | 5 | | narrationSentences | 103 | | filterMatches | | | hedgeMatches | | 0 | "tried to" | | 1 | "seemed to" | | 2 | "began to" | | 3 | "begin to" |
| |
| 100.00% | Gibberish response detection | Target: ≤1% gibberish-like sentences (hard fail if a sentence exceeds 800 words) | | analyzedSentences | 103 | | gibberishSentences | 0 | | adjustedGibberishSentences | 0 | | longSentenceCount | 0 | | runOnParagraphCount | 0 | | giantParagraphCount | 0 | | wordSaladCount | 0 | | repetitionLoopCount | 0 | | controlTokenCount | 0 | | repeatedSegmentCount | 0 | | maxSentenceWordsSeen | 36 | | ratio | 0 | | matches | (empty) | |
| 100.00% | Markdown formatting overuse | Target: ≤5% words in markdown formatting | | markdownSpans | 0 | | markdownWords | 0 | | totalWords | 1255 | | ratio | 0 | | matches | (empty) | |
| 100.00% | Missing dialogue indicators (quotation marks) | Target: ≤10% speech attributions without quotation marks | | totalAttributions | 4 | | unquotedAttributions | 0 | | matches | (empty) | |
| 100.00% | Name drop frequency | Target: ≤1.0 per-name mentions per 100 words | | totalMentions | 32 | | wordCount | 1255 | | uniqueNames | 10 | | maxNameDensity | 0.64 | | worstName | "Quinn" | | maxWindowNameDensity | 1.5 | | worstWindowName | "You" | | discoveredNames | | Camden | 2 | | Quinn | 8 | | Detective | 4 | | Morris | 3 | | Harlow | 1 | | London | 1 | | Veil | 1 | | Market | 2 | | Eva | 2 | | You | 8 |
| | persons | | 0 | "Quinn" | | 1 | "Morris" | | 2 | "Market" | | 3 | "Eva" | | 4 | "You" |
| | places | | | globalScore | 1 | | windowScore | 1 | |
| 91.18% | Narrator intent-glossing | Target: ≤2% narration sentences with intent-glossing patterns | | analyzedSentences | 85 | | glossingSentenceCount | 2 | | matches | | 0 | "sounded like a hammer against an anvil" | | 1 | "looked like a witness who knew exactly wh" |
| |
| 100.00% | "Not X but Y" pattern overuse | Target: ≤1 "not X but Y" per 1000 words | | totalMatches | 1 | | per1kWords | 0.797 | | wordCount | 1255 | | matches | | 0 | "not a singular tragedy but a recurring casualty of a war she was only now beginning to" |
| |
| 100.00% | Overuse of "that" (subordinate clause padding) | Target: ≤2% sentences with "that" clauses | | thatCount | 1 | | totalSentences | 103 | | matches | | |
| 100.00% | Paragraph length variance | Target: CV ≥0.5 for paragraph word counts | | totalParagraphs | 31 | | mean | 40.48 | | std | 21.94 | | cv | 0.542 | | sampleLengths | | 0 | 72 | | 1 | 19 | | 2 | 40 | | 3 | 33 | | 4 | 79 | | 5 | 23 | | 6 | 62 | | 7 | 25 | | 8 | 65 | | 9 | 16 | | 10 | 62 | | 11 | 59 | | 12 | 11 | | 13 | 56 | | 14 | 11 | | 15 | 53 | | 16 | 27 | | 17 | 35 | | 18 | 65 | | 19 | 66 | | 20 | 7 | | 21 | 12 | | 22 | 40 | | 23 | 71 | | 24 | 24 | | 25 | 13 | | 26 | 51 | | 27 | 21 | | 28 | 30 | | 29 | 38 | | 30 | 69 |
| |
| 84.82% | Passive voice overuse | Target: ≤2% passive sentences | | passiveCount | 6 | | totalSentences | 103 | | matches | | 0 | "been pulled" | | 1 | "was circled" | | 2 | "been buried" | | 3 | "was ripped" | | 4 | "was pulled" | | 5 | "being anchored" |
| |
| 100.00% | Past progressive (was/were + -ing) overuse | Target: ≤2% past progressive verbs | | pastProgressiveCount | 1 | | totalVerbs | 213 | | matches | | |
| 0.00% | Em-dash & semicolon overuse | Target: ≤2% sentences with em-dashes/semicolons | | emDashCount | 4 | | semicolonCount | 3 | | flaggedSentences | 6 | | totalSentences | 103 | | ratio | 0.058 | | matches | | 0 | "Every sound in the station amplified; the drip of water from a hidden pipe sounded like a hammer against an anvil." | | 1 | "A stack of notes clipped to a map of London—a map that featured transit lines long buried or never built—caught her attention." | | 2 | "She watched the woman’s posture—the rigid, defensive curve of the spine, the way her eyes darted to the frost on the tracks." | | 3 | "My friend didn't just walk away; she was pulled into a currency exchange that doesn't accept human life as legal tender." | | 4 | "She realized then that the tracks weren't just metal; they were a conduit." | | 5 | "She felt the heavy, lingering weight of the past—the ghost of Morris, the unexplainable voids in the departmental archives, the way the world seemed to hold its breath whenever she got close to the truth." |
| |
| 100.00% | Purple prose (modifier overload) | Target: <4% adverbs, <2% -ly adverbs, no adj stacking | | wordCount | 1264 | | adjectiveStacks | 0 | | stackExamples | (empty) | | adverbCount | 37 | | adverbRatio | 0.029272151898734177 | | lyAdverbCount | 11 | | lyAdverbRatio | 0.00870253164556962 | |
| 100.00% | Repeated phrase echo | Target: ≤20% sentences with echoes (window: 2) | | totalSentences | 103 | | echoCount | 0 | | echoWords | (empty) | |
| 100.00% | Sentence length variance | Target: CV ≥0.4 for sentence word counts | | totalSentences | 103 | | mean | 12.18 | | std | 6.86 | | cv | 0.563 | | sampleLengths | | 0 | 14 | | 1 | 18 | | 2 | 19 | | 3 | 21 | | 4 | 8 | | 5 | 9 | | 6 | 2 | | 7 | 8 | | 8 | 20 | | 9 | 12 | | 10 | 6 | | 11 | 15 | | 12 | 8 | | 13 | 4 | | 14 | 8 | | 15 | 15 | | 16 | 6 | | 17 | 12 | | 18 | 10 | | 19 | 5 | | 20 | 23 | | 21 | 7 | | 22 | 7 | | 23 | 9 | | 24 | 8 | | 25 | 13 | | 26 | 5 | | 27 | 14 | | 28 | 22 | | 29 | 5 | | 30 | 7 | | 31 | 10 | | 32 | 3 | | 33 | 7 | | 34 | 4 | | 35 | 18 | | 36 | 14 | | 37 | 12 | | 38 | 10 | | 39 | 2 | | 40 | 14 | | 41 | 17 | | 42 | 21 | | 43 | 13 | | 44 | 11 | | 45 | 21 | | 46 | 22 | | 47 | 16 | | 48 | 11 | | 49 | 9 |
| |
| 36.25% | Sentence opener variety | Target: ≥60% unique sentence openers | | consecutiveRepeats | 16 | | diversityRatio | 0.3106796116504854 | | totalSentences | 103 | | uniqueOpeners | 32 | |
| 100.00% | Adverb-first sentence starts | Target: ≥3% sentences starting with an adverb | | adverbCount | 3 | | totalSentences | 100 | | matches | | 0 | "Just a short circuit." | | 1 | "Just a signature left behind" | | 2 | "Then you better start by" |
| | ratio | 0.03 | |
| 28.00% | Pronoun-first sentence starts | Target: ≤30% sentences starting with a pronoun | | pronounCount | 48 | | totalSentences | 100 | | matches | | 0 | "She adjusted the heavy coat" | | 1 | "They don’t follow the trajectory" | | 2 | "She stepped toward the center" | | 3 | "It shimmered with an oily," | | 4 | "It's just an electrical surge," | | 5 | "She pulled out a small" | | 6 | "It didn't belong to a" | | 7 | "It hummed, a low-frequency vibration" | | 8 | "She pulled a brass, verdigris-covered" | | 9 | "It spun in frantic, jagged" | | 10 | "They've been pulled toward the" | | 11 | "She ran a gloved finger" | | 12 | "She stood, her jaw tightening." | | 13 | "You're seeing ghosts again, Harlow." | | 14 | "She pivoted, her eyes scanning" | | 15 | "Her hand drifted to the" | | 16 | "It bore the unmistakable, eccentric" | | 17 | "She moved with a singular," | | 18 | "She bypassed the officer and" | | 19 | "She slid the satchel open" |
| | ratio | 0.48 | |
| 50.00% | Subject-first sentence starts | Target: ≤72% sentences starting with a subject | | subjectCount | 82 | | totalSentences | 100 | | matches | | 0 | "The damp air of the" | | 1 | "Harriet Quinn stepped over a" | | 2 | "She adjusted the heavy coat" | | 3 | "They don’t follow the trajectory" | | 4 | "She stepped toward the center" | | 5 | "A thin layer of frost" | | 6 | "It shimmered with an oily," | | 7 | "It's just an electrical surge," | | 8 | "An old transformer blew when" | | 9 | "The forensic team processed the" | | 10 | "Quinn knelt, her knees hitting" | | 11 | "She pulled out a small" | | 12 | "It didn't belong to a" | | 13 | "It hummed, a low-frequency vibration" | | 14 | "She pulled a brass, verdigris-covered" | | 15 | "The needle didn't point north." | | 16 | "It spun in frantic, jagged" | | 17 | "They've been pulled toward the" | | 18 | "She ran a gloved finger" | | 19 | "The mortar had turned to" |
| | ratio | 0.82 | |
| 50.00% | Subordinate conjunction sentence starts | Target: ≥2% sentences starting with a subordinating conjunction | | subConjCount | 1 | | totalSentences | 100 | | matches | | 0 | "Because the Market doesn't just" |
| | ratio | 0.01 | |
| 83.33% | Technical jargon density | Target: ≤6% sentences with technical-jargon patterns | | analyzedSentences | 60 | | technicalSentenceCount | 5 | | matches | | 0 | "It shimmered with an oily, unnatural violet sheen that defied the shadows." | | 1 | "It hummed, a low-frequency vibration that rattled the fillings in her teeth." | | 2 | "Inside lay books bound in cured, heavy hide, their pages curling at the edges as if scorched by an internal flame." | | 3 | "A stack of notes clipped to a map of London—a map that featured transit lines long buried or never built—caught her attention." | | 4 | "She stepped into the pool of light, revealing a freckled face that lacked the usual mask of a criminal." |
| |
| 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 | |