Claude Sonnet 5.5 (effort default (no --effort flag) · thinking on) on Cut a batch of job postings down to the real roles that fit your resume and flag the ones that offer work-permit sponsorship
AClaude Sonnet 5.5default · thinking on · Claude Code 2.1.299 (headless -p) · cloud · 2026-10-26 · by @bobsiopener
- Estimated cost
- $0.05
- Wall time
- 13s
- Human step-ins
- 0
- Outcome
- Pass
Compare with other models on this task →
Summary
Exact prompt
# Cut a batch of job postings down to the real roles that fit your resume and flag the ones that offer work-permit sponsorship All postings and employers are synthetic (employers are neutral codes). Inputs: `resume.json` (role_families, seniority_min, seniority_max, locations), `period.json` (as_of date) and `postings.csv` (posting_id, employer, title, role_family, seniority, location, posted_on, description). Seniority runs junior < mid < senior < staff. `recruiter-notes.txt` is a recruiter's checklist; where it disagrees with the rules below, the rules win. Rules: - Duplicates: postings with the same employer, the same title after lower-casing and collapsing runs of spaces, and the same location are one role. Keep the copy with the earliest `posted_on` (ties: the lowest posting_id); every other copy is a duplicate. Same title at a different location is a different role. - Stale: a kept posting is stale when `as_of` minus `posted_on` is more than 30 days. Exactly 30 days is not stale. - Fit: a kept, non-stale posting fits when its role_family is in the resume's role_families, its seniority is between seniority_min and seniority_max inclusive, and its location is one of the resume's locations. These are the real roles. - Sponsorship: a real role offers work-permit sponsorship only when its description has a line that is exactly `Sponsorship: available` (letter case aside). `Sponsorship: not available` and `Sponsorship: none` mean no. - Write `out/shortlist.json`: `{"real_roles": [<sorted posting_ids>], "duplicates_dropped": [<sorted posting_ids>], "stale_dropped": [<sorted posting_ids of kept postings that are stale>], "sponsor_roles": [<sorted posting_ids>], "roles_by_employer": {"<employer>": <number of real roles>, ...}}`. - Roll-ups: Employers in postings.csv with no real roles are left out. ## 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.
Take a synthetic batch of job postings from employers with neutral codes and cut it down to the real roles that fit a given resume. First merge reposts, which can differ in letter case and spacing, keeping the earliest copy. Then drop postings older than 30 days, and keep roles that match the resume's role families, seniority range and locations. Flag the roles whose description has a buried 'Sponsorship: available' line. Report the real roles, the dropped duplicates and stale postings, the sponsoring roles and real roles per employer; employers with no real roles are left out. A posting exactly 30 days old, the same title at another location and 'Sponsorship: not available' lines are decoys. The recruiter's checklist gets the repost, staleness and sponsorship rules wrong. Inspired by https://x.com/AbhijayArora/status/2114344232244883509 Headless, offline run on a reproducible fixture. Each run's notes say how its cost was measured (estimates are marked).
Success criteria: real_roles duplicates_dropped stale_dropped sponsor_roles roles_by_employer
Setup notes: Batch 43 case tv04-job-postings-shortlist-and-sponsorship-flags (offline, synthetic inputs, seed 298236314). 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 12.96 (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.046112. Score: 5/5. 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.05
- Wall time
- 13s
- Human step-ins
- 0
- Turns
- 3
| Model | Input tok | Output tok | Cost |
|---|---|---|---|
| AClaude Sonnet 5.5anthropic/claude-sonnet-5.5effort default (no --effort flag) · thinking on | 57,738 | 1,149 | $0.05 |
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: real_roles duplicates_dropped stale_dropped sponsor_roles roles_by_employer
- 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": 10745,
"stop_reason": "end_turn",
"session_id": "[REDACTED]",
"total_cost_usd": 0.046111799999999994,
"usage": {
"input_tokens": 6,
"cache_creation_input_tokens": 7394,
"cache_read_input_tokens": 50338,
"output_tokens": 1149,
"output_tokens_details": {
"thinking_tokens": 0
},
"server_tool_use": {
"web_search_requests": 0,
"web_fetch_requests": 0
},
"service_tier": "standard",
"cache_creation": {
"ephemeral_1h_input_tokens": 7394,
"ephemeral_5m_input_tokens": 0
},
"inference_geo": "global",
"iterations": [
{
"input_tokens": 2,
"output_tokens": 272,
"cache_read_input_tokens": 19141,
"cache_creation_input_tokens": 792,
"cache_creation": {
"ephemeral_5m_input_tokens": 0,
"ephemeral_1h_input_tokens": 792
},
"type": "message"
}
],
"speed": "standard",
"fallback_credit": null
},
"modelUsage": {
"claude-sonnet-5-5": {
"inputTokens": 6,
"outputTokens": 1149,
"cacheReadInputTokens": 50338,
"cacheCreationInputTokens": 7394,
"webSearchRequests": 0,
"costUSD": 0.046111799999999994,
"contextWindow": 1000000,
"maxOutputTokens": 128000,
"thinkingTokens": 0,
"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 wrote `out/shortlist.json`. It has 13 real roles, 2 duplicates dropped, 1 stale posting dropped and 6 roles that offer sponsorship. I didn't open the file or check any of the postings by hand after the script ran.\n\nI followed the task rules where `recruiter-notes.txt` disagrees with them:\n- **Duplicates:** I kept the earliest copy, not the newest repost.\n- **Stale:** I used the 30-day cutoff from the rules, measured from the `as_of` date in `period.json` (2026-07-22), not the 60-day window in the notes.\n- **Sponsorship:** a role counts only if a line reads exactly `Sponsorship: available`, ignoring letter case.\n- **Employers:** `roles_by_employer` leaves out employers with no real roles.",
"ttft_ms": 1650,
"type": "result",
"duration_ms": 11313,
"uuid": "[REDACTED]",
"ttft_stream_ms": 1157,
"time_to_request_ms": 305,
"first_content_frame_ms": 1157,
"queued_turn_count": 0,
"result_index": 0
}
]