NC Bench
Overview
About
Tests
Models
Vendors
Run: 2026-02-17-01KHMR76RV90T4W2DAHGTK7APV
Run Details
Model:
o4 Mini
Test:
Bad Writing Habits
Scenario:
Romance: separated couple reunites
Duration:
20.8s
Cost:
$0.012233
Provider:
OpenAI
Model input
System
You are an expert novelist with a gift for vivid, immersive prose. You write in tight third-person limited point of view with a strong narrative voice. Your prose is clean, precise, and engaging — you favor strong verbs, concrete details, and natural-sounding dialogue. You will be given a story bible (codex) containing canonical details about characters, locations, items, and lore. Use these details to ground your writing in the established world. Stay consistent with the codex. Write only the prose of the scene. Do not include titles, chapter headings, markdown formatting, or any commentary before or after the scene.
User/Human
<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> 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.
Model response
Messages
Meta
AI
Aurora’s fingers
trembled
on the third deadbolt as she realized someone
was veering
up the stairwell again. The flat above the curry house on Brick Lane felt smaller than ever, its walls pressing in beneath the
weight
of Eva’s tomes and chalked diagrams. A faint aroma of turmeric and garam masala drifted through the cracked doorframe. Ptolemy, Eva’s tabby, hissed from behind a stack of parchment, her green eyes glowing in the dim hallway light. Aurora slid the bolt home and yanked the door open. She supposed part of her wanted to see who was bold enough to come half a world from Marseille without warning. The rest of her hoped for anyone but this. Lucien Moreau filled the slender threshold, his posture owning every inch of the cramped corridor. The ivory handle of his cane caught the streetlamp’s glare, and one amber eye, one black, fixed on her as if he’d been studying her for years. His charcoal suit hung on him like it had
been tailored
directly from her memory. “Lucien.” Her voice pitched too high. She looked past him at the stairwell, half-expecting another set of
footsteps
, but the landing lay empty. The flat’s single bulb
flickered
as if in hesitation. “May I come in?” His French accent was slow, measured. Commanding. She hesitated, hand still on the frame, and inside her pulse hammered. Lightning fast, her mind
cataloged
the threat he might pose—blade concealed in that cane, ties to the demonic underworld—but beneath that, an ache coiled in her chest. They had parted in London, six months ago, on terms neither of them had
managed to
revisit. Hurt hollowed her when she thought of the abruptness of his departure. No warning. No goodbye. She stepped aside. He ducked past her, close enough that the warmth of his coat brushed her shoulder. She smelled cologne—spicy, with a faint metallic note—and the undercurrent of ozone that always followed him, like charged air before a storm. She shivered. The corridor’s walls worn thin by decades of curry fumes and damp plaster swallowed his quiet
footsteps
. He paused, watching her hang her blue delivery jacket on the coat rack. Beneath it, the scar at her wrist itched, as if alive, reminding her of every time she’d danced too close to threats she couldn’t outrun. “Your flat is… welcoming,” he said, gesturing at the teetering piles of books and the single mattress in the corner. A risk in letting someone like Lucien into her
sanctuary
, even if she’d left Evan behind. But she’d never
truly
felt safe until she fled here, above Silas’s bar, and then here, above this curry house with Eva’s research breathing life into every surface. Ptolemy stalked between Lucien’s polished shoes and her ankles, tail high. Lucien kneeled and ran a pale hand along the cat’s back. “Still tolerating strange men with secrets?” Aurora closed her eyes, resisting the urge to smile. “She’s sheltering jars of pickled peppers in the pantry. I can’t help it if she loves spices more than people.” He shrugged, rising. “It suits you. Chaos in living color.” He surveyed the narrow room like it was a stage, and she his unwitting performer. “I’m sorry for arriving unannounced.” The words cut deeper than any blade. She braced herself, arms folded. “Some apologies come too late.” His heterochromatic gaze
flickered
with regret she’d never seen so raw. “I left without explanation. I can see that’s unforgivable.” Aurora’s heart thudded. She lifted her chin. “You vanished. You denied me the courtesy of saying why. You built walls around the truth and never let me in.” He inclined his head, as if weighing her reproach. “I had to vanish. There were… complications. My world does not forgive softness.” His fingers lingered on the cane’s handle. “You took more interest in me than was wise. It endangered you.” A surge of indignation flared. “You think I’m fragile? Or that I need protecting by disappearing into the night?” Lucien met her eyes, one golden, one obsidian, both storm-dark. “I thought I could shield you. Instead I abandoned you.” His voice lowered. “But I could not ignore a new threat—something stirring in Avaros, something that won’t stay confined to the demon realm.” Aurora’s pulse stuttered. She’d heard rumors—whispers at Silas’s bar—that the supernatural borders
were weakening
. Something floated unruly through the world she had sworn to protect herself in. “That’s supposed to excuse you leaving me in the dark?” He took a step closer, and the space between them crackled. She smelled a faint hint of brimstone beneath his cologne. “No. I’m asking forgiveness now, if you can offer it.” He rested a gloved hand against the chipped doorjamb. “I’m here because I need you. I can’t
navigate
what’s coming without your mind at my side.” The honesty in his voice propelled a dozen memories to the forefront of her mind—the laughter in the moonlit courtyard after a successful job, the way his amber eye glinted when he praised her ingenuity, the brush of his coat across her arm in crowded back alleys. They had been a team, improbable, perfect. Then one day he had simply… stopped. Her breath caught. “Did you fly halfway around the world just to remind me you can’t keep promises?” He exhaled, shoulders sagging. “No. I came because you were the closest thing I had to home.” He tilted his head, as if that explanation was both confession and confession’s price. “I’ve missed you every day.” For a moment, the room hushed around them—the hum of the street’s late shift, the distant
echo
of traffic. Even Ptolemy padded away, conceding their moment. Aurora’s throat constricted. She wanted to slam the door shut, to protect her heart the way Lucien had
tried to
protect hers. Instead, she found herself stepping forward. “You could have written,” she said, low. “Sent someone to tell me you were in danger.” Her voice
wavered
. She rested her palm on the scar at her wrist, that small crescent of pain from childhood, and felt it
throb
in sympathy. He met her again, dark eye and light both unchanged by time. “I was told you’d
vanished, that you
were with a friend who would keep you safe. I could not risk drawing your enemies to that friend’s door.” He nodded toward the battered research papers. “You, of all people, understand the need for secrecy.” She hesitated, torn between anger and the longing she had
tried to
bury. Her life these months had been quiet jolts—deliveries and late nights above Silas’s bar, the comfort of earnestly cooked curry downstairs, the hush of books pressing in from every side at Eva’s. And always the ache left by his absence, like a wound that never scarred. Lucien extended a hand, gingerly, as if it might break. “Let me stay,” he said. “Just until I sort this out. I’ll be gone before you even miss the space I occupy.” Aurora studied his fingers—pale, elegant, with a lean strength. She remembered the way they’d traced her hair, her jawline. The way they’d steadied her when she doubted herself. She remembered she was no fragile thing, and yet— She brushed her own hand against his. Electricity shivered where their skin met. Ptolemy weaved between their legs and purred, a portent of peace. “All right,” she whispered. “But you’re not evading me again. Not without a good reason.” He closed the distance, and for the first time since his arrival, the tension in his shoulders eased. His free hand came up, trembling low against her cheek. He drew her nearer so their breaths mingled, and she felt the steady thrum of his heart beneath the fine linen of his shirt. “I promise,” he murmured. “No more ghosts between us.” She let the words settle. Sharp relief filled her chest, soft as dawn. Outside, the curry house’s neon sign buzzed, and the city carried on around them. But here, in the narrow hallway of Eva’s flat, they
were standing
at the threshold of a new beginning—one they would write together, in light as well as shadow.
created_at
"2026-02-17T02:52:59.935093+00:00"
2/17/2026, 2:52:59 AM
model
"openai/o4-mini-2025-04-16"
app_id
182717
external_user
(null)
streamed
true
cancelled
false
latency
6699
moderation_latency
(null)
generation_time
20580
tokens_prompt
808
tokens_completion
2435
native_tokens_prompt
753
native_tokens_completion
2592
native_tokens_completion_images
0
native_tokens_reasoning
768
native_tokens_cached
0
num_media_prompt
(null)
num_input_audio_prompt
(null)
num_media_completion
0
num_search_results
(null)
origin
"https://ncbench.com/"
is_byok
false
finish_reason
"stop"
native_finish_reason
"completed"
usage
0.0122331
router
(null)
provider_responses
0
id
"resp_01757e400a8377ba016993d7f6a5a08190b6676eea22b71dcb"
status
200
is_byok
false
latency
141
endpoint_id
"bd121898-b27c-4e2c-bc92-278627465a54"
provider_name
"OpenAI"
model_permaslug
"openai/o4-mini-2025-04-16"
api_type
"completions"
id
"gen-1771296758-5mYcQdtiviFhLBzfbHZ1"
upstream_id
"resp_01757e400a8377ba016993d7f6a5a08190b6676eea22b71dcb"
total_cost
0.0122331
cache_discount
(null)
upstream_inference_cost
0
provider_name
"OpenAI"
Evaluation details
Result
Evaluator
Details
Meta Data
100.0000%
Adverbs in dialogue tags
Target: ≤10% dialogue tags with adverbs
totalTags
5
adverbTagCount
0
adverbTags
(empty)
92.6525%
AI-ism adverb frequency
Target: <1% AI-ism adverbs (57 tracked)
wordCount
1361
totalAiIsmAdverbs
1
found
0
adverb
"truly"
count
1
highlights
0
"truly"
100.0000%
AI-ism character names
Target: 0 AI-default names (17 tracked, −20% each)
codexExemptions
(empty)
found
(empty)
100.0000%
AI-ism location names
Target: 0 AI-default location names (33 tracked, −20% each)
codexExemptions
(empty)
found
(empty)
11.8295%
AI-ism word frequency
Target: <1% AI-ism words (140 tracked)
wordCount
1361
totalAiIsms
12
found
0
word
"sanctuary"
count
1
1
word
"throb"
count
1
2
word
"flickered"
count
2
3
word
"wavered"
count
1
4
word
"trembled"
count
1
5
word
"cataloged"
count
1
6
word
"weight"
count
1
7
word
"footsteps"
count
2
8
word
"echo"
count
1
9
word
"navigate"
count
1
highlights
0
"sanctuary"
1
"throb"
2
"flickered"
3
"wavered"
4
"trembled"
5
"cataloged"
6
"weight"
7
"footsteps"
8
"echo"
9
"navigate"
100.0000%
Cliche density
Target: ≤1 cliche(s) per 800-word window
totalCliches
0
maxInWindow
0
found
(empty)
highlights
(empty)
100.0000%
Emotion telling (show vs. tell)
Target: ≤3% sentences with emotion telling
emotionTells
0
narrationSentences
90
matches
(empty)
100.0000%
Filter word density
Target: ≤12% sentences with filter/hedge words
filterCount
0
hedgeCount
3
narrationSentences
90
filterMatches
(empty)
hedgeMatches
0
"managed to"
1
"tried to"
100.0000%
Overuse of "that" (subordinate clause padding)
Target: ≤10% sentences with "that" clauses
thatCount
1
totalSentences
107
matches
0
"vanished, that you"
83.7095%
Paragraph length variance
Target: CV ≥0.5 for paragraph word counts
totalParagraphs
34
mean
39.62
std
17.55
cv
0.443
sampleLengths
0
75
1
40
2
57
3
32
4
11
5
72
6
42
7
55
8
64
9
28
10
29
11
30
12
17
13
20
14
28
15
41
16
19
17
43
18
37
19
57
20
61
21
18
22
36
23
54
24
42
25
55
26
59
27
32
28
37
29
24
30
15
31
52
32
9
33
56
100.0000%
Passive voice overuse
Target: ≤5% passive sentences
passiveCount
1
totalSentences
90
matches
0
"been tailored"
100.0000%
Past progressive (was/were + -ing) overuse
Target: ≤10% past progressive verbs
pastProgressiveCount
3
totalVerbs
176
matches
0
"was veering"
1
"were weakening"
2
"were standing"
94.0000%
Purple prose (modifier overload)
Target: <4% adverbs, <2% -ly adverbs, no adj stacking
wordCount
1050
adjectiveStacks
1
stackExamples
0
"trembling low against her"
adverbCount
26
adverbRatio
0.024761904761904763
lyAdverbCount
6
lyAdverbRatio
0.005714285714285714
100.0000%
Repeated phrase echo
Target: ≤20% sentences with echoes (window: 2)
totalSentences
107
echoCount
0
echoWords
(empty)
100.0000%
Sentence length variance
Target: CV ≥0.4 for sentence word counts
totalSentences
107
mean
12.59
std
8.15
cv
0.647
sampleLengths
0
17
1
26
2
13
3
19
4
10
5
21
6
9
7
15
8
27
9
15
10
6
11
17
12
9
13
10
14
1
15
12
16
27
17
17
18
12
19
2
20
2
21
3
22
15
23
22
24
2
25
17
26
13
27
25
28
20
29
16
30
28
31
11
32
11
33
6
34
9
35
20
36
3
37
22
38
5
39
7
40
5
41
5
42
11
43
9
44
3
45
4
46
21
47
9
48
20
49
12
57.9439%
Sentence opener variety
Target: ≥60% unique sentence openers
consecutiveRepeats
3
diversityRatio
0.3644859813084112
totalSentences
107
uniqueOpeners
39
25.0000%
Dialogue tag variety (said vs. fancy)
Target: ≤30% fancy dialogue tags
totalTags
5
fancyCount
3
fancyTags
0
"he said, gesturing at the teetering piles of books and the single mattress in the corner (say, gesture)"
1
"she whispered (whisper)"
2
"he murmured (murmur)"
86.1844%