Back to Basics: A Skill-Centric Approach to Generalist Web Agents
Organizations: University of Utah · Islamic University of Technology
Abstract
Browser agents do not just need more practice. They need to practice the right things. We introduce MiniWeb, a realistic miniature of the web comprising 65 interconnected websites across 15 domains, where agents navigate, search, and transact as people do. Its 369 human-annotated tasks cover everyday workflows and label 37 reusable interaction primitives grouped into 7 skill families, allowing us to diagnose which skills fail rather than only whether a task succeeds. Benchmarking ten open-weight agents, we find that drag & gesture is consistently the weakest family, with no agent solving more than 24% of its instances. To address this gap, we introduce MiniWebGen, a framework that autonomously generates verified, skill-centric training data from MiniWeb. Fine-tuning Qwen3.5-4B on just 3.1K verified trajectories improves single-primitive success by 24.9pp across 13 unseen websites, with gains across every skill family. However, these trajectories teach short-horizon interactions, which do not directly translate to full-task success. We build on this result with MiniWebAgent, which pairs the trained executor with a planner that decomposes full tasks into the skill-level steps it learned to perform. This approach improves task success by 19.4pp points on unseen MiniWeb sites and transfers to external benchmarks, with gains of 9.3pp on WebArena-Lite, 16.1pp on Online-Mind2Web, and 20.0pp on WebVoyager, without training on their trajectories. We provide a simple recipe for compact browser agents: practice reusable skills directly, then compose them to solve unfamiliar tasks.
Figures & tables
| WebArena | WebVoyager | OM2W | MiniWeb | |
| Scale | ||||
| Tasks | 812 | 643 | 300 | 369 |
| Websites | 5 | 15 | 136 | 65 |
| Hosting | Local | Live | Live | Local |
| Skill-level evaluation | ||||
| Skill-labeled steps | ✗ | ✗ | ✗ | ✓ |
| Task | Skill family: instances passed | Reasoning operation | |||||||||||
| Agent | Size | success | Nav. Ag | Text Ag | Select Ag | Form Ag | I/O Ag | Drag Ag | Reason Ag | read | verify | extremum | count |
| General VLMs, browser-use harness | |||||||||||||
| Qwen3.5-4B | 4B | 40.1 (2.5) | 55 (6) | 39 (4) | 42 (4) | 37 (4) | 32 (6) | 12 (8) | 60 (4) | 56 (5) | 43 (11) | 37 (7) | 31 (8) |
| Qwen3.5-9B | 9B | 54.7 (2.5) | 71 (5) | 55 (4) | 60 (4) | 62 (4) | 61 (6) | 24 (10) | 60 (4) | 65 (5) | 71 (10) | 46 (8) | 44 (8) |
| Qwen3-VL-8B | 8B | 43.8 (2.6) | 63 (6) | 43 (4) | 42 (4) | 53 (4) | 50 (7) | 12 (8) | 52 (5) | 53 (5) | 62 (10) | 41 (8) | 43 (9) |
| InternVL3.5-8B | 8B | 39.0 (2.5) | 61 (6) | 44 (4) | 41 (4) | 42 (4) | 32 (6) | 24 (10) | 45 (5) | 46 (5) | 48 (11) | 32 (7) | 33 (8) |
| MiniWeb | WA-Lite | WV | OM2W | |
| tasks | 62 | 154 | 536 | 280 |
| Single agent, trained on | ||||
| nothing | 38.7 (5.5) | 27.1 (3.0) | 45.5 (2.2) | 17.9 (2.2) |
| our data | 39.2 (5.7) | 20.3 (3.0) | 32.8 (2.0) | 8.6 (1.6) |
| Planner, executor trained on | ||||
| nothing | 45.2 (5.9) | 30.7 (3.3) | 59.9 (2.2) | 21.8 (2.4) |
Appendix figures & tables17 assets
Supplementary material from the paper’s appendix.
Appendix
| Benchmark | Tasks | Labels | Labels per task | Candidates used | Only in this benchmark |
|---|---|---|---|---|---|
| WebArena | 812 | 1,813 | 2.23 | 99 | 5 |
| WebShop | 12,251 | 42,859 | 3.50 | 36 | 0 |
| WebVoyager | 643 | 1,865 | 2.90 | 85 | 4 |
| Mind2Web | 2,021 | 5,670 | 2.81 | 124 | 13 |
| All | 15,727 | 52,207 | 3.32 | 136 | 22 |
| Verb | Labels (%) | Without WebShop (%) | Candidates | Most frequent candidate |
|---|---|---|---|---|
| select | 31.3 | 9.4 | 27 | select_to_purchase |
| search | 26.4 | 16.5 | 5 | search_by_keyword |
| filter | 17.1 | 27.8 | 20 | filter_by_attribute |
| add | 14.6 | 3.1 | 8 | add_to_cart |
| submit | 4.4 | 8.4 | 23 | submit_to_purchase |
| extract | 3.0 | 16.9 | 14 | extract_by_question_answer |
| Operation | Definition | Check | Instances |
|---|---|---|---|
| read | the info is present on the page — locate and read it | answer appears verbatim on a visited page | 100 |
| extremum | get the max/min among on-page items without using a sort control | chosen item is the argmax/argmin of the candidate set | 41 |
| count | count the on-page items that match a condition | count matches the true number of matching items | 36 |
| verify | compare a value on the page against a value given in the instruction | the on-page value satisfies the instruction’s stated value/condition | 21 |
| Primitive | Description | Tasks | Sites | Gen. |
|---|---|---|---|---|
| Drag & gesture | ||||
| filter_by_slider | Narrow results with a range slider. Span: first drag filter applied | 11 | 9 | 74 |
| sign_by_freeformdrawing | Sign a document by DRAWING your signature freeform on a canvas (“Sign here” field). Span: start drawing in the signature field signature adopted/submitted | 6 | 4 | 100 |
| Discrete selection | ||||
| toggle_relationship | Locate a user/post/item, then toggle a relationship (follow / subscribe / save / join-group / block). Span: locate the target toggle clicked | 46 | 28 | 97 |
| filter_by_dropdown | Narrow results by selecting a dropdown value (incl. category search). Span: open the dropdown option selected / results update | 41 | 28 | 97 |
| Site | Source | Stated license |
|---|---|---|
| academic-paper-db | arXiv metadata | CC0 1.0 |
| flights-hotels | US airline routes and fares 1993–2024 (Kaggle; US DOT data); TBO hotels (Kaggle) | Apache 2.0; MIT |
| health-fitness-tracking | USDA FoodData Central; Fitbit data (Furberg et al., Zenodo) | CC0 1.0; CC BY 4.0 |
| job-sites | Job Description Dataset (Kaggle; synthetic postings) | CC0: public domain |
| wikis | English Wikipedia | CC BY-SA 4.0 |
| news | Wikinews | CC BY 2.5 / 4.0 |
| Agent | Episodes | Agree (%) | Cohen’s | Judge only | Verifiers only |
|---|---|---|---|---|---|
| Qwen3.5-4B | 369 | 92.4 | 0.84 | 21 | 7 |
| Qwen3.5-9B | 369 | 90.5 | 0.81 | 30 | 5 |
| Qwen3-VL-8B | 368 | 92.4 | 0.84 | 23 | 5 |
| InternVL3.5-8B | 369 | 90.8 | 0.80 | 24 | 10 |
| Fara1.5-4B | 369 | 91.1 | 0.82 | 29 | 4 |
| Fara-7B | 369 | 93.2 | 0.83 | 15 | 10 |
| Graders’ verdicts | Episodes | Audited | Judge right | Verifiers right |
| Both pass | 1,235 | 30 | 30/30 | 30/30 |
| Both fail | 2,256 | 30 | 27/30 | 27/30 |
| Judge only | 187 | 36 | 34/36 | 2/36 |
| Verifiers only | 81 | 24 | 7/24 | 19/24 |
| Weighted accuracy (%) | 3,759 | 120 | 92.2 | 88.9 |
| Cohen’s with the human | 0.84 | 0.77 |
| Actor | Observation | Actions |
|---|---|---|
| Human annotator (recorder) | The live page. Saved per action: URL, title, HTML snapshot, accessibility tree, scroll position, screenshot; every HTTP request with its body, status, and response; the server’s request log. | Recorded: click , type (debounced), select , check , change , keypress (Enter, Escape, Tab), scroll , drag (from, to), clipboard_write , navigate , submit . |
| MiniWebGen executor (script) | Privileged, read-only DOM queries: dom.find / one (by CSS, text, or tag), refresh , focused , url , title , outline , viewport . | Pixel actions on visible elements: act.click , double_click , hover , type , press , scroll , scroll_into_view , drag , draw , upload , open_url , switch_tab ; and expect.backend() to assert the expected backend evidence. |
| Agent and executor (browser-use 0.13.3) | Screenshot; indexed list of interactive elements; URL, open tabs, scroll position; step counter and budget; memory of previous steps. | One per step: click (element index or 0–1000 coordinates), input , select_dropdown , dropdown_options , send_keys , scroll , find_text , navigate , go_back , switch , close , wait , screenshot , drag ∗ , draw ∗ , macro_done ∗ , done . |
| MiniWebAgent planner | The same state as the agent. | delegate (family group, one-step instruction), scroll , done . |
| Website | Tasks | Episodes ending at a gate |
|---|---|---|
| google.com/shopping | 4 | 8 of 8 |
| drugs.com | 8 | 9 of 16 |
| target.com | 2 | 3 of 4 |
| boardgamegeek.com | 1 | 2 of 2 |
| cvs.com | 1 | 2 of 2 |
| kaggle.com | 1 | 2 of 2 |
| Stage | Hardware | Time | API cost |
|---|---|---|---|
| Trajectory generation ( MiniWebGen ) | API calls | – | $0.04 per kept trajectory |
| Executor training, 27.6K steps | 4 A800 | 5.6 h (22 GPU-h) | – |
| MiniWeb held-out run (62 tasks), verifiers | 1 GPU | 1 h | – |
| Skill profile of one agent (369 tasks), VLM judge | 1 GPU | 5 h | $0.045 per episode |
| WebArena-Lite run (154 tasks) | RTX 5090, 4 site instances | 3 h | $1 |
| WebVoyager run (536 tasks, 100 steps) | 24 or 40 GB GPUs | 10–15 GPU-h | $26 (GPT-4o judge) |
| Single | Held-out | WebArena- | Web- | Online- | |
| Qwen3.5-4B configuration | primitives | tasks | Lite | Voyager | Mind2Web |
| Single agent, untrained | 55.3 1.0 | 38.7 2.5 | 27.1 0.6 | 45.5 | 17.9 |
| Single agent, trained | 80.3 0.3 | 39.2 1.1 | 20.3 1.3 | 32.8 | 8.6 |
| Planner, untrained executor | 54.0 0.6 | 45.2 3.4 | 30.7 1.4 | 59.9 | 21.8 |
| MiniWebAgent (planner + trained executor) | 71.5 1.3 | 58.1 0.9 | 36.4 1.4 | 65.5 | 33.9 |
| Planner + task-centric executor (27.6K steps) | – | 47.8 2.8 | 34.2 1.5 | 62.1 | 23.2 |
| Question | Benchmark | A B | Holm | |||
|---|---|---|---|---|---|---|
| Practice alone (single agent) | Single primitives | 55.3 | 80.3 | |||
| Held-out tasks | 38.7 | 39.2 | 1.00 | 1.00 | ||
| WebArena-Lite | 27.1 | 20.3 | 0.023 | 0.047 | ||
| WebVoyager | 45.5 | 32.8 | ||||
| Online-Mind2Web | 17.9 | 8.6 | ||||
| Planning alone (untrained executor) | Held-out tasks | 38.7 | 45.2 | 0.13 | 0.40 | |
| Site | Tasks | Single, untr. | Single, trained | Planner, untr. | MiniWebAgent | Task-c. exec. |
|---|---|---|---|---|---|---|
| GitLab | 30 | 30.0 | 23.3 | 21.1 | 35.6 | 28.9 |
| 19 | 22.8 | 24.6 | 43.9 | 40.4 | 36.8 | |
| Shopping | 44 | 35.6 | 25.8 | 38.6 | 46.2 | 44.7 |
| Shopping admin | 35 | 24.8 | 13.3 | 30.5 | 34.3 | 31.4 |
| Map | 26 | 15.4 | 14.1 | 19.2 | 20.5 | 24.4 |
| Without Reddit, GitLab | 105 | 27.0 | 18.7 | 31.1 | 35.9 | 35.2 |
| Model calls per episode (mean) | Held-out | WebArena-Lite | WebVoyager | Online-Mind2Web |
|---|---|---|---|---|
| Single agent, untrained | 21.3 | 29.1 | 57.5 | 73.1 |
| Single agent, trained | 13.8 | 16.4 | 15.8 | 36.8 |
| Planner, untrained executor | 41.1 | 57.9 | 95.0 | 125.6 |
| MiniWebAgent | 36.0 | 57.6 | 79.2 | 108.2 |
Web Agents
Web agents use language and vision models to navigate websites, gather information, and complete tasks through interactive interfaces.
See all 174 papers