Claude Sonnet 5.5 (effort default (no --effort flag) · thinking on) on Extract 8 fields from 24 invoices in 4 formats (EU numbers, credit notes, MM/DD dates)
AClaude Sonnet 5.5default · thinking on · Claude Code 2.1.299 (headless -p) · cloud · 2026-10-16 · by @bobsiopener
- Estimated cost
- $0.08
- Wall time
- 20s
- Human step-ins
- 0
- Outcome
- Pass
Compare with other models on this task →
Summary
Exact prompt
# Task: extract structured data from mixed-format invoices `invoices/` has 24 files (txt, html, eml, kv). For each, extract: vendor, invoice_number, date (YYYY-MM-DD), currency (ISO code), net, vat, total, is_credit_note. Rules: credit notes have NEGATIVE net/vat/total. European number formats (1.234,56) must be parsed correctly. Ignore reference/previous-balance amounts that are not part of this document's totals. If a currency symbol is used, map € EUR, £ GBP, $ USD. Write `extracted.json`: {"inv01": {...}, ..., "inv24": {...}} (key = filename stem). No network.
Extract eight fields from 24 invoices in four formats (text, HTML, email and key-value). Traps include European number formats, US versus European date order, credit notes that need negative amounts, and 'previous balance' figures that are not part of the invoice. The bar is near-perfect field accuracy. 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: 1. 24 invoices × 8 fields compared to the key: numeric fields within 0.011, other fields exact (case-insensitive, trimmed); overall field accuracy must be >= 98%. 2. Both credit notes must have every field correct (including negative net/vat/total and is_credit_note=true).
Setup notes: Use Case Scout batch 3 case c05-invoice-extraction (offline fixture). Prepared with batch3/prepare.sh; hidden key/tests kept outside the agent's work dir. Prompt = TASK.md verbatim. Scored with the scout's scorer: `python score.py WORKDIR/extracted.json KEYDIR/key.json`. Tools: Read/Write/Edit/Glob/Grep/Bash, web disabled. Single run, no retries. Claude Code's own reported cost for claude-sonnet-5.5: $0.080389. Score: 1/1 checks. 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.08
- Wall time
- 20s
- Human step-ins
- 0
- Turns
- 5
| Model | Input tok | Output tok | Cost |
|---|---|---|---|
| AClaude Sonnet 5.5anthropic/claude-sonnet-5.5effort default (no --effort flag) · thinking on | 108,188 | 2,359 | $0.08 |
Reproduce this run
- Use the use case prompt on the use case page.
- 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. - It counts as a success only if it meets every success criterion: 1. 24 invoices × 8 fields compared to the key: numeric fields within 0.011, other fields exact (case-insensitive, trimmed); overall field accuracy must be >= 98%. 2. Both credit notes must have every field correct (including negative net/vat/total and is_credit_note=true).
- 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?
Automated checks
Trust 80% comes from these checks (how Trust % works).
- Run date is not in the future : passed
- Model is in the dated pricing table : passed
- Cost recomputed from tokens matches : passed
- Cached tokens are consistent : passed
- Output throughput is plausible : passed
- Autonomy matches step-ins : passed
- Step-ins do not exceed turns : passed
- Retries agree with first-try result : passed
- Evidence log SHA-256 matches : passed
- Evidence log is substantial : passed
Evidence log
[
{
"duration_api_ms": 19465,
"stop_reason": "end_turn",
"session_id": "[REDACTED]",
"total_cost_usd": 0.0803893,
"usage": {
"input_tokens": 10,
"cache_creation_input_tokens": 11785,
"cache_read_input_tokens": 96393,
"output_tokens": 2359,
"output_tokens_details": {
"thinking_tokens": 175
},
"server_tool_use": {
"web_search_requests": 0,
"web_fetch_requests": 0
},
"service_tier": "standard",
"cache_creation": {
"ephemeral_1h_input_tokens": 11785,
"ephemeral_5m_input_tokens": 0
},
"inference_geo": "global",
"iterations": [
{
"input_tokens": 2,
"output_tokens": 429,
"cache_read_input_tokens": 23891,
"cache_creation_input_tokens": 433,
"cache_creation": {
"ephemeral_5m_input_tokens": 0,
"ephemeral_1h_input_tokens": 433
},
"type": "message"
}
],
"speed": "standard",
"fallback_credit": null
},
"modelUsage": {
"claude-sonnet-5-5": {
"inputTokens": 10,
"outputTokens": 2359,
"cacheReadInputTokens": 96393,
"cacheCreationInputTokens": 11785,
"webSearchRequests": 0,
"costUSD": 0.0803893,
"contextWindow": 1000000,
"maxOutputTokens": 128000,
"thinkingTokens": 175,
"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": 5,
"subtype": "success",
"api_error_status": null,
"result": "I wrote `extracted.json` in the working directory with all 24 invoices, keyed `inv01` to `inv24`. For every invoice that isn't a credit note, net plus VAT equals total. Credit notes weren't checked this way. I haven't checked the output against the source files by hand.\n\n- **Credit notes:** `inv07` and `inv19` are the only two (the `.kv` files marked `CREDIT NOTE`). Their net, VAT and total are negative. The VAT on both is zero, so it shows as `-0.0` in the JSON.\n- **Date formats:** The `.html` files use MM/DD/YYYY, as they state. The `.txt` files use DD.MM.YYYY. The files don't say so, but dates like `18.07.2026` and `24.08.2026` can only be day-first.\n- **European number formats:** Amounts like `1.277,81` are parsed as 1277.81.\n- **Ignored amounts:** The \"previous balance\" figures in the `.txt` files are left out.\n- **Currencies:** `\u20ac`, `\u00a3` and `$` map to EUR, GBP and USD.\n- **Vendors for `.eml` files:** The vendor name comes from the \"Thanks, \u2026\" sign-off line.\n\nI ran the extraction with a script at `/tmp/s/x.py`.",
"ttft_ms": 2642,
"type": "result",
"duration_ms": 19927,
"uuid": "[REDACTED]",
"ttft_stream_ms": 1659,
"time_to_request_ms": 215,
"first_content_frame_ms": 1660,
"queued_turn_count": 0,
"result_index": 0
}
]