Instructions to use sathiskumarjothi0/Beveridge-Pro-C-Web with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- PEFT
How to use sathiskumarjothi0/Beveridge-Pro-C-Web with PEFT:
Task type is invalid.
- Notebooks
- Google Colab
- Kaggle
Beveridge-Pro-C with web browsing added. A System One decision model with open weights that picks the next step of a browser agent: what to do (click, type, choose from a list, wait, done) and on which element, with a calibrated probability for every option. It answers in one scoring pass per question and never generates text, so the agent always gets one of the actions that are actually on the page.
It keeps everything Beveridge-Pro-C does on documents (Beveridge-Bench 92.1%, Beveridge-Pro-C 91.9%), so one model serves both.
This repository holds only Beveridge's decision adapter (about 46 MB). Gemma 4 26B-A4B is downloaded unchanged from Google's repository when you load the model. English, up to 4,096 input tokens; needs one GPU with about 60 GB of memory (bf16).
| Model | Size | Runs on | Best for | Status |
|---|---|---|---|---|
| Beveridge-Large-C | 0.4B (ModernBERT-large base) | laptop CPU/GPU, edge boxes, any GPU | operations documents, logs and alerts, ticket routing, request safety | available |
| Beveridge-Pro-C | 26B (Gemma 4 26B-A4B base) | one GPU with about 60 GB | knowledge-heavy decisions on documents | available |
| Beveridge-Pro-C-Web | 26B (Gemma 4 26B-A4B base) | one GPU with about 60 GB | next step of a browser agent, plus everything Beveridge-Pro-C does | available |
Browsing live
Recorded on one NVIDIA H200: the real screen after every action, and the step Beveridge-Pro-C-Web chose with its confidence
and decision time. Steps are held so they can be read. Taking each screenshot in the recording took a few seconds, so the
times in the results below come from the same runs without recording. Wikipedia's main page is blurred below the search box
because it changes every day. Note step 3 of the hotel search: Beveridge chose correctly but with confidence 0.67, below the
0.8 a strict agent would require; with bev.gate that step would go to a person.
Installation
python -m pip install "bev-decisions[pro]"
Python 3.10 or newer. The first bev.load() downloads the adapter from this repository and Gemma 4 from Google's (about
52 GB), and caches both; after that it works offline.
Quickstart: one browser step
Describe the page and the goal as the document; ask which operation comes next and which element it applies to.
import bev
model = bev.load(bev.WEB_MODEL) # "sathiskumarjothi0/Beveridge-Pro-C-Web"; needs bev-decisions 0.2.5 (older versions: pass the repo id)
page = {
"recent_actions": [],
"elements": ["[1] input: Destination (empty)", "[2] button: Find stays", "[3] checkbox: Free cancellation (not checked)"],
"page": {"url": "https://example-travel.test/", "title": "Find a stay", "text": "Where are you going? ... Find stays"},
}
goal = "goal: Find stays in Lisbon with free cancellation."
answers = model.decide(page, {
"operation": {"type": "choice", "instructions": goal + "\nrules: Pick the next single operation on the current page.",
"criteria": {"CLICK": "Click an element", "TYPE_TEXT": "Enter text in a field",
"WAIT": "Wait for the page to finish loading", "DONE": "Every requirement is visibly satisfied."}},
"type_text_target": {"type": "choice", "instructions": goal + "\noperation: TYPE_TEXT",
"criteria": {"1": "[1] Destination (empty)"}},
})
answers["operation"]["choice"], answers["operation"]["confidence"] # ("TYPE_TEXT", 0.99...)
Your agent then does the action. Beveridge picks the step and the element; the words to type (here "Lisbon") come from
the goal or from a small text model in your agent. bev.gate(answers, threshold=0.8) returns the unsure answers, so the
agent can stop and ask a person instead of guessing.
Results
Accuracy (%) = correct answers ÷ questions (or steps) on held-out tests. October 2026.
Web steps
| Test | Beveridge-Pro-C | Beveridge-Pro-C-Web |
|---|---|---|
| Next step on 500 web pages from site types never seen in training (cars, courses, events, libraries) | 49.4 | 98.2 |
| Next operation on the same 500 pages | 60.2 | 98.4 |
| 24 recorded steps of real browser runs: same operation as the reference agent | 22/24 | 24/24 |
By kind of step on the 500 held-out pages:
| Kind of step | Accuracy |
|---|---|
| type into the search field | 100.0 |
| pick the right autocomplete suggestion | 98.4 |
| press Search | 100.0 |
| apply the requested filters | 85.5 |
| wait while the page loads | 100.0 |
| open the requested result | 100.0 |
| stop when the goal is met | 100.0 |
Live browsing
The open-source browser loop jev-ultrafast (MIT) with Beveridge-Pro-C-Web choosing every step, on one NVIDIA H200; Llama 3.1 8B (local, temperature 0) writes the words typed into fields. Time = the agent's own clock from the first decision to DONE, including the browser work.
| Task | Beveridge-Pro-C | Beveridge-Pro-C-Web |
|---|---|---|
| Hotel search: Lisbon, Design, Free cancellation, open Casa Flora (local test page) | 0/3 | 3/3, median 1.86 s |
| Open the Wikipedia article about Gödel's incompleteness theorems (live site) | 3/3, median 4.9 s | 3/3, median 4.88 s |
About 0.2 s per decision on the hotel page and 0.7 s on Wikipedia, whose pages are longer.
Documents (no loss)
| Test | Beveridge-Pro-C | Beveridge-Pro-C-Web |
|---|---|---|
| Beveridge-Bench (operations documents, 5,700 questions) | 91.9 | 92.1 |
For every other document test, see the Beveridge-Pro-C card.
Honest limits
- Two live tasks are a small test. Before you let it act on real accounts, run it on your own sites and keep a person in the loop for anything that buys, sends, deletes or signs.
- Filters are the weakest kind of step (85.5%): check that the agent applied every filter the goal asks for.
- It reads the page as text and a list of elements; it does not see images or the page layout.
- It decides the step; it does not write text. Typed words come from the goal or from a text model you choose.
- Needs a large GPU. Beveridge-Large-C cannot navigate websites (16.8% on the held-out web steps).
- English only; text beyond 4,096 tokens is cut.
- Beveridge can make mistakes. For decisions with serious consequences, validate on your own data
(
bev eval my_cases.jsonl) and keep a person in the loop.
Files
| File | Contents |
|---|---|
adapter/ |
Beveridge's decision weights (LoRA adapter for Gemma 4 26B-A4B) |
config.json |
Beveridge settings, calibration temperatures and the name of the base model |
NOTICE |
Gemma attribution (Apache-2.0) |
assets/ |
the header, the logo and the browsing video |
Links
- Package: pypi.org/project/bev-decisions
- Code and examples: github.com/sathiskumarjothi0-oss/bev-decisions-pypi
- Beveridge-Pro-C: huggingface.co/sathiskumarjothi0/Beveridge-Pro-C
- Beveridge-Large-C: huggingface.co/sathiskumarjothi0/Beveridge-Large-C
Support
If Beveridge is useful to you, you can support its development: buymeacoffee.com/sjothi
Licence and credit
Apache-2.0, © 2026 Dr. Sathiskumar JOTHI. Built on Gemma 4 26B-A4B (Apache-2.0) by Google. Live tests use jev-ultrafast (MIT) by Browser Use and Llama 3.1 8B by Meta.
About the name
Beveridge is named after Sir William Beveridge (1879–1963), the British economist, born in British India and educated in England, whose 1942 Beveridge Report laid the foundations of the modern welfare state and of the National Health Service (NHS), built for the good of future generations. The name is a reminder of what we want from the model: dependable, fair decisions that serve people, made carefully and checked against the facts.
Other models on Hugging Face are called Bev; they are not related to this model. The Python package keeps its short
name: pip install bev-decisions, import bev.
- Downloads last month
- 19
Model tree for sathiskumarjothi0/Beveridge-Pro-C-Web
Evaluation results
- accuracy on Web steps on site types never seen in trainingself-reported0.982
- accuracy on Beveridge-Bench (operations documents)self-reported0.921