Small models vs. frontier models on web-agent tasks
A common task in financial services is signing in to banking, utility, insurance and subscription accounts to collect statements. This benchmark measures how well different models handle that task, and compares the accuracy and cost of frontier models with smaller models we built in-house. Frontier models are general-purpose and serve a far wider range of tasks. Our in-house models are narrowly focused and build on domain knowledge drawn from years of data in finance-adjacent markets.
At each step, the agent shows a model the page and a short list of options to achieve the final goal of downloading the statement. We replayed 384 of these frozen decisions to each of 6 models, using the same prompt, options and output limit for all of them, and recorded whether the choice was acceptable, how long the call took and what it cost.
2304 scored calls on public and signed-out pages, plus 2346 on logged in pages with Sophtron's own test accounts with real institutions. No customer data.
- An open 27B model was the most accurate of the six. Qwen3.8-27B with thinking got 95.6%, against 93.5% for Claude Opus 5.5, the best frontier model here. On its hosted provider it was also the slowest, at 21 s per call.
- Jev matched Opus on accuracy and Sophtron 9B came close. Jev got 93.8% and Sophtron 92.2%. Both answer in under two seconds.
- Sophtron running on one rented GPU costs 250× less than Opus per decision and answers 2.7× faster. That is $0.049 against $12.33 per 1,000 decisions, and 1.43 s against 3.82 s per call. Jev through OpenRouter costs 134× less than Opus ($0.092 per 1,000).
- Sophtron and Jev are 2–3× faster than the frontier models.
- On 391 logged in page decisions, Claude Opus 5.5 was the most accurate. Correct answers out of 391: Claude Opus 5.5 381, Qwen3.8-27B 375, GPT-5.6 Terra 375, Sophtron 9B 372, Jev 1.13 370, Claude Sonnet 5.5 297.
Accuracy against cost
Scores are over both public datasets (384 calls per model), scored strictly. "Format tolerated" also counts a correct choice written after an explanation; only Claude Sonnet 5.5 moves noticeably.
| Model | Where it ran | Correct | Format tolerated | Mean s | P95 s | Cost / 1,000 |
|---|---|---|---|---|---|---|
| Sophtron 9B | self-hosted, 1× L40S | 354/384 (92.2%) | same | 1.43 | 4.02 | $0.049 |
| Jev 1.13 | OpenRouter | 360/384 (93.8%) | same | 1.62 | 2.74 | $0.092 |
| Qwen3.8-27B | OpenRouter → DeepInfra, bf16, thinking on | 367/384 (95.6%) | same | 21.04 | 79.70 | $1.15 |
| GPT-5.6 Terra | OpenRouter, reasoning on | 335/384 (87.2%) | same | 2.67 | 4.53 | $1.67 |
| Claude Sonnet 5.5 | OpenRouter, reasoning on | 304/384 (79.2%) | 354 (92.2%) | 2.75 | 5.13 | $6.17 |
| Claude Opus 5.5 | OpenRouter, reasoning on | 359/384 (93.5%) | same | 3.82 | 6.44 | $12.33 |
Cost for OpenRouter models is the charge OpenRouter reported for each call. Cost for Sophtron is the on-demand price of an AWS g6e.xlarge (one NVIDIA L40S, us-west-2, $1.861 per hour) times the measured time of each call divided by estimated 15 concurrent jobs. See "How cost is counted" below.
Time per call
Time is measured from sending the request to receiving the complete answer. Hosted Qwen with thinking on is the outlier at 21 s.
Against each frontier model
Differences in correct answers are counted over the same 384 calls. Cost and time are ratios of the means above.
| Model | Against | Correct (strict) | Correct (tolerant) | Cost | Mean time |
|---|---|---|---|---|---|
| Sophtron 9B | GPT-5.6 Terra | +19 | +19 | 34× cheaper | 1.9× faster |
| Sophtron 9B | Claude Sonnet 5.5 | +50 | +0 | 125× cheaper | 1.9× faster |
| Sophtron 9B | Claude Opus 5.5 | -5 | -5 | 250× cheaper | 2.7× faster |
| Jev 1.13 | GPT-5.6 Terra | +25 | +25 | 18× cheaper | 1.6× faster |
| Jev 1.13 | Claude Sonnet 5.5 | +56 | +6 | 67× cheaper | 1.7× faster |
| Jev 1.13 | Claude Opus 5.5 | +1 | +1 | 134× cheaper | 2.4× faster |
| Qwen3.8-27B | GPT-5.6 Terra | +32 | +32 | 1.4× cheaper | 7.9× slower |
| Qwen3.8-27B | Claude Sonnet 5.5 | +63 | +13 | 5.3× cheaper | 7.7× slower |
| Qwen3.8-27B | Claude Opus 5.5 | +8 | +8 | 11× cheaper | 5.5× slower |
The task
Getting a statement from a website is a chain of small decisions: is this the right page, what to click next, which row or field holds the data, is the job done. Each recorded decision is a fixed question with a fixed list of options. Replaying the records lets us compare models on identical inputs without signing in to any site.
# illustrative example, not from the dataset
task: download the last 6 monthly statements
page: account overview (outline of headings, links, buttons)
question: which control should be used next?
[c1] link "Pay bill"
[c2] link "Statements & documents" <- acceptable
[c3] link "Profile"
the model must answer with one option id, e.g. {"choice": "c2"}A call counts as correct when the model returns an offered option that is in the accepted set. A reply that adds an explanation around the JSON counts as a format error under the strict score. Network failures count as wrong and are listed separately.
Results by dataset
Regression set: 70 cases from a code host, a utility and a retailer, three runs each
| Model | Correct | Format tolerated | Mean s | Median s | P95 s | Cost / 1,000 | Format errors | Network errors |
|---|---|---|---|---|---|---|---|---|
| Sophtron 9B | 183/204 | 183 | 1.19 | 1.00 | 2.38 | $0.041 | 0 | 0 |
| Jev 1.13 | 186/204 | 186 | 1.40 | 1.22 | 2.39 | $0.071 | 0 | 0 |
| Qwen3.8-27B | 194/204 | 194 | 19.95 | 9.04 | 70.07 | $1.08 | 0 | 0 |
| GPT-5.6 Terra | 165/204 | 165 | 2.71 | 2.33 | 4.36 | $0.936 | 0 | 0 |
| Claude Sonnet 5.5 | 160/204 | 186 | 2.73 | 2.35 | 4.64 | $4.62 | 36 | 0 |
| Claude Opus 5.5 | 185/204 | 185 | 3.77 | 3.38 | 6.14 | $9.23 | 0 | 0 |
Two cases accept every option. They were run but not scored, so each model has 204 scored calls of 210.
New institutions: 60 cases from 39 sites, three runs each
| Model | Correct | Format tolerated | Mean s | Median s | P95 s | Cost / 1,000 | Format errors | Network errors |
|---|---|---|---|---|---|---|---|---|
| Sophtron 9B | 171/180 | 171 | 1.71 | 1.37 | 4.02 | $0.059 | 0 | 0 |
| Jev 1.13 | 174/180 | 174 | 1.88 | 1.34 | 2.74 | $0.117 | 0 | 1 |
| Qwen3.8-27B | 173/180 | 173 | 22.28 | 10.07 | 79.70 | $1.24 | 1 | 0 |
| GPT-5.6 Terra | 170/180 | 170 | 2.63 | 2.33 | 4.53 | $2.50 | 0 | 0 |
| Claude Sonnet 5.5 | 144/180 | 168 | 2.77 | 2.35 | 5.13 | $7.93 | 24 | 0 |
| Claude Opus 5.5 | 174/180 | 174 | 3.88 | 3.31 | 6.44 | $15.86 | 0 | 1 |
Setup
- Same input for every model. The same system prompt, page state, question and options, and an output limit of 4,096 tokens including reasoning. Answer labels never enter a request.
- Frontier models (Claude Opus 5.5, Claude Sonnet 5.5, GPT-5.6 Terra) ran through OpenRouter with reasoning enabled at OpenRouter's default effort. No reply hit the output limit.
- Qwen3.8-27B ran through OpenRouter, pinned to DeepInfra at bf16 with thinking on, so every call used the same weights and precision.
- Jev 1.13 ran through OpenRouter's classification interface, which returns a choice without generating text.
- Sophtron 9B (Q8) ran on our own AWS g6e.xlarge with one L40S, one request at a time, through an SSH tunnel.
- Calls within a model were sequential. There were no retries and no best-of-n.
How cost is counted
OpenRouter models: the billed amount OpenRouter returned for each call.
Sophtron: $1.861 per hour divided by 3,600, times the measured seconds of that call, then divided by concurrent request count of 15. The assumption is one L40S with 48GB VRAM running the 9B model at Q8 (as benchmarked) with vLLM can handle 15 concurrent requests. During the benchmark, Sophtron's requests used 1,000–3,000 input tokens and 0–500 output tokens. Latency was measured one request at a time; with 15 concurrent requests per-call time would likely rise, so this cost is an estimate, not a measurement.
Logged in account decisions
We also hold 391 decisions recorded on logged in account pages. These are real accounts Sophtron owns for testing. They hold no customer data, but the pages still show real account details, so the outside models received only a redacted copy, which replaces names, account numbers, amounts, contact details and session tokens with consistent stand-ins and keeps the institution names. Before sending it we checked that redaction does not change the task: Sophtron chose the same option on 384 of 391 redacted cases as on the originals, with 372 and 371 correct. The redacted set ran once per model, and every OpenRouter request was restricted to providers that keep no data (Amazon Bedrock for Opus, Google for Sonnet, Azure for GPT, DeepInfra for Qwen, TypeSafe for Jev).
| Model | Correct | Format tolerated | Mean s | P95 s | Cost / 1,000 | Format errors | Network / cut off |
|---|---|---|---|---|---|---|---|
| Claude Opus 5.5 | 381/391 (97.4%) | 381 | 3.51 | 7.04 | $16.90 | 0 | 0 |
| Qwen3.8-27B | 375/391 (95.9%) | 375 | 55.30 | 197.36 | $1.36 | 0 | 0 |
| GPT-5.6 Terra | 375/391 (95.9%) | 375 | 3.56 | 5.68 | $6.60 | 0 | 0 |
| Sophtron 9B | 372/391 (95.1%) | 372 | 1.48 | 3.49 | $0.051 | 0 | 0 |
| Jev 1.13 | 370/391 (94.6%) | 370 | 1.62 | 2.72 | $0.133 | 0 | 0 |
| Claude Sonnet 5.5 | 297/391 (76.0%) | 381 | 2.87 | 4.98 | $8.62 | 87 | 0 |
These providers differ from the ones that served Claude and GPT on the public sets, so their times are not directly comparable across the two sections. Logged in account pages are longer than the public ones, which raises time and cost for every model.
All three sets together
The 775 decisions of all three sets together: 204 historical, 180 from new institutions and 391 redacted logged in account decisions. Every model answered all of them.
- Smaller models cost 1/130 to 1/290 of Opus. Jev costs 1/130 of Opus over all 775 decisions; Sophtron on one rented L40S costs 1/290.
- Smaller models take 1/2 to 1/3 of the time. Jev and Sophtron answer 2.3× and 2.5× faster than Opus on average.
- Accuracy is close, not equal. Over all sets our models are 1.3 and 1.8 points behind Opus. They tie it on the public sets; the gap is on logged in account pages.
- Hosted Qwen 27B is as accurate as Opus but slow, 38 s per call on average and up to 197 s at P95 on logged in account pages.
- Sonnet's gap is output format. 147 of its 775 replies put an explanation before the JSON; counting those, it scores 94.8%.
- The runs were clean. 2 network errors in 4,650 calls. Each case ran once, so differences of one or two points are within noise.
| Model | Correct | Format tolerated | Mean s | P95 s by set | Cost / 1,000 |
|---|---|---|---|---|---|
| Qwen3.8-27B | 742/775 (95.7%) | same | 38.33 | 70.1–197.4 | $1.26 |
| Claude Opus 5.5 | 740/775 (95.5%) | same | 3.66 | 6.1–7.0 | $14.64 |
| Jev 1.13 | 730/775 (94.2%) | same | 1.62 | 2.4–2.7 | $0.113 |
| Sophtron 9B | 726/775 (93.7%) | same | 1.45 | 2.4–4.0 | $0.05 |
| GPT-5.6 Terra | 710/775 (91.6%) | same | 3.12 | 4.4–5.7 | $4.16 |
| Claude Sonnet 5.5 | 601/775 (77.5%) | 735 (94.8%) | 2.81 | 4.6–5.1 | $7.41 |
Accuracy by set
| Model | Historical /204 | New institutions /180 | Logged in account page /391 |
|---|---|---|---|
| Qwen3.8-27B | 194 (95.1%) | 173 (96.1%) | 375 (95.9%) |
| Claude Opus 5.5 | 185 (90.7%) | 174 (96.7%) | 381 (97.4%) |
| Jev 1.13 | 186 (91.2%) | 174 (96.7%) | 370 (94.6%) |
| Sophtron 9B | 183 (89.7%) | 171 (95.0%) | 372 (95.1%) |
| GPT-5.6 Terra | 165 (80.9%) | 170 (94.4%) | 375 (95.9%) |
| Claude Sonnet 5.5 | 160 (78.4%) / 186 tolerant | 144 (80.0%) / 168 tolerant | 297 (76.0%) / 381 tolerant |
Our models against Opus
| Our model | Cost vs Opus | By set | Speed vs Opus | Accuracy vs Opus |
|---|---|---|---|---|
| Jev 1.13 | 1/130 | Historical 1/130 / New institutions 1/136 / Logged in account page 1/127 | 2.3× faster | -1.3 points |
| Sophtron 9B | 1/290 | Historical 1/225 / New institutions 1/270 / Logged in account page 1/330 | 2.5× faster | -1.8 points |
Bold marks the best score in each set. Cost over all sets is the mean over every call that reported a charge, so the longer, pricier logged in account pages weigh in by their share of calls.
What this does not show
- End-to-end success. These are single decisions on frozen pages. Signing in, navigation, waiting for pages and downloads are not part of the measurement.
- Ground truth. Accepted answers were labelled during development with help from an LLM assistant, not by independent blind human review.
- Every site. The 130 cases are a selected sample from 42 sites, not a random draw.
- The format rule. Claude Sonnet 5.5 often wrote a short explanation before its JSON (60 calls). Strict scoring gives it 79.2%; accepting those answers gives 92.2%. Both are shown.
Published October 2026. Every figure in this doc is computed from the saved run records.