Skip to content

Claude Sonnet 5.5 (effort default (no --effort flag) · thinking on) on Sort a household's texts and emails into scams and genuine messages before anything is paid, without crying wolf

AClaude Sonnet 5.5default · thinking on · Claude Code 2.1.299 (headless -p) · cloud · 2026-10-25 · by @bobsiopener

Trust 80%Fully autonomoussuccess · first try
Estimated cost
$0.06
Wall time
16s
Human step-ins
0
Outcome
Pass

Compare with other models on this task →

Summary

Exact prompt

# Sort a household's texts and emails into scams and genuine messages before anything is paid, without crying wolf Inputs: `inbox.json` (a list of messages: id, channel, sender, sender_name, received, subject, body), `my-accounts.json` (the organisations the household really deals with: name, domains, phones, and the account, order or parcel references it holds with each), `contacts.csv` (name, phone, email) and `rules.csv` (rule_id, rule). Every person, organisation, domain and number is synthetic: domains end in `.example` and phone numbers are 555-01xx test numbers. These rules are the household's; where `neighbour-advice.txt` disagrees, the rules win. Rules: - Claimed sender: a message claims to be from the organisation or contact named in its sender_name; if sender_name is blank, from the one named in the body's first sentence (if any). An address or link belongs to an organisation when its domain is one of the organisation's domains or a subdomain of one (`pay.x.example` belongs to `x.example`; `x.example.pay-now.example` does not). - Scams: a message is a scam when it breaks any rule in rules.csv: R1 it claims to be from an organisation in my-accounts.json or a contact in contacts.csv but its sender is not one of their domains, phones or email addresses; R2 it claims to be from an organisation in my-accounts.json and contains a link that does not belong to that organisation; R3 it asks you to send, tell, reply with or enter a password, PIN or one-time code (a message that only gives you a code, or warns you never to share one, does not); R4 it asks you to pay with gift cards or crypto, or to transfer money to an account it gives; R5 it claims to be from an organisation in my-accounts.json and refers to an account, order or parcel reference that organisation doesn't have in my-accounts.json; R6 it claims to be from an organisation that is not in my-accounts.json and asks you to pay or to open a link. Every other message is genuine. - Scoring: missed scams and false alarms are scored separately, so marking everything a scam fails as surely as marking nothing. - Reasons: each scam's rule is the lowest-numbered rule it breaks. - Write `out/screening.json`: `{"verdicts": {"<message_id>": "scam" | "genuine", ...}, "scam_rule": {"<message_id>": "<rule_id>", ...}, "scams_by_rule": {"<rule_id>": <number of scams with that rule>, ...}}`. `verdicts` has one entry per message in inbox.json and `scam_rule` one entry per message you mark as a scam. - Roll-ups: Rules in rules.csv that no scam breaks are included at 0. ## 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.

Screen a synthetic household inbox of texts and emails against six written scam rules: wrong sender, a link outside the claimed organisation's domains, asking for a code or password, gift-card or transfer payments, unknown references, and unknown organisations asking for money. Look-alike domains and new-number messages sit next to genuine code texts, never-share warnings, FINAL REMINDER bills and gift-card balances. Missed scams and false alarms are scored separately. All domains are reserved .example names and all numbers are 555-01xx test numbers. 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: no_missed_scams no_false_alarms scam_rules scams_by_rule

Setup notes: Batch 40 case tn04-household-inbox-scam-screening (offline, synthetic inputs, seed 2272719838). Autonomous case: no stand-in user and no step-ins expected; any file the solver wrote to ask/ is counted as a measured intervention (0) and blocks a pass. Prompt = TASK.md verbatim. Hidden key kept outside the solver's work dir. Scored with the case's scorer (python3 score.py WORKDIR KEYDIR, absolute paths); pass = every check true and no ask/ files. Tools: Read/Write/Edit/Glob/Grep/Bash, web disabled. Single run, no retries. 1-min load average at scoring 0.21 (8 cores). Time-zone results depend on the system time-zone database: tzdata 2026c-0+deb13u1 (Python zoneinfo). Claude Code's own reported cost for claude-sonnet-5.5: $0.057783. Score: 4/4. Cost is an ESTIMATE: measured tokens x pricing.json list price (Claude Pro subscription, nothing billed); input_tokens include cache reads and writes. Single run.

Estimated cost List-price estimate; not actually billed.

Metrics

Estimated cost
$0.06
Wall time
16s
Human step-ins
0
Turns
3
Model usage
ModelInput tokOutput tokCost
AClaude Sonnet 5.5anthropic/claude-sonnet-5.5effort default (no --effort flag) · thinking on62,5151,415$0.06

Reproduce this run

  1. Use the use case prompt on the use case page.
  2. Same setup: Claude Sonnet 5.5 (anthropic/claude-sonnet-5.5, effort default (no --effort flag) · thinking on) via Claude Code 2.1.299 (headless -p), cloud.
  3. It counts as a success only if it meets every success criterion: no_missed_scams no_false_alarms scam_rules scams_by_rule
  4. Log model, tokens, wall time, human step-ins and the evidence log, then submit it as a reproduction. A different model? Submit a head-to-head rerun.

How runs are scored: Methodology.

Was this useful?

⇄ Rerun on another model

Automated checks

Trust 80% comes from these checks (how Trust % works).

Evidence log
[
 {
  "duration_api_ms": 14853,
  "stop_reason": "end_turn",
  "session_id": "[REDACTED]",
  "total_cost_usd": 0.05778269999999999,
  "usage": {
   "input_tokens": 6,
   "cache_creation_input_tokens": 9582,
   "cache_read_input_tokens": 52927,
   "output_tokens": 1415,
   "output_tokens_details": {
    "thinking_tokens": 229
   },
   "server_tool_use": {
    "web_search_requests": 0,
    "web_fetch_requests": 0
   },
   "service_tier": "standard",
   "cache_creation": {
    "ephemeral_1h_input_tokens": 9582,
    "ephemeral_5m_input_tokens": 0
   },
   "inference_geo": "global",
   "iterations": [
    {
     "input_tokens": 2,
     "output_tokens": 705,
     "cache_read_input_tokens": 21495,
     "cache_creation_input_tokens": 626,
     "cache_creation": {
      "ephemeral_5m_input_tokens": 0,
      "ephemeral_1h_input_tokens": 626
     },
     "type": "message"
    }
   ],
   "speed": "standard",
   "fallback_credit": null
  },
  "modelUsage": {
   "claude-sonnet-5-5": {
    "inputTokens": 6,
    "outputTokens": 1415,
    "cacheReadInputTokens": 52927,
    "cacheCreationInputTokens": 9582,
    "webSearchRequests": 0,
    "costUSD": 0.05778269999999999,
    "contextWindow": 1000000,
    "maxOutputTokens": 128000,
    "thinkingTokens": 229,
    "canonicalModel": "claude-sonnet-5-5",
    "provider": "firstParty",
    "costBasis": "list"
   }
  },
  "permission_denials": [],
  "terminal_reason": "completed",
  "fast_mode_state": "off",
  "fast_mode_disabled_reason": "sdk_opt_in_required",
  "subagent_stats": {
   "spawned": 0,
   "requested": {
    "background": 0,
    "foreground": 0,
    "unset": 0
   },
   "started_in_background": 0,
   "max_depth": 0,
   "spawned_by_subagents": 0,
   "completed": 0,
   "failed": 0,
   "killed": {
    "parent": 0,
    "user": 0,
    "system": 0
   },
   "refused": {
    "depth_limit": 0,
    "concurrency_limit": 0,
    "budget": 0
   },
   "by_type": {}
  },
  "safety_stops": 0,
  "is_error": false,
  "num_turns": 3,
  "subtype": "success",
  "api_error_status": null,
  "result": "I screened all 14 messages and wrote the result to `out/screening.json`. Six are scams and eight are genuine.\n\n| Message | Rule | Why |\n|---|---|---|\n| MSG-105 | R6 | Tollway Recovery Office isn't one of your organisations, and it asks you to pay and open a link. |\n| MSG-111 | R4 | The message from Priya asks you to buy gift cards and send photos of them. |\n| MSG-113 | R5 | The Harborline email refers to account HA-90844, which isn't in your accounts. |\n| MSG-125 | R2 | The Cedarway email has a link on `cedarway.example.account-restore.example`, which isn't a Cedarway domain. |\n| MSG-135 | R2 | The Northfield text comes from Northfield's own number, but its link is on `northfield-power-refunds.example`, which isn't a Northfield domain. |\n| MSG-138 | R1 | The text claims to be Harborline but comes from 555-0121, not Harborline's 555-0136. |\n\nThe roll-up counts are R1: 1, R2: 2, R3: 0, R4: 1, R5: 1 and R6: 1.\n\nFour judgement calls that could be questioned:\n- **MSG-111 (R4):** Priya's address matches your contacts, so R1 doesn't apply. I marked it a scam anyway because a gift-card request breaks R4 regardless of who sends it.\n- **MSG-117 (genuine):** It only gives you a one-time code and says Harborline will never ask for it, so R3 doesn't apply.\n- **MSG-121 (genuine):** Riverside Dental Practice isn't in your accounts, but the message only asks you to reply C to cancel. It doesn't ask for payment or a link, so R6 doesn't apply.\n- **MSG-108 (genuine):** Elena's email has a link on `share.picturebox.example`. R2 only covers organisations in your accounts, not contacts, so it doesn't apply.\n\nI followed your rules rather than `neighbour-advice.txt`, which would have wrongly flagged messages that mention a code.",
  "ttft_ms": 2956,
  "type": "result",
  "duration_ms": 15161,
  "uuid": "[REDACTED]",
  "ttft_stream_ms": 1915,
  "time_to_request_ms": 191,
  "first_content_frame_ms": 1915,
  "queued_turn_count": 0,
  "result_index": 0
 }
]

Get new runs and ranking changes weekly