Run: 2026-03-18-01KM08BXF5TP5V15MPC83H5XPX

Run Details

Duration:
16.9s
Cost:
$0.015293
Provider:
OpenAI

Model input

System
You are an expert fiction writer. Always keep the following rules in mind: - Write in past tense and use General English spelling, grammar, and colloquialisms/slang. - Write in active voice - Always follow the "show, don't tell" principle. - Avoid adverbs and cliches and overused/commonly used phrases. Aim for fresh and original descriptions. - Convey events and story through dialogue. - Mix short, punchy sentences with long, descriptive ones. Drop fill words to add variety. - Skip "he/she said said" dialogue tags and convey people's actions or face expressions through their speech - Avoid mushy dialog and descriptions, have dialogue always continue the action, never stall or add unnecessary fluff. Vary the descriptions to not repeat yourself. - Put dialogue on its own paragraph to separate scene and action. - Reduce indicators of uncertainty like "trying" or "maybe" When writing text: - NEVER conclude the scene on your own, follow the beat instructions very closely. - NEVER end with foreshadowing. - NEVER write further than what I prompt you with. - AVOID imagining possible endings, NEVER deviate from the instructions. - STOP EARLY if the continuation contains what was required in the instructions. You do not need to fill out the full amount of words possible.
User/Human
Take into account the following glossary of characters/locations/items/lore... when writing your response: <codex> <character id="4412" name="Aurora Carter" aliases="Rory, Laila, Aurora, Carter, Malphora" pronouns="she/her" species="Human" storyRole="Protagonist"> <eyeColor>bright blue</eyeColor> <hair>straight shoulder-length black</hair> <height>5'6"</height> <age>25</age> <scar>small crescent-shaped scar on her left wrist from a childhood accident</scar> <description>Aurora, referred to by her friends as Rory, is cool-headed, intelligent, and known for quick out-of-the-box thinking.</description> <backstory>Born in Cardiff to an Irish barrister father (Brendan Carter) and Welsh teacher mother (Jennifer Carter née Ellis), Rory reluctantly pursued Pre-Law at Cardiff University. She fled to London at the behest of her childhood friend Eva after leaving an abusive ex named Evan. By day, Rory works part-time as a delivery person for Yu-Fei Cheung's Golden Empress restaurant. She lives in a flat above Silas' bar.</backstory> </character> <character id="4415" name="Lucien Moreau" aliases="Lucien, Luc, the Frenchman" pronouns="he/him" species="Half-Demon" storyRole="Ally"> <eyeColor>heterochromatic — one amber, one black</eyeColor> <hair>slicked-back platinum blond</hair> <height>5'11"</height> <age>32</age> <cane>ivory-handled cane that conceals a thin blade</cane> <dress>tailored charcoal suits</dress> <description>An impeccably dressed fixer and information broker in London's supernatural underworld. He speaks four languages fluently.</description> <backstory>Born in Marseille to a human mother and a demon father from the realm of Avaros.</backstory> </character> <location id="858" name="Eva's Flat" aliases="Eva's place, the flat on Brick Lane" realm="Earth"> <cat>tabby cat named Ptolemy</cat> <security>three deadbolts on the front door</security> <description>A cramped one-bedroom flat above a curry house on Brick Lane, East London. Every surface is covered with books, scrolls, and research notes.</description> </location> </codex> Continue the story using the following instructions: <instructions> Write a fully fleshed out scene of at least 1000 words in the romance genre. Two people who parted on complicated terms are forced together again when one shows up unannounced at the other's flat. There's history between them — attraction, hurt, and things left unsaid. Write the scene from the moment the door opens. Use the codex entries above as your world reference for characters and setting. Only include the prose of the scene without any markdown or commentary. </instructions>

Model response

AI
Rory cracked the first deadbolt, then the second, then the third with the same careful hand she used for everything she did not trust. When the door swung in, Lucien Moreau filled the frame like he owned the hallway, the stairwell, the whole damned building. Charcoal suit. Ivory cane tucked under one arm. Blond hair slicked back so clean it caught the weak light from the landing. One amber eye. One black. Rory kept one hand on the door edge and the other on the chain of her bag, as if she might swing it like a weapon. “You’ve got some nerve.” Lucien’s mouth shifted, not quite a smile, not quite a wince. “And you’ve not invited me in. How very rude, Rory.” She leaned her shoulder against the door, blocking him without moving a muscle. “You vanished.” “I believed distance had become fashionable.” “Don’t.” His gaze dropped to her wrist, to the crescent scar peeking from her sleeve, then lifted back to her face. That look landed harder than the rest of him. She hated that it still did. Behind her, the flat breathed around them. Paper piles sagged off the table. Half-open books made little cliffs on the floor. A stack of marked-up notes leaned against a bowl of stale fruit. Ptolemy, sprawled on the back of the sofa like a fat judge, opened one eye at Lucien and closed it again with visible disdain. Lucien’s nostrils flared once. “Your cat still judges me.” “Ptolemy has taste.” “I recall him biting my glove.” “He had good reason.” Lucien’s mouth twitched. “You let me stand in the hall for sport.” “I let you stand in the hall because I’m deciding whether to slam the door in your face.” His gaze slid over her, taking in the loose jumper, the rolled sleeves, the socks with the heel worn thin. Her pulse gave a stupid little kick she would have rather strangled. “You look well,” he said. She barked a laugh without humour. “That’s a lie.” “It was diplomacy.” “I don’t want diplomacy from you.” The hallway noise swelled around them. Someone downstairs shouted in rapid Hindi. The curry house smell crawled up the stairs, all cumin and fried oil. Lucien stood there, smelling faintly of cold rain and expensive soap, like he had stepped out of a different borough entirely. He lifted the cane a fraction. “May I come in, or do you prefer we conduct our reunion on the landing like schoolchildren?” “Reunion.” “Yes, that rather awkward thing where two people who have been on excellent terms with a wall in between them are forced to exchange words.” Rory stared at him. “You practised that in the mirror?” “One must prepare for important occasions.” “Is that what this is?” Lucien’s eyes held hers. For a beat, the hall went quiet around the edges. “Yes.” The word landed with a weight that made her stomach turn over. She hated him for coming here looking like that, polished and calm, as if he had not ripped a hole through her life and walked away through it. She opened the door wider, just enough. “If you’ve come to sell me something, get back in the lift.” “I’ve never sold you anything.” “You sold me a lie once.” The line of his jaw tightened. He moved past her anyway, careful with the cane, expensive shoes barely making a sound on the scuffed floorboards. Rory shut the door behind him and threw the bolts home one by one. The metal clicks sounded too loud in the narrow flat. Lucien stood in the middle of Eva’s living room, eyes adjusting as they swept over the chaos. “This place has not improved.” “It’s not here for your approval.” “No, I can see that.” Ptolemy rose, stretched, then hopped down from the sofa and padded straight to Lucien. Rory froze. The cat rubbed his flank against Lucien’s trouser leg. Rory stared. “That traitor.” Lucien looked down, one brow lifting. “I appear to have retained at least one admirer.” “Don’t encourage him.” Lucien crouched with careful grace, cane balanced against his knee. Ptolemy thrust his head under that elegant hand without a shred of dignity. Lucien scratched behind the cat’s ear and the creature purred loud enough to rattle the teacups on the windowsill. Rory crossed her arms. “You’re not supposed to be good at that.” “Good at what?” “At anything warm.” Lucien’s fingers stilled on the cat’s fur. When he looked up, the humour had gone out of his face. “Must I remind you that I am, in fact, a person and not a decorative knife?” “That was never the part I doubted.” His mouth parted, then shut. Ptolemy chose that moment to head-butt his hand and the tiny interruption broke the tension just enough to keep the room from snapping in half. Rory pointed at the sofa with one finger. “Sit. Or don’t. I don’t care.” Lucien rose in one smooth motion and settled on the far end of the sofa, cane across his knees. He did not sprawl. He never sprawled. Even seated, he looked arranged. Rory stayed standing. “Talk.” He folded his hands over the cane. “I need your help.” “No.” “You have not heard the issue.” “I don’t need to. The answer’s no.” “Rory.” She hated that he could say her name in that voice and make her chest tighten like he’d wrapped a hand around her ribs. “You do not get to come here looking all cut-glass and tragic and think I’m going to leap up to fix whatever mess you’ve made.” “Not my mess.” “That’s a new one.” Lucien took a breath through his nose, slow and measured. “One of my contacts has gone silent. He disappeared after a meeting in Whitechapel. The last thing he sent me was a set of names and a location. Your flat on Brick Lane happened to be the nearest place where I could arrive without a tail.” Rory gave him a flat look. “You turned up here because it was convenient.” “And because I wanted to see you.” Silence struck the room. Ptolemy lifted his head between them like a small furry referee. Rory almost wished she could blame the heat in her cheeks on the curry house downstairs. “Don’t do that.” “Do what?” “Say things like that and stand there with that face.” Lucien leaned back a fraction, all composed angles and old danger. “My face has never offended you before.” “It has offended me plenty. I just used to be distracted.” His amber eye flicked, quick as a blade. The black one followed with a slower, stranger intensity that always made her feel as if he could see through her skin. “You are still distracted,” he murmured. Rory laughed once. “That’s rich, coming from the man who disappeared without a word.” His shoulders barely moved, but she saw the change anyway. A tiny hardening around the mouth. The set of his throat. “I did not vanish without reason.” “Then say the reason.” “I cannot.” She threw her hands out. “Of course you can’t. You can never just talk. You always turn everything into a puzzle and then act surprised when people bleed on the floor trying to solve it.” That finally drew him upright. “I came here because I thought you might wish to know that someone has been asking after you.” She went still. “What?” “Not in a friendly manner.” “Who?” Lucien’s gaze shifted to the window, to the rain-streaked glass, then back to her face. “That remains under negotiation.” Rory stared at him for a long second, then crossed the room until she stood over him. “You used me to get in the door, didn’t you?” His chin lifted. He did not deny it. “Your security remains admirable.” “My security is three deadbolts and a cat with a grudge.” “It was enough to make certain people hesitate.” “Certain people.” “The kind who do not enjoy being seen.” Rory planted her hands on her hips. “You’re here because someone’s sniffing around me, and you thought that would make me grateful.” “I am here because someone is sniffing around you, and I did not fancy waiting until you discovered it by accident.” There it was. The old pull. The old problem. He could irritate her into fury and then hand her something that looked suspiciously like care, and it always unsettled her more than the lies. She looked away first. “You could have called.” “You changed your number.” “You could have emailed.” “You blocked my email.” “You could have sent a pigeon.” That got him. The smallest flash of amusement crossed his face before he swallowed it. “I do not own a pigeon.” “You’d know the right people.” His gaze settled on her mouth, just for a second, and the room became crowded with a memory she had no business entertaining. Lucien’s hand at her waist in a narrow alley. Lucien’s voice low in her ear. Lucien leaving before dawn with a coat thrown over one shoulder and no promise except the one he never said out loud. She stepped back so fast her heel struck a book on the floor. “Tell me the names.” “No.” “Lucien.” “No. Not yet.” “Then why are you here?” His eyes held hers. The air between them tightened. “Because I needed to know whether you were safe.” Rory went very still. “That’s your excuse?” “It is not an excuse.” “It sounds like one.” “It was the truth.” She laughed again, but this time it carried no humour at all. “You don’t get to turn up after months and say the truth like it fixes everything.” He rose. The movement shifted the room, made the sofa look smaller, the ceiling lower. He was close enough now that she could smell rain on his coat and the faint mineral note of his skin. Close enough that she had to work to keep her expression steady. “I have not come to fix anything.” “No?” “No.” He looked tired then. Not visibly. Not in the way a man looked tired after a long day. It sat deeper, behind the one black eye, tucked where even his tailored suit could not hide it. “I have come because I made a mistake.” Rory’s mouth went dry. He had never said that to her before. Not once. She tried to laugh it off and found the sound broken in her throat. “That’s not like you.” “No.” The answer came soft. Honest. It scared her more than any lie. She folded her arms tighter, as if that could hold her in place. “Start talking.” Lucien glanced toward the kitchen table buried under notes and maps. “First, we put a kettle on. You have been angry at me before breakfast, which I admit is a new low even for us.” Rory stared at him. “You walk in here with secrets, refuse to tell me who’s after me, and now you want tea?” “I want you calm enough to listen.” “I listen fine when people stop being impossible.” He moved past her toward the tiny kitchen alcove, cane tapping once against the floorboards. Rory watched him with narrowed eyes, half expecting him to open the wrong cupboard and insult the contents. Instead, he found the kettle with unnerving confidence and set it on the stove. Ptolemy jumped back onto the sofa and settled into a tight loaf, yellow eyes following both of them. Rory came after Lucien, stopping at the table so she could keep a bit of distance. He reached for a mug, then paused. “You still use the chipped one?” She glanced at the mug in his hand, the one with the cracked blue rim. “It pours tea.” “It was a gift.” “It was free.” His mouth curved, the faintest ghost of it. “You did keep it.” She pulled a chair out and sat backwards in it, arms folded over the back. “Don’t get cocky. I keep all sorts of rubbish.” Lucien poured water into the kettle from the tap, his sleeves riding up a fraction to show pale wrists and the edge of a cufflink. Rory hated how familiar the motion felt. Hated that some part of her body still remembered where his hands had been, where they should have stayed. He turned the gas on and faced her. “Someone sent a note to one of my clubs this morning. Your name was on it.” Rory’s expression hardened. “My name?” “Yes.” “What else?” “One line. ‘She still lives above the bar.’” The flat seemed to shift under her feet. “Who?” Lucien’s jaw flexed. “That is why I am here.” Rory watched him, watched the controlled stillness he wore like a second suit. She knew that look. He was holding something back. He always did. But this time there was strain under it, a crack in the polish. “You should have opened with that.” “I wanted to see whether you would throw me out first.” “And?” “And I am disappointed to find I rather expected you to.” Her eyes narrowed. “Lucien.” He crossed the tiny kitchen in two steps and stopped close enough that she had to tilt her chin to meet his gaze. The kettle clicked as it warmed on the stove behind him. Ptolemy let out a low, impatient mew. Lucien looked at her for a long, quiet beat. “I missed you,” he said. Rory’s breath caught. Her jaw tightened hard enough to ache. “That’s a terrible opening line.” “One of mine, then.” “Still terrible.” “I had not come prepared to charm you.” “You came prepared to manipulate me.” “Yes.” The honesty hit harder than any smooth excuse would have. Rory stood so quickly the chair legs scraped the floor. “There you are. That’s the Lucien I remember.” His eyes sharpened. “You remember more than that.” Her mouth opened, then shut. The flat felt too small for both their breathing. Lucien did not move away. He never did, not when it mattered. That had been part of the trouble between them from the start. He had stayed close enough to hurt and left her wanting the space to scream at him for it. The kettle began to rise toward a boil. Steam hissed under the lid. Rory stared at him across two feet of floor and a pile of old damage. “If someone put my address in a note,” she said, “you should have brought me the note.” “I did not wish to arrive empty-handed.” “What did you bring?” His gaze dropped to the cane at his side. “Bad news.” Rory gave a short, sharp exhale and looked toward the window, toward the rain dragging lines down the glass. “Fine.” Lucien’s brow lifted. “Fine?” “You can have tea. Then you tell me everything you know. Every name. Every place. Every lie you’ve already decided not to say.” His expression changed at that, not much, but enough. The strain eased at the edges. “And after?” Rory looked back at him, bright-eyed and furious and far too aware of how close he stood. “After, Lucien, I decide whether I’m still angry enough to kick you out.”
created_at"2026-03-18T10:37:52.497Z" 3/18/2026, 10:37:52 AM
model"openai/gpt-5.4-mini-20260317"
app_id182717
external_user(null)
streamedtrue
cancelledfalse
latency2713
moderation_latency(null)
generation_time16680
tokens_prompt1034
tokens_completion4238
native_tokens_prompt927
native_tokens_completion3244
native_tokens_completion_images0
native_tokens_reasoning57
native_tokens_cached0
num_media_prompt(null)
num_input_audio_prompt(null)
num_media_completion0
num_search_results(null)
origin"https://ncbench.com/"
is_byokfalse
finish_reason"stop"
native_finish_reason"completed"
usage0.01529325
router(null)
provider_responses
0
endpoint_id"9ee065b2-3d1c-43bc-bdd7-28af3b148282"
id"resp_06f05a5c750a1e6f0169ba80809328819583c17fafc675fe9b"
is_byokfalse
latency420
model_permaslug"openai/gpt-5.4-mini-20260317"
provider_name"OpenAI"
status200
user_agent"langchainjs-openai/1.0.0 ((node/v24.14.0; linux; x64))"
http_referer(null)
api_type"completions"
id"gen-1773830272-8VmGucun01tP77fNRWEg"
upstream_id"resp_06f05a5c750a1e6f0169ba80809328819583c17fafc675fe9b"
total_cost0.01529325
cache_discount(null)
upstream_inference_cost0
provider_name"OpenAI"

Evaluation details

Result Evaluator Details Meta Data
100.00% Adverbs in dialogue tags
Target: ≤10% dialogue tags with adverbs
totalTags4
adverbTagCount0
adverbTags(empty)
dialogueSentences138
tagDensity0.029
leniency0.058
rawRatio0
effectiveRatio0
94.05% AI-ism adverb frequency
Target: <2% AI-ism adverbs (58 tracked)
wordCount2522
totalAiIsmAdverbs3
found
0
adverb"very"
count2
1
adverb"quickly"
count1
highlights
0"very"
1"quickly"
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)
76.21% AI-ism word frequency
Target: <2% AI-ism words (290 tracked)
wordCount2522
totalAiIsms12
found
0
word"pulse"
count1
1
word"weight"
count1
2
word"stomach"
count1
3
word"tension"
count1
4
word"measured"
count1
5
word"the last thing"
count1
6
word"silence"
count1
7
word"flicked"
count1
8
word"intensity"
count1
9
word"unsettled"
count1
10
word"familiar"
count1
11
word"charm"
count1
highlights
0"pulse"
1"weight"
2"stomach"
3"tension"
4"measured"
5"the last thing"
6"silence"
7"flicked"
8"intensity"
9"unsettled"
10"familiar"
11"charm"
100.00% Cliché density
Target: ≤1 cliche(s) per 800-word window
totalCliches1
maxInWindow1
found
0
label"eyes widened/narrowed"
count1
highlights
0"eyes narrowed"
100.00% Emotion telling (show vs. tell)
Target: ≤3% sentences with emotion telling
emotionTells0
narrationSentences164
matches(empty)
99.30% Filter word density
Target: ≤3% sentences with filter/hedge words
filterCount2
hedgeCount3
narrationSentences164
filterMatches
0"feel"
1"look"
hedgeMatches
0"tried to"
1"seemed to"
2"began to"
100.00% Gibberish response detection
Target: ≤1% gibberish-like sentences (hard fail if a sentence exceeds 800 words)
analyzedSentences298
gibberishSentences0
adjustedGibberishSentences0
longSentenceCount0
runOnParagraphCount0
giantParagraphCount0
wordSaladCount0
repetitionLoopCount0
controlTokenCount0
maxSentenceWordsSeen46
ratio0
matches(empty)
100.00% Markdown formatting overuse
Target: ≤5% words in markdown formatting
markdownSpans0
markdownWords0
totalWords2522
ratio0
matches(empty)
100.00% Missing dialogue indicators (quotation marks)
Target: ≤10% speech attributions without quotation marks
totalAttributions19
unquotedAttributions0
matches(empty)
33.33% Name drop frequency
Target: ≤1.0 per-name mentions per 100 words
totalMentions65
wordCount1597
uniqueNames6
maxNameDensity1.75
worstName"Lucien"
maxWindowNameDensity4
worstWindowName"Lucien"
discoveredNames
Lucien28
Moreau1
Hindi1
Eva1
Rory27
Ptolemy7
persons
0"Lucien"
1"Moreau"
2"Eva"
3"Rory"
4"Ptolemy"
places(empty)
globalScore0.623
windowScore0.333
100.00% Narrator intent-glossing
Target: ≤2% narration sentences with intent-glossing patterns
analyzedSentences109
glossingSentenceCount1
matches
0"not quite a smile, not quite a wince"
1"not quite a wince"
100.00% "Not X but Y" pattern overuse
Target: ≤1 "not X but Y" per 1000 words
totalMatches1
per1kWords0.397
wordCount2522
matches
0"not much, but enough"
100.00% Overuse of "that" (subordinate clause padding)
Target: ≤2% sentences with "that" clauses
thatCount5
totalSentences298
matches
0"hated that it"
1"chose that moment"
2"hated that he"
3"Hated that some"
4"knew that look"
100.00% Paragraph length variance
Target: CV ≥0.5 for paragraph word counts
totalParagraphs229
mean11.01
std11.84
cv1.075
sampleLengths
024
148
226
34
411
510
613
72
86
91
1035
1157
124
135
143
156
164
173
189
1918
2032
215
226
233
243
256
2646
276
2817
291
3025
314
326
336
345
3514
361
3740
387
3912
405
416
4249
4317
445
456
465
4716
489
492
100.00% Passive voice overuse
Target: ≤2% passive sentences
passiveCount0
totalSentences164
matches(empty)
100.00% Past progressive (was/were + -ing) overuse
Target: ≤2% past progressive verbs
pastProgressiveCount1
totalVerbs273
matches
0"was holding"
100.00% Em-dash & semicolon overuse
Target: ≤2% sentences with em-dashes/semicolons
emDashCount0
semicolonCount0
flaggedSentences0
totalSentences298
ratio0
matches(empty)
95.13% Purple prose (modifier overload)
Target: <4% adverbs, <2% -ly adverbs, no adj stacking
wordCount1602
adjectiveStacks0
stackExamples(empty)
adverbCount73
adverbRatio0.04556803995006242
lyAdverbCount8
lyAdverbRatio0.004993757802746567
100.00% Repeated phrase echo
Target: ≤20% sentences with echoes (window: 2)
totalSentences298
echoCount0
echoWords(empty)
100.00% Sentence length variance
Target: CV ≥0.4 for sentence word counts
totalSentences298
mean8.46
std6.72
cv0.794
sampleLengths
024
121
22
36
414
53
62
726
84
911
1010
1113
122
136
141
1520
169
176
187
196
208
2112
2224
234
245
253
266
274
283
299
3018
3120
3212
335
346
353
363
376
386
396
4013
4121
426
4317
441
4525
464
476
486
495
43.62% Sentence opener variety
Target: ≥60% unique sentence openers
consecutiveRepeats19
diversityRatio0.21476510067114093
totalSentences298
uniqueOpeners64
43.86% Adverb-first sentence starts
Target: ≥3% sentences starting with an adverb
adverbCount2
totalSentences152
matches
0"Even seated, he looked arranged."
1"Instead, he found the kettle"
ratio0.013
83.16% Pronoun-first sentence starts
Target: ≤30% sentences starting with a pronoun
pronounCount52
totalSentences152
matches
0"She leaned her shoulder against"
1"His gaze dropped to her"
2"She hated that it still"
3"His gaze slid over her,"
4"Her pulse gave a stupid"
5"She barked a laugh without"
6"He lifted the cane a"
7"She hated him for coming"
8"She opened the door wider,"
9"He moved past her anyway,"
10"His mouth parted, then shut."
11"He did not sprawl."
12"He never sprawled."
13"He folded his hands over"
14"She hated that he could"
15"His amber eye flicked, quick"
16"His shoulders barely moved, but"
17"She threw her hands out."
18"She went still."
19"His chin lifted."
ratio0.342
6.05% Subject-first sentence starts
Target: ≤72% sentences starting with a subject
subjectCount138
totalSentences152
matches
0"Rory cracked the first deadbolt,"
1"Ivory cane tucked under one"
2"Rory kept one hand on"
3"Lucien’s mouth shifted, not quite"
4"She leaned her shoulder against"
5"His gaze dropped to her"
6"That look landed harder than"
7"She hated that it still"
8"Paper piles sagged off the"
9"A stack of marked-up notes"
10"Ptolemy, sprawled on the back"
11"Lucien’s nostrils flared once."
12"Lucien’s mouth twitched."
13"His gaze slid over her,"
14"Her pulse gave a stupid"
15"She barked a laugh without"
16"The hallway noise swelled around"
17"Someone downstairs shouted in rapid"
18"The curry house smell crawled"
19"Lucien stood there, smelling faintly"
ratio0.908
0.00% Subordinate conjunction sentence starts
Target: ≥2% sentences starting with a subordinating conjunction
subConjCount0
totalSentences152
matches(empty)
ratio0
100.00% Technical jargon density
Target: ≤6% sentences with technical-jargon patterns
analyzedSentences70
technicalSentenceCount1
matches
0"She hated him for coming here looking like that, polished and calm, as if he had not ripped a hole through her life and walked away through it."
100.00% Useless dialogue additions
Target: ≤5% dialogue tags with trailing filler fragments
totalTags4
uselessAdditionCount0
matches(empty)
100.00% Dialogue tag variety (said vs. fancy)
Target: ≤10% fancy dialogue tags
totalTags4
fancyCount1
fancyTags
0"he murmured (murmur)"
dialogueSentences138
tagDensity0.029
leniency0.058
rawRatio0.25
effectiveRatio0.014
85.8240%