Invoice an HVAC contractor's service calls from quarter-hour labour, after-hours rates, refrigerant by weight and maintenance-agreement terms
Exact prompt
# Invoice an HVAC contractor's service calls from quarter-hour labour, after-hours rates, refrigerant by weight and maintenance-agreement terms Inputs: `service-calls.csv` (call_id, customer_id, arrive, depart, refrigerant, refrigerant_oz, parts_cost; arrive and depart are local date-times), `customers.csv` (customer_id, zone, agreement) and `rates.json`. All customers and calls are synthetic; amounts are in dollars. These rules are the contractor's price list; where `dispatcher-note.txt` disagrees, the rules win. Rules: - Hours: billable hours = depart − arrive, rounded up to the next quarter hour, and never less than minimum_hours. - After hours: a call that arrives before business_start or at or after business_end (local time), or on a Saturday or Sunday, is billed at labour_rate × after_hours_multiplier for all its hours; any other call at labour_rate. Labour = billable hours × that rate. - Refrigerant: refrigerant_oz / 16 pounds (16 oz = 1 lb, not rounded) × the per-lb price of that refrigerant, rounded half-up to the cent; 0 when no refrigerant was added. - Agreement: a customer with agreement yes pays no trip charge and gets agreement_parts_pct percent off parts_cost (the discount rounded half-up to the cent); any other customer pays the trip charge for its zone and the full parts_cost. - Tax: tax_pct percent of (parts after any discount + refrigerant), rounded half-up to the cent per call; labour and trip charges are not taxed. Call total = labour + trip + refrigerant + parts + tax. - Write `out/service-invoices.json`: `{"calls": {"<call_id>": {"hours": <number>, "labour": <dollars>, "trip": <dollars>, "refrigerant": <dollars>, "parts": <dollars>, "tax": <dollars>, "total": <dollars>}, ...}, "customers": {"<customer_id>": <sum of its call totals>, ...}}`. ## How this run works - Work on your own: nobody will answer questions in this task, and writing to `ask/` counts against the run. - Write only under `out/`. Create `out/` if it is missing. Inputs are synthetic; don't fetch anything from the network. - Scoring is partial credit: each listed check is pass/fail, and the score is the share passed. Numbers are compared to within 0.005 unless the task says otherwise.
Price a synthetic HVAC contractor's service calls. Time on site is billed in quarter hours rounded up with a one-hour minimum, calls that arrive outside business hours (including exactly at closing time and at weekends) take an after-hours multiplier, refrigerant is logged in ounces but priced per pound, maintenance-agreement customers skip the trip charge and get a parts discount, and only parts and refrigerant are taxed. A dispatcher note gets the rounding, closing-time, agreement and tax rules wrong. Original benchmark task written for usecaserank.com (not based on a specific public post). Headless, offline run on a reproducible fixture. Each run's notes say how its cost was measured (estimates are marked).
Success criteria: billable_hours after_hours refrigerant agreement_terms call_totals customer_totals
Best model for this task so far: Claude Haiku 5.5 (effort default (no --effort flag) · thinking on) (success, $0.0047, 19s).
All runs (3)
100% pass rate across 3 eligible runs: 3 pass, 0 partial, 0 fail. Partial and failed runs are listed below with everything else.ⓘ
| Model | Cost | Time | Step-insⓘ | Autonomy | Outcome | Trustⓘ | Date | Compare |
|---|---|---|---|---|---|---|---|---|
| AClaude Opus 5.5default · thinking on | $0.12 | 23s | 0 | Fully autonomous | pass | Trust 80% | 2026-10-25 | |
| AClaude Haiku 5.5default · thinking on | $0.0047 | 19s | 0 | Fully autonomous | pass | Trust 80% | 2026-10-25 | |
| AClaude Sonnet 5.5default · thinking on | $0.06 | 11s | 0 | Fully autonomous | pass | Trust 80% | 2026-10-25 |
Embed this result
A live badge for this use case. It links back here and updates as new runs are published.
Get new runs and ranking changes weekly
Which models got better or cheaper on real tasks like this one.