OpenAI Releases LifeSciBench, a 750-Task Benchmark Grading AI Models on Real Life-Science Research With Expert-Written Rubric

Most biology benchmarks ask narrow, fact-based questions with clean answers. Scientists weigh imperfect evidence and make decisions. OpenAI released LifeSciBench and it targets that gap directly.

Even the strongest model passes roughly one task in three. The benchmark is far from saturated.

What is LifeSciBench

LifeSciBench contains 750 expert-authored tasks. They span seven workflows and seven biological domains. Each task pairs a prompt, supporting artifacts, and a grading rubric.

The seven workflows cover evidence handling and analysis. They also include design and optimization, scientific reasoning, validation and operations, translation, and scientific communication.

The seven domains run from genomics and medicinal chemistry to clinical and translational science.

Tasks are written as a scientist would brief a colleague. They are free-response, not multiple-choice. Around 79% require multiple reasoning or decision-making steps, averaging four steps each.

How the Benchmark was Built

A cohort of 173 expert scientists wrote the tasks. Each held a Ph.D. and had biotechnology or pharmaceutical experience. Accepted tasks averaged six automated review cycles and at least two expert reviews.

Many tasks ship with artifacts. The benchmark includes 1,062 attached artifacts in total. About 53% of tasks require at least one artifact. Types include sequences, figures, tables, PDFs, and chemical structures.

A separate cohort validated quality. There were 453 reviewers, and 97% held doctorates. Overall agreement exceeded 96% on relevance, reasoning, grounding, and usefulness.

The Rubric System

Rubrics are the core mechanic here. They contain 19,020 criteria across the benchmark. That is roughly 25 criteria per task.

Each criterion rewards one concrete property. Examples include a specific fact, a reasoning step, or a numeric answer within tolerance. Grading runs against the rubric, not a single reference string.

Two metrics summarize performance. Normalized rubric score divides awarded points by total points. Task pass rate counts tasks scoring at or above 70%.

This separation matters for interpretation. A response can earn partial credit while still failing the task. The pass threshold is strict by design.

Here is the scoring logic in plain Python:

Copy CodeCopiedUse a different Browserdef grade(rubric, awarded_ids):
total = sum(c[“pts”] for c in rubric)
earned = sum(c[“pts”] for c in rubric if c[“id”] in awarded_ids)
normalized = earned / total # partial credit
passed = normalized >= 0.70 # task-level success
return normalized, passed

How the Models Performed

OpenAI evaluated five models in a single-turn setting. Each model saw the prompt and artifacts once. Unrestricted internet browsing was permitted.

ModelNormalized scoreTask pass rateGPT-Rosalind0.57636.1%GPT-5.50.51925.7%Gemini 3.1 Pro0.51523.6%GPT-5.40.47920.7%Grok 4.30.39913.0%

GPT-Rosalind, OpenAI’s domain-specialized model, led overall. It had the highest per-task mean on 386 of 750 tasks. It also lifted the overall pass rate over GPT-5.5, from 25.7% to 36.1%. Pass rates stayed modest across every model.

Rankings are not the whole story. Gemini 3.1 Pro uniquely led on 214 tasks. Aggregate scores can hide task-specific strengths.

Where Models Win, and Where They Fall Short

Models were strongest on structured judgment. GPT-Rosalind reached a 0.712 mean score on Translation. Scientific Communication scored 0.718, but that category is small, so read it cautiously.

Two workflows stayed hard. Design, Optimization, and Prediction was among the toughest, with GPT-Rosalind passing 30.7%. Analysis was close behind at 30.3%.

Artifact use was a clear bottleneck. GPT-Rosalind dropped from 45.1% on text-only tasks to 28.1% on artifact tasks. GPT-5.5 fell the same way, from 29.9% to 21.9%.

Exact outputs were hardest of all. Sequence and structure criterion success ranged from 46.9% to 18.0% across models. GPT-Rosalind’s gain over GPT-5.5 on generate/construct items was just +0.001.

Models also stalled mid-task. For GPT-Rosalind, 109 tasks earned at least 50% rubric credit but still passed below 20%.

Headroom remains large. No model passed 171 tasks (22.8%). And 261 tasks (34.8%) had a best-model pass rate below 20%.

Strengths and Weaknesses

Strengths:

Broad coverage across seven workflows and seven biological domains

Expert-authored rubrics with 19,020 atomic, gradeable criteria

Realistic artifacts: sequences, figures, tables, PDFs, and structures

Independent validation by 453 expert reviewers, 97% with doctorates

Weaknesses:

Single-turn only; real research is iterative and multi-turn

Built by OpenAI, which also supplies most evaluated models

Public release may be limited by safety and licensing constraints

750 tasks cannot cover every scientific specialty

Try It: Interactive Rubric Grader Demo

LifeSciBench Interactive Demo

* { box-sizing: border-box; margin: 0; padding: 0; }
:root{
–green:#76B900; –bg:#111111; –panel:#171717; –panel2:#1e1e1e;
–line:#2a2a2a; –txt:#e8e8e8; –mut:#8a8a8a; –red:#e0533d;
}
html,body{ background:var(–bg); }
body{
font-family:’JetBrains Mono’, ui-monospace, monospace;
color:var(–txt); padding:16px; line-height:1.5;
}
.wrap{ max-width:880px; margin:0 auto; }
.head{ border:1px solid var(–line); border-left:3px solid var(–green); background:var(–panel); padding:16px 18px; border-radius:6px; }
.kicker{ color:var(–green); font-size:11px; letter-spacing:2px; text-transform:uppercase; }
h1{ font-size:20px; font-weight:700; margin:6px 0 4px; }
.sub{ color:var(–mut); font-size:12.5px; }
.tabs{ display:flex; gap:8px; margin:16px 0; flex-wrap:wrap; }
.tab{ cursor:pointer; border:1px solid var(–line); background:var(–panel); color:var(–mut);
padding:9px 14px; border-radius:6px; font-size:12.5px; font-family:inherit; font-weight:500; }
.tab.on{ color:var(–bg); background:var(–green); border-color:var(–green); font-weight:700; }
.card{ border:1px solid var(–line); background:var(–panel); border-radius:6px; padding:16px; }
.prompt{ background:var(–panel2); border:1px solid var(–line); border-radius:5px; padding:12px;
font-size:12px; color:#cfcfcf; margin-bottom:14px; }
.prompt b{ color:var(–green); }
.grp{ margin-bottom:14px; }
.grp h3{ font-size:12px; color:var(–green); text-transform:uppercase; letter-spacing:1px; margin-bottom:8px; }
.crit{ display:flex; align-items:flex-start; gap:10px; padding:7px 9px; border:1px solid var(–line);
border-radius:5px; margin-bottom:6px; cursor:pointer; background:var(–panel2); transition:.12s; }
.crit:hover{ border-color:#3a3a3a; }
.crit.sel{ border-color:var(–green); background:rgba(118,185,0,.07); }
.crit input{ margin-top:3px; accent-color:var(–green); width:15px; height:15px; flex:0 0 auto; }
.crit .lbl{ font-size:12px; flex:1; }
.crit .pts{ color:var(–green); font-weight:700; font-size:12px; flex:0 0 auto; }
.presets{ display:flex; gap:7px; flex-wrap:wrap; margin-bottom:14px; }
.pbtn{ cursor:pointer; border:1px solid var(–line); background:var(–panel2); color:var(–txt);
padding:7px 11px; border-radius:5px; font-size:11.5px; font-family:inherit; }
.pbtn:hover{ border-color:var(–green); color:var(–green); }
.score{ position:sticky; bottom:0; }
.meter{ display:flex; justify-content:space-between; align-items:baseline; margin-bottom:6px; }
.pts-big{ font-size:26px; font-weight:700; }
.norm{ font-size:13px; color:var(–mut); }
.bar{ height:14px; background:var(–panel2); border:1px solid var(–line); border-radius:20px; overflow:hidden; position:relative; }
.fill{ height:100%; background:var(–green); width:0; transition:width .25s ease; }
.thresh{ position:absolute; top:-3px; bottom:-3px; left:70%; width:2px; background:var(–red); }
.threshlab{ font-size:10px; color:var(–red); text-align:right; margin-top:3px; }
.badge{ display:inline-block; margin-top:10px; padding:6px 14px; border-radius:5px; font-weight:700; font-size:13px; }
.pass{ background:var(–green); color:var(–bg); }
.fail{ background:rgba(224,83,61,.15); color:var(–red); border:1px solid var(–red); }
.note{ font-size:11px; color:var(–mut); margin-top:10px; }
/* leaderboard */
.lb-toggle{ display:flex; gap:7px; margin-bottom:14px; }
.row{ margin-bottom:12px; }
.row .top{ display:flex; justify-content:space-between; font-size:12.5px; margin-bottom:4px; }
.row .name b{ color:var(–txt); } .row .val{ color:var(–green); font-weight:700; }
.lbar{ height:20px; background:var(–panel2); border:1px solid var(–line); border-radius:5px; overflow:hidden; }
.lfill{ height:100%; background:linear-gradient(90deg,#4d7a00,var(–green)); width:0; transition:width .35s ease; }
.hide{ display:none; }
.foot{ margin-top:18px; padding-top:12px; border-top:1px solid var(–line); font-size:11px; color:var(–mut); display:flex; justify-content:space-between; flex-wrap:wrap; gap:8px; }
.foot b{ color:var(–green); }
@media(max-width:640px){
body{ padding:10px; } h1{ font-size:17px; } .pts-big{ font-size:22px; }
.crit .lbl{ font-size:11.5px; }
}

LifeSciBench — Interactive Demo
Rubric Grader & Model Leaderboard
See how rubric-based grading works on a real benchmark task. Toggle criteria a model “got right” and watch the normalized score and 70% pass threshold update live.

Rubric Grader
Model Leaderboard

Task (Analysis — Spatial Transcriptomics): Using attached Visium data from an FFPE cervical cancer slide, cluster the spots into 4 k-means groups, annotate the dominant cell type per cluster, and recommend the 1–2 most promising targeted therapies (ADC, TCE, or CAR-T) based on antigen expression differences between tumor and non-tumor regions.

Simulate a response:
Strong
Partial
Weak
Clear all

0 / 76 pts
Normalized score: 0%

▲ 70% pass threshold (53.2 pts)
FAIL — below 70%
A response can collect partial credit yet still fail the task. That gap is exactly what LifeSciBench measures.

Task pass rate
Normalized score

Single-turn evaluation; unrestricted internet browsing permitted. GPT-Rosalind led overall but uniquely topped only 386 of 750 tasks; Gemini 3.1 Pro uniquely led on 214.

Built by Marktechpost · Data: OpenAI LifeSciBench preprint & release
Verified Jun 17, 2026

const RUBRIC = {
“Analysis”: [
{id:”a1″, lbl:”Identifies two clusters as tumor spots”, pts:10},
{id:”a2″, lbl:”Identifies one cluster as cancer-associated fibroblasts”, pts:5},
{id:”a3″, lbl:”Identifies one cluster as stromal spots”, pts:5},
{id:”a4″, lbl:”Identifies that there is no immune cluster”, pts:10}
],
“Targeted therapies”: [
{id:”f1″, lbl:”Identifies F3 as a potential therapeutic target”, pts:3},
{id:”f2″, lbl:”90u2013100% of tumor spots have F3 expression”, pts:2},
{id:”f3″, lbl:”80u201390% of non-tumor spots have F3 expression”, pts:1},
{id:”f4″, lbl:”F3 odds ratio 11u201313 (tumor vs non-tumor)”, pts:1},
{id:”f5″, lbl:”F3 specificity 12u201316%”, pts:2},
{id:”t1″, lbl:”Identifies TROP2 as a potential target”, pts:3},
{id:”t2″, lbl:”Identifies HER2 as a potential target”, pts:3},
{id:”t3″, lbl:”Identifies NECTIN4 as a potential target”, pts:3},
{id:”t4″, lbl:”Identifies HER3 as a potential target”, pts:3}
],
“Treatment recommendation”: [
{id:”r1″, lbl:”NECTIN4 would be a potential target for this patient”, pts:5},
{id:”r2″, lbl:”HER3 would be a potential target for this patient”, pts:5},
{id:”r3″, lbl:”Enfortumab vedotin may be considered (NECTIN4); not yet established SOC for cervical cancer”, pts:6},
{id:”r4″, lbl:”Patritumab deruxtecan would be a potential therapeutic”, pts:6},
{id:”r5″, lbl:”Checkpoint inhibitor efficacy may be limited (no immune cluster)”, pts:3}
]
};
const TOTAL = 76, THRESH = 0.70;
const selected = new Set();

const PRESETS = {
strong:[“a1″,”a2″,”a3″,”a4″,”f1″,”t1″,”t2″,”t3″,”t4″,”r1″,”r2″,”r3″,”r4″,”r5”],
partial:[“a1″,”a4″,”f1″,”t1″,”t2”],
weak:[“a1″,”f1″],
clear:[]
};

function render(){
const g = document.getElementById(‘groups’);
g.innerHTML = ”;
for(const grp in RUBRIC){
const box = document.createElement(‘div’); box.className=’grp’;
box.innerHTML = ”+grp+”;
RUBRIC[grp].forEach(c=>{
const sel = selected.has(c.id);
const d = document.createElement(‘div’);
d.className = ‘crit’+(sel?’ sel’:”);
d.onclick = ()=>toggle(c.id);
d.innerHTML = ”
+”+c.lbl+’+’+c.pts+”;
box.appendChild(d);
});
g.appendChild(box);
}
update();
}
function toggle(id){ selected.has(id)?selected.delete(id):selected.add(id); render(); }
function preset(k){ selected.clear(); PRESETS[k].forEach(id=>selected.add(id)); render(); }

function update(){
let pts=0;
for(const grp in RUBRIC) RUBRIC[grp].forEach(c=>{ if(selected.has(c.id)) pts+=c.pts; });
const norm = pts/TOTAL;
document.getElementById(‘ptsNow’).textContent = pts;
document.getElementById(‘normVal’).textContent = (norm*100).toFixed(1)+’%’;
document.getElementById(‘fill’).style.width = (norm*100)+’%’;
const b = document.getElementById(‘badge’);
if(norm>=THRESH){ b.className=’badge pass’; b.textContent=’PASS u2014 meets 70% threshold’; }
else { b.className=’badge fail’; b.textContent=’FAIL u2014 below 70%’; }
const n = document.getElementById(‘note’);
if(pts>0 && norm=THRESH) n.textContent=’Task passes. The response satisfies enough rubric criteria to count as a successful answer.’;
else n.textContent=’A response can collect partial credit yet still fail the task. That gap is exactly what LifeSciBench measures.’;
resize();
}

// leaderboard
const MODELS=[
{name:”GPT-Rosalind”, score:0.576, pass:0.361},
{name:”GPT-5.5″, score:0.519, pass:0.257},
{name:”Gemini 3.1 Pro”, score:0.515, pass:0.236},
{name:”GPT-5.4″, score:0.479, pass:0.207},
{name:”Grok 4.3″, score:0.399, pass:0.130}
];
let curMetric=’pass’;
function drawLB(){
const lb=document.getElementById(‘lb’); lb.innerHTML=”;
const max = curMetric===’pass’?0.40:0.60;
MODELS.forEach(m=>{
const v=m[curMetric];
const r=document.createElement(‘div’); r.className=’row’;
r.innerHTML=”+m.name+”
+”+(curMetric===’pass’?(v*100).toFixed(1)+’%’:v.toFixed(3))+’