Structured Distillation of Web Agent Capabilities Enables Generalization
Organizations: Mila – Quebec AI Institute McGill University
Abstract
Frontier LLMs can navigate complex websites, but their cost and reliance on third-party APIs make local deployment impractical. We introduce Agent-as-Annotators, a framework that structures synthetic trajectory generation for web agents by analogy to human annotation roles, replacing the Task Designer, Annotator, and Supervisor with modular LLM components. Using Gemini 3 Pro as teacher, we generate 3,000 trajectories across six web environments and fine-tune a 9B-parameter student with pure supervised learning on the 2,322 that pass quality filtering. The resulting model achieves 41.5% on WebArena, surpassing closed-source models such as Claude 3.5 Sonnet (36.0%) and GPT-4o (31.5%) under the same evaluation protocol, and nearly doubling the previous best open-weight result (Go-Browse, 21.7%). Capabilities transfer to unseen environments, with an 18.2 percentage point gain on WorkArena L1 (an enterprise platform never seen during training) and consistent improvements across three additional benchmarks. Ablations confirm that each pipeline component contributes meaningfully, with Judge filtering, evaluation hints, and reasoning traces each accounting for measurable gains. These results demonstrate that structured trajectory synthesis from a single frontier teacher is sufficient to produce competitive, locally deployable web agents. Project page: https://agent-as-annotators.github.io
Figures & tables
| Model | WA | VWA | WoA L1 | W++ L2 | WoB |
|---|---|---|---|---|---|
| Proprietary | |||||
| Gemini 3 Pro ∗ | 51.2 | 49.0 | 79.7 | 41.6 | 74.7 |
| Gemini 3.1 Flash L. | 42.3 | 35.0 | 58.5 | 21.1 | 74.1 |
| Open-weight (base) | |||||
| Qwen3.5-27B | 41.5 | 37.4 | 57.0 | 18.9 | 70.9 |
| Qwen3.5-9B | 31.0 | 28.5 | 33.3 | 2.2 | 63.2 |
| Pipeline | Persona | Expl. | Task | Hints | Agent | Judge | Env. |
|---|---|---|---|---|---|---|---|
| NNetNav | Static DB | ✓ | Retro. | – | – | LLM | WA+Web |
| InSTA | – | ✓ | Ground. | – | ✓ | LLM | Web |
| AgentTrek | – | – | Tutorial | – | ✓ | VLM | Web |
| Explorer | – | ✓ | Retro. | – | – | LLM | Web |
| Go-Browse | – | ✓ | Ground. | – | ✓ | VLM | WA |
| Agent-as-Annotators | ✓ | ✓ | Ground. | ✓ | ✓ | LLM | WA |
| Ablation | Trajs | SR (%) | |
| Full pipeline | 2,322 | 41.5 | – |
| 1,430 trajectories | 1,430 | 40.2 | 1.3 |
| 715 trajectories | 715 | 37.0 | 4.5 |
| No Judge filtering | 2,999 | 37.0 | 4.5 |
| No reasoning traces | 2,322 | 33.6 | 7.9 |
| With personas, with hints | 600 | 37.8 | – |
Appendix figures & tables22 assets
Supplementary material from the paper’s appendix.
Appendix
| Teacher | GitLab | Shopping | Shop Adm. | Wikipedia | Map | Examples | |
|---|---|---|---|---|---|---|---|
| Gemini 3 Pro | |||||||
| Pro (reduced thinking) | 69.0 | 70.6 | 80.8 | 80.8 | 85.4 | 78.0 | 16,353 |
| Pro | 66.0 | 64.2 | 68.8 | 78.2 | 78.8 | 74.4 | 15,351 |
| Gemini 3.1 Pro | |||||||
| 3.1 Pro (reduced thinking) | 58.4 | 67.6 | 61.4 | 63.8 | 51.0 | 45.4 | 14,859 |
| Gemini 3 Flash | |||||||
| Model | GitLab | Shopping | Shop Admin | Map | All | |
|---|---|---|---|---|---|---|
| Proprietary frontier models | ||||||
| Gemini 3.1 Pro | 79.2 | 57.4 | 43.3 | 55.1 | 42.2 | 53.8 |
| Gemini 3 Pro | 75.0 | 56.4 | 34.4 | 53.8 | 45.3 | 51.2 |
| Gemini 3.1 Flash Lite | 68.8 | 48.5 | 32.2 | 41.0 | 28.1 | 42.3 |
| Open-weight models (base) | ||||||
| Qwen3.5-27B | 56.2 | 44.6 | 35.6 | 46.2 | 28.1 | 41.5 |
| Model | Classifieds | Shopping | All | |
|---|---|---|---|---|
| Proprietary frontier models | ||||
| Gemini 3.1 Pro | 47.4 | 51.9 | 39.0 | 47.9 |
| Gemini 3 Pro | 51.7 | 49.8 | 44.0 | 49.0 |
| Gemini 3 Flash | 37.9 | 40.8 | 35.0 | 38.8 |
| Gemini 3.1 Flash Lite | 31.9 | 36.9 | 34.0 | 35.0 |
| Open-weight models (base) | ||||
| Model | Create | Filter | Sort | Order | Chart | Navigate | All |
|---|---|---|---|---|---|---|---|
| Proprietary frontier models | |||||||
| Gemini 3.1 Pro | 70.0 | 33.3 | 86.7 | 98.9 | 90.0 | 100 | 79.4 |
| Gemini 3 Pro | 72.0 | 35.0 | 88.3 | 100 | 82.5 | 100 | 79.7 |
| Gemini 3.1 Flash Lite | 52.0 | 31.7 | 10.0 | 94.4 | 70.0 | 96.7 | 58.5 |
| Open-weight models (base) | |||||||
| Qwen3.5-27B | 60.0 | 13.3 | 11.7 | 95.6 | 70.0 | 96.7 | 57.0 |
| Model | Dashboard | Filter | Navigate | Infeasible | Other | All |
|---|---|---|---|---|---|---|
| Proprietary frontier models | ||||||
| Gemini 3.1 Pro | 0.0 | 76.2 | 53.8 | 53.8 | 29.8 | 40.0 |
| Gemini 3 Pro | 0.0 | 81.0 | 53.8 | 50.0 | 40.0 | 41.6 |
| Gemini 3.1 Flash Lite | 0.0 | 69.0 | 30.8 | 11.5 | 6.4 | 21.1 |
| Open-weight models (base) | ||||||
| Qwen3.5-27B | 0.0 | 31.0 | 15.4 | 50.0 | 10.6 | 18.9 |
| Model | Click | Type | Drag | Wkfl | Widget | Compr. | Reason | All |
|---|---|---|---|---|---|---|---|---|
| Proprietary frontier models | ||||||||
| Gemini 3.1 Pro | 87.5 | 84.6 | 16.4 | 98.8 | 83.1 | 71.2 | 64.8 | 77.1 |
| Gemini 3 Pro | 83.8 | 83.2 | 16.4 | 91.8 | 81.7 | 70.9 | 63.5 | 74.7 |
| Gemini 3.1 Flash Lite | 85.0 | 79.7 | 7.3 | 95.3 | 79.7 | 73.1 | 64.8 | 74.1 |
| Open-weight models (base) | ||||||||
| Qwen3.5-9B | 80.0 | 61.0 | 1.8 | 77.6 | 55.9 | 61.5 | 65.9 | 63.2 |
| Model | Params | WA | VWA | L1 | L2 | WoB |
|---|---|---|---|---|---|---|
| BrowserGym ecosystem (same harness) | ||||||
| Claude 3.5 Sonnet | – | 36.0 | 22.0 | 56.4 | 38.8 † | 69.8 |
| o1-mini | – | 29.9 | – | 56.7 | 14.3 † | 67.8 |
| GPT-4o | – | 31.5 | 26.3 | 45.5 | 7.5 † | 63.8 |
| Llama 3.1 405B | 405B | 22.6 | – | 43.3 | 8.9 † | 64.6 |
| Llama 3.1 70B | 70B | 17.1 | – | 27.9 | 3.4 † | 57.6 |
| Harness | Model | Params | WA | VWA | L1 | L2 | WoB |
|---|---|---|---|---|---|---|---|
| Proprietary SOTA (from official leaderboards) | |||||||
| Custom ‡ | OpAgent ( Guo et al., 2026 ) | – | 71.6 | – | – | – | – |
| Custom ‡ | SGV ( Andrade et al., 2025 ) | – | – | 54.0 | – | – | – |
| GenericAgent | GPT-5 ( de Chezelles et al., 2024 ) | – | – | – | 79.1 | 69.4 | 71.5 |
| GenericAgent | Claude 4 Sonnet ( de Chezelles et al., 2024 ) | – | – | – | 63.3 | 40.4 | 70.7 |
| Open-weight ( 10B, from leaderboards) | |||||||
| Training Data | Trajs | All | Rdt | Git | Shop | ShAdm | Map |
|---|---|---|---|---|---|---|---|
| Judge-filtered (A3-Qwen3.5-9B) | 2,322 | 41.5 | 60.0 | 53.3 | 34.1 | 44.9 | 26.4 |
| Unfiltered (no Judge) | 2,999 | 37.0 | 62.2 | 46.7 | 27.3 | 42.3 | 18.9 |
| (no Judge) | 4.5 | +2.2 | ( 6.6) | ( 6.8) | ( 2.6) | ( 7.5) | |
| Variant | Trajs | Steps | All | Rdt | Git | Shop | ShAdm | Map |
|---|---|---|---|---|---|---|---|---|
| 285-traj | 285 | 2,036 | 32.0 | 53.3 | 39.1 | 28.4 | 33.3 | 15.1 |
| 715-traj | 715 | 5,060 | 37.0 | 57.8 | 46.7 | 27.3 | 42.3 | 22.6 |
| 1430-traj | 1,430 | 9,999 | 40.2 | 62.2 | 46.7 | 35.2 | 46.2 | 20.8 |
| Full (A3-Qwen3.5-9B) | 2,322 | 16,353 | 41.5 | 60.0 | 53.3 | 35.2 | 46.2 | 26.4 |
| Training Data | Tasks | All | Rdt | Git | Shop | ShAdm | Map |
|---|---|---|---|---|---|---|---|
| Full pipeline (A3-Qwen3.5-9B) | 2,322 | 41.5 | 60.0 | 53.3 | 34.1 | 44.9 | 26.4 |
| With hints (subsampled) | 600 | 37.8 | 60.0 | 44.6 | 30.7 | 41.0 | 24.5 |
| No hints | 600 | 35.4 | 57.8 | 39.1 | 35.2 | 34.6 | 22.6 |
| (hints contribution) | 2.4 | ( 2.2) | ( 5.5) | +4.5 | ( 6.4) | ( 1.9) | |
| (vs. full pipeline) | 6.1 | ( 2.2) | ( 14.2) | +1.1 | ( 10.3) | ( 3.8) | |
| Model | SR (%) | Tasks Completed | Total Tasks |
|---|---|---|---|
| Gemini 3.1 Pro (reduced thinking) | 93.1 | 1,396 | 1,500 |
| Gemini 3 Flash | 88.3 | 1,325 | 1,500 |
| Gemini 3 Pro | 87.3 | 1,310 | 1,500 |
| Qwen3-VL-32B-Thinking | 74.7 | 1,121 | 1,500 |
| Qwen3-VL-8B-Thinking | 70.4 | 1,056 | 1,500 |
| A3 Module | InSTA | NNetNav | Explorer | Go-Browse |
|---|---|---|---|---|
| Persona Gen. | – | Persona DB | – | – |
| Exploration | Agent | LLM Explorer | Task Proposer | NavExplorer |
| Task Gen. | Task Proposer | Task Labeler | Refiner + Summ. | PageExplorer |
| Hints | – | – | – | – |
| Agent | Agent | – | – | Feas.Check + Solvers |
| Judge | LLM Judge | ORM | Task Verifier | VLM-as-judge |
| Hyperparameter | Value |
|---|---|
| Base model | Qwen/Qwen3.5-9B |
| Training data | Pro (reduced thinking) (16,353 examples) |
| Learning rate | |
| LR schedule | Cosine with warmup |
| Warmup ratio | 0.03 |
| Weight decay | 0.0 |
| Benchmark | Tasks | Steps | Domain | Relation to Training |
|---|---|---|---|---|
| WebArena | 812 | 30 | Self-hosted web apps | In-domain (same env) |
| VisualWebArena | 910 † | 30 | Visual web tasks | OOD (different tasks) |
| WorkArena L1 | 330 | 15 | ServiceNow (basic) | OOD (different env) |
| WorkArena++ L2 | 185 | 50 | ServiceNow (complex) | OOD (different env) |
| MiniWoB | 625 | 15 | Synthetic micro-tasks | OOD (different env) |