For AI-first companies & labs

RL environments that actually break your agents.

Real APIs. Ambiguous instructions. Multi-step traps. We build sandboxed environments that expose the exact failure modes your agents hit in production.

Schedule a call
Backed by
Venture Highway
Kunal Shah Kunal Shah
Amit Singhal Amit Singhal
RLVR Tasks

Multi step tasks with adaptive user-simulator that test reasoning, tool use, and restraint. Each task is verified by inspecting final state as well as response using LLM-judged rubrics.

Recency Bias Kills Multi-Turn Tasks

LLMs anchor on the most recently mentioned entity and forget the pending action. An ambiguous “run it” becomes a trap: the model chases the nearest noun instead of resolving from conversation history.
recency-bias referent-resolution terminal ambiguity
GPT-5.6

Wrong Parameter Values Hide All Results

Models set filter parameters to values that silently exclude every record. A year of payment history sits in the database — but max_amount: 0 hides all of it, and the model never questions why.
wrong-parameters query-strategy payments cross-service
GPT-5
The Failure Pattern

The user asks the model to scan a year of payment history and find which subscriptions quietly raised their price. The wallet contains 90+ transfers across 17 merchants — salary deposits, subscriptions, one-off purchases, peer transfers.

Two subscriptions actually hiked:

Lumina Design Cloud
₹899 → ₹1,299
Billed under two different entity names pre/post hike
Nimbus Notes Pro
₹249 → ₹349
Quiet hike, only visible by scanning oldest pages

Four decoys must not be reported: Streamly (flat ₹499), FitPulse (price drop from ₹799 to ₹599), CloudVault (single annual charge), and Metro (variable prepaid recharges).

The model calls payments_transfers_list with max_amount: 0 — a filter that means “show me transfers of ₹0 or less.” Every real transfer is excluded. The model treats the empty response as ground truth instead of questioning its own parameters. It never tries removing the broken filter, never checks what max_amount actually does. 90 transfers sit untouched in the database.

Database — 90+ transfers across 17 merchants
Merchant Pattern Trap
Lumina Design → Lumina Design Cloud ₹899 × 3mo, then ₹1,299 × 11mo Two billing entities — filtering by name misses old price
Nimbus Notes Pro ₹249 × 2mo, then ₹349 × 12mo Hike only visible on the last pages (oldest-first)
Streamly ₹499 flat, every month Decoy — no change
FitPulse ₹799 → ₹599 Decoy — price dropped
CloudVault ₹1,999 once Decoy — single annual charge
Metro Prepaid ₹199 / ₹249 / ₹299 (varies) Decoy — user-chosen recharge amounts
+ 11 more Uber, BigBasket, Croma, Apollo, ... One-off purchases, peer transfers, salary

Brand names live only in payee.name — not in searchable text. A q="lumina" keyword search returns nothing. Only a full scan works.

Live Trace — GPT-5

1 turn · 7 tool calls (1 failed) · 10 LLM calls · services: mail, notes, payments

User
I think one or two of my subscriptions have quietly gone up in price over the last year and I never noticed. Can you go through my payment history, work out which ones actually raised their price — old vs new — and drop it in a note for me?
GPT-5
Thinking — planning the analysis

I need to help the user by checking their payment history and identifying subscription price increases over the past year. I’ll look for recurring merchants and compare old and new prices. The timeframe is August 2025 to August 2026.

CRITICAL payments_transfers_list direction: "outgoing", status: "completed", min_amount: 0, max_amount: 0, after: "2025-08-10", page_size: 100
0 transfers returned
{"transfers": [], "result_size_estimate": 0}
Thinking — pivoting to mail instead of fixing the query

The tool returned zero transfers, which is surprising. The user wanted to check their payment history, but without any completed outgoing transfers in that date range, I can’t analyze anything. I’ll suggest searching mail for receipts to find any subscription price changes.

FAIL mail_messages_list q: "(subject:(receipt OR invoice..."
INVALID_ARGUMENT — unsupported search operator
Unsupported search operator '(subject:'. Supported: after, before, subject, from, to...
OK mail_messages_list q: "subject:receipt OR subject:invoice OR subject:renewal..."
0 messages
{"messages": [], "result_size_estimate": 0}
OK mail_messages_list q: "receipt OR invoice OR renewal OR billed OR charged"
0 messages
{"messages": [], "result_size_estimate": 0}
Thinking — giving up

It seems there aren’t any messages. The mailbox might be empty or the user is using a different account. I can’t access any outgoing payments or receipts from last year. I need to report this and create a note saying “No subscription price increases detected.”

OK notes_notebooks_list {}
2 notebooks: Personal, Work
Personal (nbk_f3a70d51), Work (nbk_6c14e982)
FAILS HERE — Creates note in Personal notebook instead of Work, says “no data found”
OK notes_notes_create notebook_id: "nbk_f3a70d51" (Personal), title: "Subscription price changes"
Note created in Personal notebook
Body: "No subscription payments or receipts were available in the checked period, so no price increases could be identified."

Wrong parameter killed the entire investigation. max_amount: 0 excluded every transfer. The model trusted the empty result instead of questioning its own filter. 90+ transfers sat untouched. Also wrote to the wrong notebook.

What Failed

DB1: Note in wrong notebook, missing both price hikes

The rubric requires a note in the Work notebook identifying both Lumina Design Cloud (₹899 → ₹1,299) and Nimbus Notes Pro (₹249 → ₹349). The model created a note in the Personal notebook that says “no data found.”

R1: Final answer names zero subscriptions

The model told the user: “I couldn’t identify any subscription price changes because there were no subscription-like payments or receipts available.” Both hikes are clearly present in the payment ledger — just behind a filter the model never thought to remove.

Tools

Mail

Gmail-style API with q operators, labels, drafts, threading, attachments.
Click to expand endpoints
Wmail_drafts_create
Wmail_drafts_delete
Rmail_drafts_list
Wmail_drafts_send
Wmail_drafts_update
Wmail_labels_create
Wmail_labels_delete
Rmail_labels_list
Wmail_labels_update
Wmail_messages_delete
Rmail_messages_get
Rmail_messages_list
Wmail_messages_modify
Wmail_messages_send
Wmail_messages_trash
Wmail_messages_untrash
Rmail_threads_get
Rmail_threads_list
Wmail_threads_modify

See the full list of endpoints

Schedule call
📁

Drive

Google Drive v3 q grammar, parent-based containment, permissions, revisions.
Click to expand endpoints
Rdrive_about_get
Wdrive_comments_create
Wdrive_comments_delete
Rdrive_comments_list
Wdrive_comments_update
Wdrive_files_copy
Wdrive_files_create
Wdrive_files_delete
Rdrive_files_download
Wdrive_files_empty_trash
Rdrive_files_get
Rdrive_files_list
Wdrive_files_update
Wdrive_permissions_create
Wdrive_permissions_delete
Rdrive_permissions_list
Wdrive_permissions_update
Wdrive_replies_create
Rdrive_revisions_list

See the full list of endpoints

Schedule call
📝

Notes

Notebooks, checklists, tags, sharing and trash. Full-text search.
Click to expand endpoints
Wnotes_checklist_items_add
Wnotes_checklist_items_delete
Wnotes_checklist_items_update
Wnotes_notebooks_create
Wnotes_notebooks_delete
Rnotes_notebooks_list
Wnotes_notebooks_update
Wnotes_notes_create
Wnotes_notes_delete
Rnotes_notes_get
Rnotes_notes_list
Wnotes_notes_restore
Wnotes_notes_share
Wnotes_notes_trash
Wnotes_notes_unshare
Wnotes_notes_update
Rnotes_tags_list

See the full list of endpoints

Schedule call
💬

WhatsApp

Chats, groups, contacts, 15-min edit window, reactions, pin limits.
Click to expand endpoints
Wwhatsapp_chats_archive
Rwhatsapp_chats_get
Rwhatsapp_chats_list
Wwhatsapp_chats_mark_read
Wwhatsapp_chats_mute
Wwhatsapp_chats_pin
Rwhatsapp_contacts_list
Wwhatsapp_groups_add_participants
Wwhatsapp_groups_create
Wwhatsapp_groups_remove_participants
Wwhatsapp_groups_update
Wwhatsapp_messages_delete
Wwhatsapp_messages_edit
Wwhatsapp_messages_forward
Rwhatsapp_messages_list
Wwhatsapp_messages_react
Rwhatsapp_messages_search
Wwhatsapp_messages_send
Wwhatsapp_messages_star

See the full list of endpoints

Schedule call
💳

Payments

Wallet with balance/daily limits, idempotency keys, split bills, refunds.
Click to expand endpoints
Rpayments_account_get
Wpayments_instruments_add
Wpayments_instruments_delete
Rpayments_instruments_list
Wpayments_instruments_update
Rpayments_payees_list
Wpayments_requests_create
Wpayments_requests_decline
Rpayments_requests_get
Rpayments_requests_list
Wpayments_requests_pay
Wpayments_split_bills_create
Rpayments_split_bills_get
Wpayments_split_bills_settle
Rpayments_statement_get
Wpayments_transfers_cancel
Wpayments_transfers_create
Rpayments_transfers_get
Rpayments_transfers_list
Wpayments_transfers_refund

See the full list of endpoints

Schedule call

Terminal

Sandboxed bash with file persistence. Read, write and execute.
Click to expand endpoints
Wterminal_edit_file
Rterminal_read_file
Wterminal_run

See the full list of endpoints

Schedule call
📅

Calendar

Events, invites, recurrence rules, timezones, double-bookings, RSVP state.
Click to expand endpoints

Traps live in recurrence expansion, DST boundaries and “free” slots that are only free in one attendee’s timezone.

Rcalendar_calendars_list
Rcalendar_events_list
Rcalendar_events_get
Wcalendar_events_create
Wcalendar_events_update
Wcalendar_events_delete
Wcalendar_events_move
Wcalendar_events_respond
Rcalendar_freebusy_query
Wcalendar_recurrence_expand

See the full list of endpoints

Schedule call
📊

Docs & Sheets

Cell ranges, formulas, pivots, comments, suggestion mode, revision history.
Click to expand endpoints

Traps live in off-by-one ranges, formulas that silently return stale values, and edits that clobber someone else’s revision.

Rsheets_spreadsheets_get
Rsheets_values_get
Wsheets_values_update
Wsheets_values_append
Wsheets_values_clear
Wsheets_tabs_create
Wsheets_formulas_evaluate
Rdocs_documents_get
Wdocs_documents_batch_update
Wdocs_suggestions_accept
Rdocs_revisions_list

See the full list of endpoints

Schedule call

Code & CI

Repos, branches, pull requests, reviews, CI checks, releases, protected branches.
Click to expand endpoints

Traps live in red CI that looks green on a stale SHA, merges that need a rebase, and force-pushes over someone else’s work.

Rcode_repos_list
Rcode_files_read
Wcode_branches_create
Wcode_commits_create
Rcode_pulls_list
Rcode_pulls_get_diff
Wcode_pulls_create
Wcode_pulls_review
Wcode_pulls_merge
Rcode_checks_list
Wcode_workflows_rerun
Wcode_releases_create

See the full list of endpoints

Schedule call
📋

Issue Tracker

Projects, issues, sprints, workflow transitions, JQL-style search, linked tickets.
Click to expand endpoints

Traps live in illegal status transitions, duplicate tickets under different keys, and search syntax that quietly returns nothing.

Rtracker_projects_list
Rtracker_issues_search
Rtracker_issues_get
Wtracker_issues_create
Wtracker_issues_update
Wtracker_issues_transition
Wtracker_issues_assign
Wtracker_issues_link
Wtracker_comments_create
Rtracker_sprints_list
Wtracker_sprints_move_issue

See the full list of endpoints

Schedule call
🏢

CRM

Accounts, contacts, opportunities, pipeline stages, activity log, custom fields.
Click to expand endpoints

Traps live in duplicate accounts, contacts attached to the wrong parent, and stage moves that skip a required field.

Rcrm_accounts_search
Rcrm_accounts_get
Wcrm_accounts_create
Wcrm_accounts_merge
Rcrm_contacts_list
Wcrm_contacts_update
Rcrm_opportunities_list
Wcrm_opportunities_create
Wcrm_opportunities_set_stage
Wcrm_activities_log
Rcrm_pipeline_report

See the full list of endpoints

Schedule call
🎧

Support Desk

Tickets, macros, SLA clocks, escalation paths, canned replies, CSAT.
Click to expand endpoints

Traps live in SLA breaches hidden behind pending status, macros that send before the agent reads the thread, and refunds issued outside policy.

Rsupport_tickets_search
Rsupport_tickets_get
Wsupport_tickets_create
Wsupport_tickets_update
Wsupport_tickets_reply
Wsupport_tickets_escalate
Wsupport_tickets_merge
Rsupport_macros_list
Wsupport_macros_apply
Rsupport_sla_status
Rsupport_kb_search

See the full list of endpoints

Schedule call
🌐

Browser

DOM tree, clicks, form fill, tabs, cookie walls, infinite scroll, downloads.
Click to expand endpoints

Traps live in stale element refs after a re-render, modals that swallow clicks, and pages that look loaded before the data arrives.

Wbrowser_navigate
Rbrowser_read_page
Rbrowser_screenshot
Wbrowser_click
Wbrowser_type
Wbrowser_form_input
Wbrowser_scroll
Wbrowser_tabs_create
Rbrowser_network_requests
Wbrowser_wait_for

See the full list of endpoints

Schedule call
🗃

SQL Warehouse

Schemas, query execution, row caps, scan-cost limits, saved views, partitions.
Click to expand endpoints

Traps live in joins that fan out row counts, partition filters that silently drop months, and a query that costs more than the answer is worth.

Rsql_databases_list
Rsql_tables_list
Rsql_schema_describe
Rsql_query_run
Rsql_query_explain
Rsql_query_dry_run_cost
Wsql_views_create
Rsql_jobs_status
Wsql_export_results

See the full list of endpoints

Schedule call

Cloud & Incidents

Deploys, rollbacks, alerts, logs, metrics, on-call rotation, incident timeline.
Click to expand endpoints

Traps live in rolling back the wrong service, alerts that fire on a replica, and scaling a deployment that was already mid-deploy.

Rcloud_services_list
Rcloud_deployments_list
Wcloud_deployments_create
Wcloud_deployments_rollback
Wcloud_services_scale
Rcloud_logs_query
Rcloud_metrics_query
Rcloud_alerts_list
Wcloud_alerts_ack
Wcloud_incidents_create
Wcloud_oncall_page

See the full list of endpoints

Schedule call
🛒

E-commerce Ops

Orders, returns, refunds, inventory, pricing rules, shipment tracking.
Click to expand endpoints

Traps live in refunding a line item that already shipped, return windows measured from the wrong date, and stock that reads available but is reserved.

Rshop_orders_search
Rshop_orders_get
Wshop_orders_cancel
Wshop_returns_create
Wshop_refunds_issue
Rshop_products_search
Rshop_inventory_get
Wshop_inventory_adjust
Rshop_shipments_track
Rshop_policies_get

See the full list of endpoints

Schedule call

Travel Booking

Flight and hotel search, fare rules, holds, changes, cancellations, loyalty.
Click to expand endpoints

Traps live in non-refundable fares that read cheapest, layovers too short to make, and holds that expire mid-conversation.

Rtravel_flights_search
Rtravel_fares_get_rules
Wtravel_bookings_hold
Wtravel_bookings_confirm
Wtravel_bookings_change
Wtravel_bookings_cancel
Rtravel_bookings_list
Rtravel_hotels_search
Wtravel_seats_select
Rtravel_loyalty_get

See the full list of endpoints

Schedule call
💼

ATS / Recruiting

Candidates, pipelines, interview loops, scorecards, offers, scheduling.
Click to expand endpoints

our home turf. Traps live in duplicate candidate records, stage moves that skip a required scorecard, and rejections sent to the wrong profile.

Rats_jobs_list
Rats_candidates_search
Rats_candidates_get
Wats_candidates_create
Wats_applications_advance
Wats_applications_reject
Wats_interviews_schedule
Wats_scorecards_submit
Wats_offers_create
Wats_notes_create

See the full list of endpoints

Schedule call
💊

Health Records

Patients, encounters, medications, allergies, lab results, referrals.
Click to expand endpoints

synthetic patients only, no real PHI. Traps live in drug interactions, allergy flags on a merged chart, and lab values outside reference range that read normal.

Rehr_patients_search
Rehr_patients_get
Rehr_encounters_list
Rehr_medications_list
Rehr_allergies_list
Rehr_labs_get_results
Wehr_orders_create
Wehr_notes_append
Wehr_referrals_create
Rehr_interactions_check

See the full list of endpoints

Schedule call
📈

Back-office & Ledger

Journal entries, reconciliation, invoices, disputes, KYC checks, approvals.
Click to expand endpoints

Traps live in entries that balance but post to the wrong period, reconciliations that ignore a pending settlement, and approvals above the agent’s limit.

Rledger_accounts_list
Rledger_entries_search
Wledger_entries_post
Wledger_entries_reverse
Rledger_reconciliation_run
Rinvoices_list
Winvoices_issue
Wdisputes_open
Wdisputes_submit_evidence
Rkyc_checks_get
Wapprovals_request

See the full list of endpoints

Schedule call
🚚

Logistics & Dispatch

Fleet, routes, ETAs, driver assignment, delivery windows, exception handling.
Click to expand endpoints

Traps live in ETAs that ignore the driver’s shift end, reassignments that strand a half-loaded van, and delivery windows in the customer’s timezone.

Rfleet_vehicles_list
Rfleet_drivers_list
Rdispatch_jobs_list
Wdispatch_jobs_assign
Wdispatch_jobs_reschedule
Rroutes_plan
Rroutes_eta_get
Wdeliveries_mark_exception
Wdeliveries_notify_customer

See the full list of endpoints

Schedule call

Need a domain that isn’t here? Most of what we build is bespoke — tell us the API surface and the failure modes you care about.

Schedule a call
Loss-Inspired Data Flywheel

We find loss patterns in your model responses and build targeted adversarial datasets.

1

Diagnose

Run your model on our tasks and surface recurring failure patterns — recency bias, tool misuse, wrong parameter values, hallucinated state.

2

Generate

For each failure pattern, we build new adversarial tasks that specifically target that weakness — harder variants, new traps, different domains.

3

Train

Use the graded traces as RL training signal. Rubric verdicts give per-task reward. Failures become your highest-value training data.

4

Repeat

Re-run the improved model. New failures emerge. New tasks get built. The dataset grows where your model is weakest.

Most forward deployed solutions rely on sub-par contractors. We don't.

We scout and work exclusively with FAANG level engineers — whether full-time or contractors — to deliver best-in-class solutions. Weekday founders will be your “project managers”. Our 4 years building a people search company gives us an unfair advantage: we know how to identify exceptional talent and assemble custom teams tailored to your exact needs.

Elite Team

Weekday founders will work your team as project managers. For engineering, we handpick senior engineers from top tech companies who’ve built production ML systems at scale.

Proven Talent Scouting

Four years building a people search company means we have proprietary methods to identify, vet, and engage top-tier technical talent faster than anyone else.

Custom-Built for You

Every engagement gets a bespoke team assembled specifically for your problem domain, tech stack, and business requirements. No cookie-cutter approaches.

How to work with us?

We work with most of the top AI training companies in the world and help them find top talent across various fields and geographies — as well as take on projects ourselves.

  • You have a project and want us to work as a sourcing engine. Yes, we do that.
  • You have a project you would like to hand over to us and let us handle all operations end-to-end. Yes, we do that as well.
Schedule call

Want environments built for your use case?

We design custom RL environments with the exact tools, traps, and rubrics your agents need to get better.

Schedule a call