rtrvr.ai

RTRVR SIMULATIONS / RL ENVIRONMENTS

Signed-in business software,
replicated for agents.

Live, stateful replicas of signed-in business software across hiring and HR, finance and purchasing, sales and support, IT and engineering, government services and workspace tools. Agents see every page the way rtrvr's production agent does, each tool call changes real app state, and deterministic checks grade the result.

Built for long-horizon, high-value work: the day-to-day responsibilities of accountants, recruiters, compliance specialists, procurement managers, RevOps analysts and security admins. Reference solutions to the public tasks take 64 to 219 actions.

Plain-text version for agents and crawlers: /simulations.md
01HOW IT WORKS

From page structure to a graded episode

Four parts, each matched to what an agent meets in production.

  1. 01

    Structure from anonymized production pages

    For 4 of 12 environments, the interface structure is aggregated from anonymized production page data: roles, layout, action hints and short generic labels that recur across many users. No page text, values or links are kept. The other 8 were authored from product documentation.

  2. 02

    An unbranded, live app

    Each replica is a working web app with its own database, seeded with generated people, companies and records. Every tool call changes real application state.

  3. 03

    rtrvr's production observation and tools

    Agents read each page as the accessibility-tree text rendered by the pinned rtrvr extension (build 528f571), and act with rtrvr's production act tools: 37 tools in profile sim-core-v1.

  4. 04

    A deterministic verifier

    SQL, event-log and answer checks grade the final state, with no LLM judges. Faults, user corrections and approval pauses are scripted per task, so every run is repeatable.

An excerpt of what an agent reads on the careers replica (a real capture; all data generated). Each [id=N] is a target for the act tools.
[h1] Data Analyst
[textbox][editable][actions=click→type:focus-first] Name * [id=7802] [name=fullName] [required] [autocomplete=name]
[textbox][editable][actions=click→type:focus-first] Email * [id=7811] [type=email] [name=email] [required] [autocomplete=email]
[combobox][autocomplete=list] Location * [id=7829] [name=location] [placeholder="Start typing a city"]
[textNode] Resume *
[occluded][textbox][read-only][actions=click→type:focus-first][format=accepts .pdf,.doc,.docx] Upload file [id=7839] [type=file]
[group] Are you legally authorized to work in the United States?
  [below][button] Yes [id=7870]
  [below][button] No [id=7872]
[below][button] Next [id=7874]
02ENVIRONMENTS

12 unbranded replicas

4 of 12 environments were built from anonymized production page structure; 8 were authored from product documentation. Each aggregated environment lists how closely its replica matches the structure it was built from.

12 of 12 environments

  • Hiring and HR12 pages

    Careers

    Employer career sites: job postings and application forms

    Built from anonymized production page structure

    Path recall
    91%
    Label recall
    97%
    Role divergence
    0.10
    Action-hint divergence
    0.02
  • IT and engineering30 pages

    Code Host

    Source code hosting and review

    Built from anonymized production page structure

    Path recall
    97%
    Label recall
    98%
    Role divergence
    0.12
    Action-hint divergence
    0.08
  • Sales and support22 pages

    CRM

    Customer relationship management

    Authored from product documentation

  • Government29 pages

    State Business Services

    Government services portals

    Built from anonymized production page structure

    Path recall
    90%
    Label recall
    92%
    Role divergence
    0.20
    Action-hint divergence
    0.06
  • Workspace16 pages

    Groupware

    Email, files, documents and calendar

    Authored from product documentation

  • Hiring and HR29 pages

    HR Suite

    Enterprise HR suites: candidate application wizard and employee self-service

    Authored from product documentation

  • IT and engineering24 pages

    Access Admin

    Cloud identity and access administration

    Authored from product documentation

  • Finance and purchasing30 pages

    Ledger

    Invoicing, accounting, payables and receivables

    Authored from product documentation

  • Finance and purchasing24 pages

    Payments

    Payments operations dashboards

    Built from anonymized production page structure

    Path recall
    99%
    Label recall
    99%
    Role divergence
    0.22
    Action-hint divergence
    0.07
  • Finance and purchasing26 pages

    Procure

    Procurement and business purchasing

    Authored from product documentation

  • Sales and support17 pages

    Support Desk

    Customer support ticketing

    Authored from product documentation

  • Workspace11 pages

    Tables

    Grid databases and work management

    Authored from product documentation

03PUBLIC TASKS

5 public tasks

5 of the 100 admitted tasks are public. The other 95 stay private, and the 75 held-out tasks run only as hosted evaluation.

By length: 65 in tier 4 (150–300 actions) and 35 in tier 3 (60–150 actions). Across the suite, 56 inject production failures, 23 include a scripted user correction, 90 span more than one app and 7 are fully or partly infeasible.

Of 100 admitted tasks, 41 were derived from anonymized production agent tasks, 8 were informed by anonymized usage statistics and 51 were authored from product documentation.

  1. 01engineering manager

    Contractor access and team role audit with sign-off

    An engineering manager audits outside collaborators and team roles on a code host against a contractor roster spreadsheet and a collaborator policy document. Contractors whose contract ended, or who aren't on the roster, lose all access except keep-list rows; active contractors lose access outside their contract scope and are lowered to their contract role without ever being raised, and a contract ending today still counts. Suspended people leave every team and only listed leads may stay team maintainers. Removing an Admin grant needs the requester's sign-off on the full list, and the requester holds one back until a vendor handover finishes.

    • Approval pause
    Read the instruction

    Please audit outside collaborators and team roles in Code Host against our Collaborator policy and the Contractor roster (Groupware › Files › Engineering › Vendors). Today is 2026-09-10. Ask me before you remove anything that has Admin. When you're done, list the access you removed as "repository: @login" (the repository's short name, without the organization) and tell me how many team membership changes you made.

    The verifier checks

    • At least one access entry or team role was changed
    • warehouse-loader: @aingersoll-ext lowered to Write (above the contract role)
    • mobile-app: @aingersoll-ext removed (outside the contract scope)
    • design-system: @astridthorvaldsen removed (contract ended)
    • developer-docs: @astridthorvaldsen removed (contract ended)
    • developer-docs: @estanhope-ext removed (outside the contract scope)
    • admin-console: @fdunmore-ext removed (contract ended)
    • developer-docs: @fokafor-ext removed (contract ended)
    • warehouse-loader: @pkowalczyk-ext lowered to Read (above the contract role)
    • developer-docs: @pkowalczyk-ext removed (outside the contract scope)
    • mobile-app: @rkowalczyk-ext removed (outside the contract scope)
    • developer-docs: @rkowalczyk-ext lowered to Write (above the contract role)
    Length
    Tier 3 · 60–150 actions
    Apps
    Code Host, Groupware
    Reference solution
    64 actions
    Step budget
    96
    Provenance
    Authored from product documentation
  2. 02RevOps analyst

    Turn call recaps into next steps and follow-ups

    A sales manager's team emails a recap after every customer call. The RevOps analyst applies each recap of an open deal currently owned by the team: the deal's next step becomes the recap's text and one follow-up task is created on the deal with a standard subject, the recap's follow-up date (a date the rep corrects in a later reply wins, and a missing date means a week after the call), a priority that depends on the deal stage, and the deal owner as assignee. Recaps for closed deals, deal names that are not in the CRM (even when a similarly named deal exists) and deals owned by another team (including one reassigned since the call) are skipped and counted by reason, and a forwarded copy of a recap must not create a second task. The first task save fails with a server error, every task save asks for confirmation and the next-step field starts collapsed. Partway through, the manager announces that one rep is going on leave and that follow-ups for that rep's deals go to the manager instead, including any already created.

    • Server error (500) on the first save
    • Confirm dialog before submitting
    • Required field in a collapsed section
    • 1 scripted correction
    Read the instruction

    Kasimir Farrow's Central team sent their call recaps to my inbox in Groupware. Please process every call recap there (whoever sent it) in the CRM as described in "Call recap follow-up standard" (Groupware, Files > Sales Operations > Playbooks). Answer with how many deals you updated, how many follow-up tasks you created, and how many recaps you skipped under each code (CLOSED, NOT_FOUND, OTHER_TEAM; give all three, 0 when none).

    The verifier checks

    • At least one follow-up task was created
    • Ravensloe Hospitality – Reporting suite FY26: Next step "Rollout plan walkthrough"
    • Ravensloe Hospitality – Reporting suite FY26: one open follow-up task "Follow up: Rollout plan walkthrough" due 2026-06-03, normal, owner 4
    • Juniperra Veterinary Clinic – Data migration FY26: Next step "Implementation timeline review"
    • Juniperra Veterinary Clinic – Data migration FY26: one open follow-up task "Follow up: Implementation timeline review" due 2026-06-07, high, owner 12
    • Caldovine Realty – Training package FY26: Next step "Second demo for the warehouse leads"
    • Caldovine Realty – Training package FY26: one open follow-up task "Follow up: Second demo for the warehouse leads" due 2026-06-04, normal, owner 4
    • Nevrassa Consulting – Security bundle FY26: Next step "Usage forecast for the second year"
    • Nevrassa Consulting – Security bundle FY26: one open follow-up task "Follow up: Usage forecast for the second year" due 2026-06-12, normal, owner 10
    • Marrowby Realty – Partner portal FY26: Next step "Procurement intake form submitted"
    • Marrowby Realty – Partner portal FY26: one open follow-up task "Follow up: Procurement intake form submitted" due 2026-06-21 (date corrected in a reply), high, owner 4
    • Carrowmere Pharmacy – Mobile access FY26: Next step "Security questionnaire back from IT"
    Length
    Tier 4 · 150–300 actions
    Apps
    CRM, Groupware
    Reference solution
    171 actions
    Step budget
    360
    Provenance
    Authored from product documentation
  3. 03cloud security administrator

    Least-privilege migration wave with blocked rows

    A cloud security administrator applies a least-privilege migration plan across four non-production projects in a cloud access console: for each plan row, replace the principal's Editor role with exactly the listed roles in one change (keeping other roles, never granting a role twice), resolve rows that name permissions to the single smallest role that covers them, and record each row's result in the plan sheet. Three rows can't be applied (no single role covers the permissions, a listed custom role is disabled, the Editor role is only inherited from a folder): the administrator must leave them untouched, record a reason code and report the wave as partial.

    • Includes an infeasible item
    Read the instruction

    Please run wave 3 of our least-privilege migration in Access Admin today (Tuesday, September 8, 2026). The rows are in the "Least-privilege migration plan - wave 3" sheet in Groupware (Files, Platform › Least privilege), and the Least-privilege migration standard in the same folder says how each row is applied, which rows can't be applied, and the reason codes to use. Fill in the plan's Result column for every row as you go. When you're done, answer with status "partial" if any row could not be applied (otherwise "completed"), how many rows you applied and, for each reason code (NO_COVERING_ROLE, ROLE_DISABLED, INHERITED_ONLY), the emails of the principals whose rows were blocked with it.

    The verifier checks

    • The answer status is "partial" (some rows could not be applied)
    • CHG-2597: vikram.sandoval@pellmore-hospitality.example.test on partner-api-staging-7415 has exactly database-client, secrets-reader (Editor replaced, other roles kept)
    • CHG-2597: the Editor removal carries the change ID as its reason
    • CHG-2597: the plan's Result says Done (a short note after it is fine)
    • CHG-2598: freya.adeyemi@pellmore-hospitality.example.test on partner-api-staging-7415 has exactly artifacts-writer, functions-developer (Editor replaced, other roles kept)
    • CHG-2598: the Editor removal carries the change ID as its reason
    • CHG-2598: the plan's Result says Done (a short note after it is fine)
    • CHG-2599: default-runtime@partner-api-staging-7415.svc.example.test on partner-api-staging-7415 has exactly functions-developer, logging-viewer (Editor replaced, other roles kept)
    • CHG-2599: the Editor removal carries the change ID as its reason
    • CHG-2599: the plan's Result says Done (a short note after it is fine)
    • CHG-2600: freya.adeyemi@pellmore-hospitality.example.test on partner-api-dev-7238 has exactly keys-user, secrets-viewer (Editor replaced, other roles kept)
    • CHG-2600: the Editor removal carries the change ID as its reason
    Length
    Tier 4 · 150–300 actions
    Apps
    Access Admin, Groupware
    Reference solution
    196 actions
    Step budget
    294
    Provenance
    Authored from product documentation
  4. 04payments operations analyst

    Work the support refund queue under the refund policy

    A payments operations analyst works the refund requests that the support desk routes to finance. For each ticket the analyst finds the store payment in the payments dashboard, applies the written refund policy in order (bank disputes, requests already refunded or raised twice, an approval limit that sends large refunds to the controller, double checkouts, damaged deliveries within 60 days, change-of-mind returns within 30 days with a restocking fee, and late deliveries that earn the shipping fee back) and refunds exactly what the policy allows with a ticket-number note. The first refund save fails with a server error and must be retried without refunding twice. Each ticket then gets an outcome tag, the refunded amount, a reply quoting the refund reference and the right status.

    • Server error (500) on the first save
    • Required field in a collapsed section
    Read the instruction

    Support Desk has routed this week's refund requests to finance (Billing group tickets tagged refund_request). Work every unsolved one under the "Customer Refund Policy" in Groupware Files (Finance > Policies): decide each request in Payments, refund there exactly what the policy allows, then tag, fill in and answer the ticket in Support Desk as the policy says. Create at most one refund per payment (a failed save must not end up refunded twice), and don't change anything else in either app. When you're done, answer with the IDs of the refunds you created, the total amount refunded and the numbers of the tickets you escalated.

    The verifier checks

    • At least half of the refund-request tickets carry an outcome tag
    • #4323 (Wrenhollow Mechanical): tagged refund_denied (and no other outcome), product area Hardware & orders, order ORD-41458, refund amount empty
    • #4323 (Wrenhollow Mechanical): public reply
    • #4323 (Wrenhollow Mechanical): Solved
    • #4324 (Sabrevel Tree Care): PAY-WLL6GVE3 refunded once, $118.00, reason Customer request, note "Ticket #4324"
    • #4324 (Sabrevel Tree Care): tagged refund_full (and no other outcome), product area Hardware & orders, order ORD-41461, refund amount $118.00
    • #4324 (Sabrevel Tree Care): public reply with the refund ID
    • #4324 (Sabrevel Tree Care): Solved
    • #4325 (Norvessa Garage Doors): PAY-PSM6YWKE refunded once, $186.15, reason Customer request, note "Ticket #4325"
    • #4325 (Norvessa Garage Doors): tagged refund_partial (and no other outcome), product area Hardware & orders, order ORD-41464, refund amount $186.15
    • #4325 (Norvessa Garage Doors): public reply with the refund ID
    • #4325 (Norvessa Garage Doors): Solved
    Length
    Tier 4 · 150–300 actions
    Apps
    Payments, Support Desk, Groupware
    Reference solution
    219 actions
    Step budget
    330
    Provenance
    Authored from product documentation
  5. 05operations analyst

    Stand up a customer onboarding tracker and load the hand-off data

    An operations analyst sets up a new grid database for customer onboarding from a written spec: the starter table is renamed and reshaped (renamed primary and paragraph fields, the starter stage options renamed and extended), eight fields are added, and five views are built: a renamed sorted grid, an any-of filter with a nested all-of group, a two-level grouped grid, a kanban board with chosen card fields, and an intake form with custom labels, a required question, a custom button and a confirmation message. The pasted sales hand-off list must be cleaned on the way in (owner initials mapped to full names, coded plan, phase and health values, year/month/day dates the importer cannot read, a test account and a customer entered twice), and finance's ARR corrections must update only the matching onboardings without adding the customer that is not onboarding.

    Read the instruction

    We're moving customer onboarding out of the sales hand-off spreadsheet into Tables. Please set up a new database called "Customer Onboarding" and shape its starter table into our tracker: TABLE "Onboardings" (rename the starter table; keep its fields, renamed): - Account: the primary field (the starter's Name), required. - Blockers: the starter's Details paragraph. - Stage: keep the starter's Stage field but its options must be, in order: Kickoff, Data migration, Training, Live, Stalled. - CSM: Choice with options, in this order: Ximena Farrow, Keziah Kavanagh, Dario Alvarado. - Plan: Choice, required, options in this order: Starter, Growth, Enterprise. - Kickoff date and Go-live target: Date fields. - ARR: Currency in whole dollars. - Seats: Number (whole numbers). - Health: Choice with options, in this order: Green, Yellow, Red. - Sponsor email: Email. Nothing else (we don't keep the CRM reference). VIEWS: - "All onboardings": the default grid, renamed, sorted by Go-live target, earliest first. - "At risk": a grid showing onboardings that match ANY of: Health is Red; Stage is Stalled; Health is Yellow and the Go-live target is before today (both of those together). - "By CSM": a grid grouped by CSM and then by Stage, sorted by ARR, highest first. - "Onboarding board": a kanban board with a column per Stage; cards show CSM, Health and Go-live target only. - "Onboarding intake": a form whose questions are, in this order: Account labelled "Customer name"; Plan; Seats; Sponsor email labelled "Executive sponsor's email" and required on the form. Button text "Start onboarding"; confirmation message "Thanks! Your CSM will reach out within one business day." DATA: here's the sales hand-off export. Owners are written as initial + surname (they're our CSMs above), plan tiers are starter / growth / ent, phase "on hold" means Stalled, RAG is G / Y / R for Green / Yellow / Red, and the dates are year/month/day. Leave out test accounts. One customer was entered twice by sales; the later row is the correct one. Don't bring in the CRM ref column. Customer,Owner,Plan tier,Phase,Kickoff,Target go-live,Annual value,Licenses,RAG,Sponsor,CRM ref,Blockers Torvalen Consulting,K. Kavanagh,ent,kickoff,2026/08/25,2026/09/05,"$154,000",625,G,teodor.pennington@torvalen-consulting.example.test,CRM-83123,SSO setup waiting on customer IT Ondrevia Insurance Agency,X. Farrow,starter,training,2026/07/20,2026/09/09,"$81,000",820,Y,gaia.thorvaldsen@ondrevia-insurance-agency.example.test,CRM-36795,Sponsor on leave until next month Serravin Motors,K. Kavanagh,ent,live,2026/08/28,2026/11/07,"$18,000",728,G,mireille.garside@serravin-motors.example.test,CRM-94087,Needs custom SLA review Dunvessa Veterinary Clinic,D. Alvarado,starter,live,2026/08/25,2026/12/02,"$147,000",338,G,kasimir.lindqvist@dunvessa-veterinary-clinic.example.test,CRM-58064,SSO setup waiting on customer IT Serravin Consulting,X. Farrow,growth,kickoff,2026/08/15,2026/10/17,"$51,000",638,G,leilani.montoya@serravin-consulting.example.test,CRM-26577,Needs custom SLA review Torvalen Consulting,K. Kavanagh,ent,live,2026/08/25,2026/09/26,"$164,000",625,G,teodor.pennington@torvalen-consulting.example.test,CRM-83123,SSO setup waiting on customer IT Westerlyn Freight,D. Alvarado,ent,kickoff,2026/08/24,2026/12/04,"$133,000",776,Y,priya.stanhope@westerlyn-freight.example.test,CRM-26750,Sponsor on leave until next month Graymantle Outfitters,X. Farrow,ent,live,2026/08/26,2026/10/29,"$80,000",162,G,jordan.pellegrini@graymantle-outfitters.example.test,CRM-46963, TEST - Wrenhollow sandbox,X. Farrow,starter,kickoff,2026/07/20,2026/10/24,"$1,000",820,Y,qa@example.test,CRM-00000, Elmstrand Realty,K. Kavanagh,ent,migration,2026/09/03,2026/10/11,"$103,000",742,G,casey.esposito@elmstrand-realty.example.test,CRM-70690,Needs custom SLA review Meridane Engineering,D. Alvarado,starter,on hold,2026/07/19,2026/09/04,"$169,000",237,G,wren.brightwell@meridane-engineering.example.test,CRM-47729, Norvessa Academy,X. Farrow,ent,training,2026/09/01,2026/11/19,"$235,000",302,R,yara.barrientos@norvessa-academy.example.test,CRM-21272,Legacy data export is late Thistlecombe Energy,K. Kavanagh,starter,live,2026/08/05,2026/10/09,"$201,000",393,G,emil.ferreira@thistlecombe-energy.example.test,CRM-83843, Nevrassa Robotics,D. Alvarado,growth,training,2026/08/27,2026/12/13,"$232,000",816,G,farida.macready@nevrassa-robotics.example.test,CRM-27412,SSO setup waiting on customer IT Ostrevel Apparel,X. Farrow,starter,migration,2026/09/10,2026/11/01,"$58,000",39,R,esperanza.jablonski@ostrevel-apparel.example.test,CRM-67152, Then apply finance's ARR corrections below to the matching onboardings. Finance's list covers all customers, so ignore anyone who isn't in the tracker; don't add them. Customer,Corrected ARR Halvessen Media,"$117,000" Dunvessa Veterinary Clinic,"$141,000" Nevrassa Robotics,"$240,000" Graymantle Outfitters,"$82,000" When you're done, tell me how many onboardings are in the tracker, which customers from either list you deliberately didn't add, and how many onboardings the At risk view shows.

    The verifier checks

    • Exactly one "Customer Onboarding" database with an "Onboardings" table
    • Hand-off rows were brought in
    • Account is the primary field (renamed from Name), required
    • Details is renamed Blockers (Paragraph)
    • Stage options are Kickoff, Data migration, Training, Live, Stalled
    • CSM: Choice with the three CSMs' full names
    • Plan: required Choice Starter, Growth, Enterprise
    • Kickoff date is a Date field
    • Go-live target is a Date field
    • ARR: Currency $ in whole dollars
    • Seats is a whole Number
    • Health: Choice Green, Yellow, Red
    Length
    Tier 3 · 60–150 actions
    Apps
    Tables
    Reference solution
    148 actions
    Step budget
    222
    Provenance
    Authored from product documentation
04RESULTS

How models do on the suite

rtrvr's production harness ran every task; frontier reference agents ran the same environments and verifier in their own harnesses. Success rates carry 95% Wilson intervals; mean rewards carry 95% bootstrap intervals over tasks.

Offline benchmark on synthetic replicas; not live traffic

rtrvr production harness

rtrvr's production act prompt and tools drive every row, so rows differ in model and reasoning effort. Every row ran all 100 tasks, GLM 5.3 Flash with 3 seeds per task and DeepSeek Flash with 2 seeds per task. GLM 5.3 Flash at low reasoning is rtrvr's production default.

Success rate

Share of episodes the verifier passed, with 95% Wilson interval

Mean reward

Verifier reward from 0 to 1, with 95% bootstrap interval over tasks
rtrvr production harness: results by model, with 95% intervals and list-price cost
ModelCoveragetasks × seeds per taskSuccess rate95% intervalMean reward95% intervalSteps to successmedianCost per episodelist API priceCost per successlist API priceModel latencyp50 / p90, pinned supplier
GLM 5.3 FlashLow reasoning · production default100 tasks × 3 seedsAll tasks · 300 episodes7.0%4.6–10.5%0.5610.506–0.59985$0.53$7.612.1 s / 5.4 s
GLM 5.3 FlashHigh reasoning100 tasks × 3 seedsAll tasks · 300 episodes35.3%30.1–40.9%0.7920.725–0.832125$0.56$1.603.3 s / 14 s
DeepSeek FlashLow reasoning100 tasks × 2 seedsAll tasks · 200 episodes42.0%35.4–48.9%0.7850.729–0.839127$0.95$2.272.8 s / 11 s
DeepSeek FlashMax reasoning100 tasks × 2 seedsAll tasks · 200 episodes68.5%61.8–74.5%0.9030.867–0.935134$1.19$1.745.0 s / 22 s
Success rate by kind of task, with 95% intervals
ModelTier 3Tier 4With faultsNo faultsWith a correctionNo correction
GLM 5.3 FlashLow reasoning · production default12.4%7.4–20.0%4.1%2.1–7.9%6.6%3.7–11.3%7.6%4.2–13.4%2.9%0.8–10.0%8.2%5.3–12.5%
GLM 5.3 FlashHigh reasoning40.9%32.0–50.5%32.3%26.1–39.2%36.9%30.0–44.4%33.3%25.9–41.8%26.1%17.2–37.5%38.1%32.1–44.5%
DeepSeek FlashLow reasoning57.1%45.5–68.1%33.9%26.3–42.3%42.0%33.2–51.2%42.0%32.3–52.5%32.6%20.9–47.0%44.8%37.2–52.7%
DeepSeek FlashMax reasoning78.6%67.6–86.6%63.1%54.5–70.9%65.2%56.0–73.4%72.7%62.6–80.9%54.4%40.2–67.8%72.7%65.2–79.1%
  • Harness: rtrvr act (production prompt path), prompt act cd0e0112, tool profile sim-core-v1, step cap 400, run 2026-10-03 to 2026-10-08.
  • DeepSeek Flash ran with a no-reasoning continuation clamp: a step that hits the output cap while still reasoning is retried once with reasoning off (low reasoning: 102 of 200 episodes; max reasoning: all 200 episodes).
  • Model latency is measured on one pinned supplier per model. It is not the latency users see in production.

Frontier reference agents (own harnesses, same environments and verifier)

Claude Code subagents (Claude Opus 5.5) and OpenAI's Codex CLI (GPT-6.1 Sol and GPT-6 Sol) drive the same gym through a command-line wrapper, one action per call, with the same environments, task text, tools, step budgets and deterministic verifier as the production harness. Prompts, context handling and reasoning settings are each harness's own, so a row measures a model and its harness together.

Success rate

Share of episodes the verifier passed, with 95% Wilson interval

Mean reward

Verifier reward from 0 to 1, with 95% bootstrap interval over tasks
Frontier reference agents (own harnesses, same environments and verifier): results by model, with 95% intervals and list-price cost
ModelCoveragetasks × seeds per taskSuccess rate95% intervalMean reward95% intervalCost per episodelist API priceCost per successlist API price
Claude Opus 5.5Claude Code100 tasks × 1 seedAll tasks · 100 episodes97.0%91.5–99.0%0.9910.981–1.000$18.78lower bound$19.36lower bound
GPT-6.1 SolCodex CLI25 tasks × 1 seedDevelopment and public tasks · 25 episodes80.0%60.9–91.1%0.9530.903–0.993$3.75$4.69
GPT-6 SolCodex CLI20 tasks × 1 seedDevelopment tasks · 20 episodes50.0%29.9–70.1%0.8940.809–0.963$6.61$13.21
  • Claude Opus 5.5 ran all 100 tasks, GPT-6.1 Sol the 25 development and public tasks and GPT-6 Sol the 20 development tasks, each task once. Fewer tasks give wider intervals.
  • Harness: Claude Code, tool profile sim-core-v1 through the command-line wrapper, run 2026-10-03 to 2026-10-04.
  • Harness: Codex CLI, tool profile sim-core-v1 through the command-line wrapper, run 2026-10-03 to 2026-10-06.
  • Steps and model latency are not shown for these rows: the wrapper takes one action per step, where the production harness can batch several, and these harnesses do not report per-call latency.
  • Claude Opus 5.5: output tokens are estimated from visible output, because the harness does not record final output-token counts, so the list cost is a lower bound.
  • Cost is each model maker's list API price for the tokens an episode used, with cached input at the cached rate: the same basis for every row, not what rtrvr pays.
  • These results are separate from the Artificial Analysis index and from the live production numbers on the models page.
Compare models on live production traffic
05FOR LABS

Plug in your agent

Every task ships its apps, its tools and its verifier. Pick the interface your stack already speaks.

Harbor

Each task exports as a Harbor task. A sidecar hosts the apps, the pinned extension in headless Chromium, the MCP tool server and the verifier, on a network with no internet access.

harbor run -p ./rtrvr-sim/<task-id>-s0 -a claude-code -m <provider>/<model>
harbor run -p ./rtrvr-sim/<task-id>-s0 -a oracle   # reference solution

MCP tool server

Any MCP-capable agent drives an episode over streamable HTTP: get_observation, click_element, type_into_element, goto_url, upload_file, answer_task and the rest of the tool profile.

[[environment.mcp_servers]]
name = "rtrvr-sim"
transport = "streamable-http"
url = "http://sim:8000/mcp"

Gym API

A JSON API for your own loop. Every step returns the new observation, the action receipts and, at the end, the reward.

POST /reset {"task_id": "<task-id>", "seed": 0, "tool_profile": "sim-core-v1"}
  -> {episode_id, observation, tools, task}
POST /step  {"episode_id": "<id>", "action": {"tool_name": "click_element", "args": {"tab_id": 0, "element_id": 412}}}
  -> {observation, reward, done, info}

Neutral CLI

Run any OpenAI-compatible endpoint through the same harness and verifier.

rtrvr-sim run --policy https://<endpoint>/v1 --model <model-id> --tasks <task-ids>

TRL

A generated environment_factory class with one typed method per tool, for GRPO training.

from trl import GRPOTrainer
from rtrvr_sim_trl import RtrvrSimEnv  # one typed method per tool

trainer = GRPOTrainer(
    model=model,
    train_dataset=tasks,          # rows carry task_id and seed
    reward_funcs=episode_reward,  # reads the verifier's reward at episode end
    environment_factory=RtrvrSimEnv,
)

Each task's verifier writes reward, success, weighted score, steps, invalid actions, no-op actions that left the page unchanged, gates passed and whether the agent answered.

Held-out tasks as hosted evaluation

The held-out split never leaves our infrastructure, so scores stay comparable and the tasks stay out of training data. Send an endpoint and we run the split with the same harness and verifier.

Ask about hosted evaluation
06METHODOLOGY AND PRIVACY

How the suite is built

Generated data, unbranded apps and deterministic grading, with every provenance label counted.

Generated data only

Every person, company, document and record is generated. Emails use example.test addresses and phone numbers use the 555-01xx range.

Unbranded

Replicas describe a kind of software, never a product: no vendor names, logos or trade dress, and the names in app chrome are generic.

Structure, not content

For the 4 environments with production structure, structure comes from k-anonymous aggregates of anonymized production pages: roles, depth, action hints and short generic labels that recur across distinct users. All page text, values, links and identifiers are dropped, and no product seen for fewer than three users contributes. An environment keeps that label only if its replica reaches path recall of at least 80%, label recall of at least 90% and action-hint divergence of at most 0.10.

No user data shipped

Real user runs contain personal data, and none of it appears in anything we ship. Environments, tasks and reference runs contain no user data: every person, company and record in the replicas is fictional.

Admission checks

A task is admitted only if its reference solution scores 1.0 on three seeds, a do-nothing agent scores 0, every mutated solution fails, two reference runs produce identical database and event hashes, and privacy and brand scans pass.

Task provenance

Of 100 admitted tasks, 41 were derived from anonymized production agent tasks, 8 were informed by anonymized usage statistics and 51 were authored from product documentation.

Fidelity to production

Capture and actuation run the same code as the production rtrvr extension (build 528f571). Two differences: input is synthetic DOM input rather than the operating system's input path, and the harness waits for the network to go idle before an episode's first capture.

RTRVR SIMULATIONS

Measure your agent on real work.

Run your model through the full suite, or tell us which workflow you need replicated. Held-out tasks run as hosted evaluation.