NC Bench
Overview
About
Tests
Models
Vendors
Run: 2026-02-19-01KHT0RYPZH34YP7JBWMD603YW
Run Details
Model:
GPT-4.1
Test:
Bad Writing Habits
Scenario:
Romance: separated couple reunites
Duration:
37.6s
Cost:
$0.015024
Provider:
OpenAI
Evaluation summary
Score
Evaluator
Details Link
100.00%
Adverbs in dialogue tags
(details)
95.76%
AI-ism adverb frequency
(details)
100.00%
AI-ism character names
(details)
100.00%
AI-ism location names
(details)
44.92%
AI-ism word frequency
(details)
100.00%
Cliché density
(details)
100.00%
Emotion telling (show vs. tell)
(details)
100.00%
Filter word density
(details)
100.00%
Gibberish response detection
(details)
100.00%
Markdown formatting overuse
(details)
100.00%
Missing dialogue indicators (quotation marks)
(details)
85.82%
Name drop frequency
(details)
100.00%
Narrator intent-glossing
(details)
100.00%
"Not X but Y" pattern overuse
(details)
100.00%
Overuse of "that" (subordinate clause padding)
(details)
100.00%
Paragraph length variance
(details)
100.00%
Passive voice overuse
(details)
100.00%
Past progressive (was/were + -ing) overuse
(details)
0.00%
Em-dash & semicolon overuse
(details)
94.00%
Purple prose (modifier overload)
(details)
100.00%
Repeated phrase echo
(details)
100.00%
Sentence length variance
(details)
75.67%
Sentence opener variety
(details)
90.09%
Adverb-first sentence starts
(details)
0.00%
Pronoun-first sentence starts
(details)
14.05%
Subject-first sentence starts
(details)
0.00%
Subordinate conjunction sentence starts
(details)
100.00%
Technical jargon density
(details)
91.67%
Useless dialogue additions
(details)
64.29%
Dialogue tag variety (said vs. fancy)
(details)
81.8752%
Overall
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
Messages
Meta
AI
A rain-heavy dusk pressed against
the windows of Eva’s flat, blurring London into a smudge of neon and puddle-
glint
.
The curry house below simmered
with clove and cardamom, spicy-sweet and thick in the air.
Aurora Carter fumbled with the
third deadbolt, keys cold and slick in her hand, a takeout bag balanced between elbow and ribs.
Ptolemy, the ancient tabby, wove
between her ankles and glared as if it was her fault she’d come home late. Inside: narrow hallway, towers of books tilting, and her own boots scrubbed by the door.
She dumped the bag and
started to
peel her raincoat off, muttering. Then she saw him.
Lucien Moreau did not blend
with chaos or curry or rainwater. He lingered, ghost-pale and neat, against Eva’s World Atlas and a pile of recipe clippings, as if he’d dropped in from some crisp, fevered dream.
His head tipped, platinum hair
gleaming
, heterochromatic eyes skipping from Rory’s hands to her face.
That old tiny scar on
her wrist itched under his gaze. “Bonsoir, Aurora.”
He didn’t offer a smile
. Her mind threw up useless, old shields.
He stands like nothing ever
dented him, Rory.
He stands like no one
told him to leave.
She untangled herself from the
coat. “The hell are you doing in Eva’s flat, Lucien?” His mouth quirked, a
flicker
. “You left me no choice. I knocked, I waited. Curry man downstairs told me you’d be up soon.” She toed off her shoes. “You need to leave. Eva’s not here. I’m not a messenger service either.” She wanted to sound immune, brisk, cool as she used to. It came out sharp instead.
Lucien’s fingers brushed the edge
of a faded map, careful. “I never would disturb if it wasn’t urgent. Yet—here I am.”
He hesitated over her name
. “Rory, your number changed.”
She bristled, feeling the years
fold closer, press into her ribs. “You don’t get to call me that. Not anymore.”
His grip tightened on the
cane, ivory handle
glinting
. “You want to shout, then shout.” “Why would I waste the breath?” Ptolemy stalked in and began meowing at Lucien’s shoes, tail whipped high. Lucien barely blinked. “There’s no cause for fear, Aurora. I won’t linger—”
His accent shaped her name
like a prize.
She slid past, dropped the
bag on the tiny table, let plastic containers thud against battered wood. “Was I meant to be grateful you let yourself in, or angry you thought you could, or—?” She reached for a fork, fingers trembling. Food forgotten. Lucien came closer, the faint click of his cane off Eva’s cramped floor.
He smelled of rain and
bergamot, just as her memory preserved him, maddeningly unruffled. “There’s news. About the Cheung girl.”
His voice offered information, the
old trade, but she recognised shaky undertow. She angled her chin, forced her hands steady, fork in a white-knuckle grip. “I haven’t worked for Yu-Fei in months. She’s got nothing to do with—us.” His lips twitched, nearly a smile, nearly pain. “Something’s coming for anyone attached to her. Including girls who ran from trouble and built a new name.” His gaze lingered on her wrist. “I’m not in your world, Lucien.” A pause, as regret banged dully against her ribs. “And you’re not in mine.” He gave a breath—half sigh, half plea. “No? I recall being the one left in
silence
in a city that chews up names. Is this
silence
too?” She stared at his shoes, glossy, rain-spattered. “You aren’t owed every answer. Not after Marseille.” Her voice wobbled. She wished he would turn, walk, let the past close up tight as a fist. He looked around,
measured
every book-stack, every crumpled paper. Avoided her eyes. “After Marseille, I imagined you dead or, perhaps worse, safe and exhausted with banality.” She snorted, voice rough. “Sorry to disappoint. I’m trapped above a curry house, catching rain in bowls and running secrets for cash.” He stepped around Ptolemy and lifted one brow, cold and assessing. “Which means you need protection. Or company. Preferably both.” She braced herself with both palms against the counter, eyes lit blue and wild. “You are not my protector—never were. Don’t twist things. You are a liar with a fancy accent.” The words landed between them, raw. Lucien’s eyes—amber, then black—wicked up the room’s quirks and edges. He unbuttoned his cuff, flexed his wrist, and let
silence
spool for a beat. Behind him, rain battered against the window, wild and ugly. Ptolemy twined past Lucien and leapt onto the table, nosing the abandoned food. Aurora only realised she
was shivering
when Lucien’s tone shifted—softer, nearly human. “So we both lied. I lied for protection; you lied to escape.” He fingered the cane. “You told me to leave, but I find myself in London, still following breadcrumbs to this—this half-life.” Dinner cooled. She watched a drop of rain pinch along the glass,
racing
its sibling, trying for the edge. “I don’t want your pursuit,” she whispered. Not sure he could hear.
Maybe saying it made the
knot of want in her throat worse. Lucien glanced at the photos magnetised to Eva’s fridge—a blurry childhood, Aurora laughing beside dark-haired girls. “Did you never—” His voice trailed, searching. “Never want it all again? The rush, the risk?” She met his eyes and found them older. “Sometimes I’d kill for quiet. Some nights I’d trade anything to forget your face.” The cane planted
sharply
. He shifted, a sudden, dangerous energy in the small space. “Forget, then. But you can’t lie to me in this room. Not with your hands shaking, not with your voice running wild the moment I stepped in.” Aurora’s throat burned. She wrenched open the takeout, shovelled rice onto a plate, desperate for the distraction. Spoon clattered. “Eat, or go. Your choice.” He took a step nearer. Unsmiling, silver and black, the edge he always carried now bared like his hidden blade. “I will eat,” he murmured, “if you tell me true—where did you go, that night in Marseille?” Silence. Her
fists clenched
. The memory sticky, raw, two years rotting and still alive under the skin. She whipped her head up. “Does it matter? I ran. I kept running. You didn’t say stop.” The look he gave her sliced right through her—hurt, regret, everything clogged up and unsaid. “I would have,” Lucien said, barely a sound. She shoved a container at him, nearly knocking over a sheaf of papers. “Fine. One dinner. Then you go. No lies. But nothing about running. Not tonight.” He accepted the food, gaze lingering on the scar at her wrist, the lines under her eyes, her hair limp from rain. “As you wish,” he breathed, voice
velvet
and exhausted and—maybe—relieved. They ate in awkward
silence
, rain
pounding
, curry house thunder below. In the hush between forkfuls, old heat simmered, unsaid and mighty, weaving through ink-stained napkins and the hush of secrets, neither brave enough to force it out into the brittle, watching dark.
created_at
"2026-02-19T03:58:20.903Z"
2/19/2026, 3:58:20 AM
model
"openai/gpt-4.1-2025-04-14"
app_id
182717
external_user
(null)
streamed
true
cancelled
false
latency
538
moderation_latency
(null)
generation_time
37468
tokens_prompt
1034
tokens_completion
1857
native_tokens_prompt
928
native_tokens_completion
1646
native_tokens_completion_images
0
native_tokens_reasoning
0
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.015024
router
(null)
provider_responses
0
endpoint_id
"c235abe8-11cc-42d3-95ad-72f4d198287a"
id
"resp_0764831dc9e1d5920169968a5cfb408193a2ece76536b6eea3"
is_byok
false
latency
133
model_permaslug
"openai/gpt-4.1-2025-04-14"
provider_name
"OpenAI"
status
200
api_type
"completions"
id
"gen-1771473500-xHtPi3pEmEUbz8lTHmhd"
upstream_id
"resp_0764831dc9e1d5920169968a5cfb408193a2ece76536b6eea3"
total_cost
0.015024
cache_discount
(null)
upstream_inference_cost
0
provider_name
"OpenAI"
Evaluation details
Result
Evaluator
Details
Meta Data
100.00%
Adverbs in dialogue tags
Target: ≤10% dialogue tags with adverbs
totalTags
15
adverbTagCount
1
adverbTags
0
"regret banged dully [dully]"
dialogueSentences
35
tagDensity
0.429
leniency
0.857
rawRatio
0.067
effectiveRatio
0.057
95.76%
AI-ism adverb frequency
Target: <2% AI-ism adverbs (58 tracked)
wordCount
1180
totalAiIsmAdverbs
1
found
0
adverb
"sharply"
count
1
highlights
0
"sharply"
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)
44.92%
AI-ism word frequency
Target: <2% AI-ism words (290 tracked)
wordCount
1180
totalAiIsms
13
found
0
word
"glint"
count
1
1
word
"gleaming"
count
1
2
word
"flicker"
count
1
3
word
"glinting"
count
1
4
word
"silence"
count
5
5
word
"measured"
count
1
6
word
"racing"
count
1
7
word
"velvet"
count
1
8
word
"pounding"
count
1
highlights
0
"glint"
1
"gleaming"
2
"flicker"
3
"glinting"
4
"silence"
5
"measured"
6
"racing"
7
"velvet"
8
"pounding"
100.00%
Cliché density
Target: ≤1 cliche(s) per 800-word window
totalCliches
1
maxInWindow
1
found
0
label
"jaw/fists clenched"
count
1
highlights
0
"fists clenched"
100.00%
Emotion telling (show vs. tell)
Target: ≤3% sentences with emotion telling
emotionTells
0
narrationSentences
80
matches
(empty)
100.00%
Filter word density
Target: ≤3% sentences with filter/hedge words
filterCount
0
hedgeCount
1
narrationSentences
80
filterMatches
(empty)
hedgeMatches
0
"started to"
100.00%
Gibberish response detection
Target: ≤1% gibberish-like sentences (hard fail if a sentence exceeds 800 words)
analyzedSentences
100
gibberishSentences
0
adjustedGibberishSentences
0
longSentenceCount
0
runOnParagraphCount
0
giantParagraphCount
0
wordSaladCount
0
repetitionLoopCount
0
controlTokenCount
0
maxSentenceWordsSeen
33
ratio
0
matches
(empty)
100.00%
Markdown formatting overuse
Target: ≤5% words in markdown formatting
markdownSpans
0
markdownWords
0
totalWords
1156
ratio
0
matches
(empty)
100.00%
Missing dialogue indicators (quotation marks)
Target: ≤10% speech attributions without quotation marks
totalAttributions
12
unquotedAttributions
0
matches
(empty)
85.82%
Name drop frequency
Target: ≤1.0 per-name mentions per 100 words
totalMentions
32
wordCount
779
uniqueNames
13
maxNameDensity
1.28
worstName
"Lucien"
maxWindowNameDensity
2
worstWindowName
"Lucien"
discoveredNames
Eva
4
London
1
Carter
1
Moreau
1
World
1
Atlas
1
Rory
2
Lucien
10
Food
1
Ptolemy
4
Dinner
1
Aurora
4
Silence
1
persons
0
"Eva"
1
"Carter"
2
"Moreau"
3
"Rory"
4
"Lucien"
5
"Food"
6
"Ptolemy"
7
"Dinner"
8
"Aurora"
9
"Silence"
places
0
"London"
globalScore
0.858
windowScore
1
100.00%
Narrator intent-glossing
Target: ≤2% narration sentences with intent-glossing patterns
analyzedSentences
55
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
1156
matches
(empty)
100.00%
Overuse of "that" (subordinate clause padding)
Target: ≤2% sentences with "that" clauses
thatCount
0
totalSentences
100
matches
(empty)
100.00%
Paragraph length variance
Target: CV ≥0.5 for paragraph word counts
totalParagraphs
43
mean
26.88
std
13.67
cv
0.508
sampleLengths
0
76
1
27
2
4
3
62
4
7
5
24
6
15
7
23
8
34
9
30
10
20
11
15
12
6
13
32
14
43
15
45
16
26
17
32
18
20
19
27
20
33
21
26
22
22
23
20
24
31
25
30
26
35
27
33
28
19
29
24
30
32
31
22
32
41
33
24
34
37
35
17
36
17
37
15
38
8
39
27
40
22
41
10
42
43
100.00%
Passive voice overuse
Target: ≤2% passive sentences
passiveCount
0
totalSentences
80
matches
(empty)
100.00%
Past progressive (was/were + -ing) overuse
Target: ≤2% past progressive verbs
pastProgressiveCount
1
totalVerbs
155
matches
0
"was shivering"
0.00%
Em-dash & semicolon overuse
Target: ≤2% sentences with em-dashes/semicolons
emDashCount
8
semicolonCount
1
flaggedSentences
7
totalSentences
100
ratio
0.07
matches
0
"He gave a breath—half sigh, half plea."
1
"Lucien’s eyes—amber, then black—wicked up the room’s quirks and edges."
2
"Aurora only realised she was shivering when Lucien’s tone shifted—softer, nearly human."
3
"“So we both lied. I lied for protection; you lied to escape.” He fingered the cane."
4
"Lucien glanced at the photos magnetised to Eva’s fridge—a blurry childhood, Aurora laughing beside dark-haired girls."
5
"The look he gave her sliced right through her—hurt, regret, everything clogged up and unsaid."
6
"“As you wish,” he breathed, voice velvet and exhausted and—maybe—relieved."
94.00%
Purple prose (modifier overload)
Target: <4% adverbs, <2% -ly adverbs, no adj stacking
wordCount
796
adjectiveStacks
1
stackExamples
0
"beside dark-haired girls."
adverbCount
25
adverbRatio
0.031407035175879394
lyAdverbCount
11
lyAdverbRatio
0.013819095477386936
100.00%
Repeated phrase echo
Target: ≤20% sentences with echoes (window: 2)
totalSentences
100
echoCount
0
echoWords
(empty)
100.00%
Sentence length variance
Target: CV ≥0.4 for sentence word counts
totalSentences
100
mean
11.56
std
6.19
cv
0.535
sampleLengths
0
19
1
15
2
22
3
20
4
15
5
12
6
4
7
11
8
25
9
15
10
11
11
7
12
7
13
8
14
9
15
6
16
9
17
5
18
18
19
5
20
24
21
5
22
10
23
16
24
4
25
11
26
9
27
9
28
6
29
6
30
12
31
3
32
17
33
17
34
24
35
2
36
13
37
14
38
18
39
13
40
13
41
8
42
24
43
15
44
5
45
7
46
20
47
7
48
11
49
15
75.67%
Sentence opener variety
Target: ≥60% unique sentence openers
consecutiveRepeats
1
diversityRatio
0.46
totalSentences
100
uniqueOpeners
46
90.09%
Adverb-first sentence starts
Target: ≥3% sentences starting with an adverb
adverbCount
2
totalSentences
74
matches
0
"Then she saw him."
1
"Maybe saying it made the"
ratio
0.027
0.00%
Pronoun-first sentence starts
Target: ≤30% sentences starting with a pronoun
pronounCount
45
totalSentences
74
matches
0
"She dumped the bag and"
1
"He lingered, ghost-pale and neat,"
2
"His head tipped, platinum hair"
3
"He didn’t offer a smile"
4
"Her mind threw up useless,"
5
"He stands like nothing ever"
6
"He stands like no one"
7
"She untangled herself from the"
8
"His mouth quirked, a flicker."
9
"She toed off her shoes."
10
"She wanted to sound immune,"
11
"It came out sharp instead."
12
"He hesitated over her name"
13
"She bristled, feeling the years"
14
"His grip tightened on the"
15
"His accent shaped her name"
16
"She slid past, dropped the"
17
"She reached for a fork,"
18
"He smelled of rain and"
19
"His voice offered information, the"
ratio
0.608
14.05%
Subject-first sentence starts
Target: ≤72% sentences starting with a subject
subjectCount
66
totalSentences
74
matches
0
"A rain-heavy dusk pressed against"
1
"The curry house below simmered"
2
"Aurora Carter fumbled with the"
3
"Ptolemy, the ancient tabby, wove"
4
"She dumped the bag and"
5
"Lucien Moreau did not blend"
6
"He lingered, ghost-pale and neat,"
7
"His head tipped, platinum hair"
8
"That old tiny scar on"
9
"He didn’t offer a smile"
10
"Her mind threw up useless,"
11
"He stands like nothing ever"
12
"He stands like no one"
13
"She untangled herself from the"
14
"His mouth quirked, a flicker."
15
"She toed off her shoes."
16
"She wanted to sound immune,"
17
"It came out sharp instead."
18
"Lucien’s fingers brushed the edge"
19
"He hesitated over her name"
ratio
0.892
0.00%
Subordinate conjunction sentence starts
Target: ≥2% sentences starting with a subordinating conjunction
subConjCount
0
totalSentences
74
matches
(empty)
ratio
0
100.00%
Technical jargon density
Target: ≤6% sentences with technical-jargon patterns
analyzedSentences
38
technicalSentenceCount
2
matches
0
"He lingered, ghost-pale and neat, against Eva’s World Atlas and a pile of recipe clippings, as if he’d dropped in from some crisp, fevered dream."
1
"She watched a drop of rain pinch along the glass, racing its sibling, trying for the edge."
91.67%
Useless dialogue additions
Target: ≤5% dialogue tags with trailing filler fragments
totalTags
15
uselessAdditionCount
1
matches
0
"She reached, fingers trembling"
64.29%
Dialogue tag variety (said vs. fancy)
Target: ≤10% fancy dialogue tags
totalTags
4
fancyCount
3
fancyTags
0
"she whispered (whisper)"
1
"he murmured (murmur)"
2
"he breathed (breathe)"
dialogueSentences
35
tagDensity
0.114
leniency
0.229
rawRatio
0.75
effectiveRatio
0.171
81.8752%