RuleChef Live

Model calls turn into rules. A stream of 3,000 requests: sentences from European Court of Human Rights judgments (the public TAB anonymisation dataset), each asking for its dates and times, codes and reference numbers, and quantities. The current rule set tries each request first. If its gate says the rules cover the request, the rules answer and no model is called. Otherwise the teacher model, vela3-fast, answers, and its answer becomes a labelled example. After the first 50 examples and then every 100 new ones, RuleChef's search synthesis (no LLM) learns a new rule set from all of them on CPU.

The stream was run once offline with the code in this Space (sim.py); this page replays that run, so the rule sets and synthesis times are snapshots. The rules themselves run live in your browser, here and in the box at the bottom.

3,000
Share of requests answered by rules last 200 requests
Model calls cumulative
Latency per request mean of the last 200, ms

Rule set versions, scored on the holdout when deployed

Holdout: 400 sentences from other documents. Matching is RuleChef's TAB scorer (same text, same type). "Cascade" means rules where the gate lets them answer, teacher elsewhere. The last column compares with TAB's human annotation; the rules learn from the teacher, mistakes included.

Rules of the current version

Latest requests

    Try your own text

    The gate and the rules of the version at the slider position run in your browser. The teacher does not run on this static page: when the gate sends a request on, the page says so and shows what the rules found. For a holdout sentence it also shows the teacher's recorded answer.

    How the numbers are computed

    All numbers come from this demo's own run over public data; nothing is copied from a paper. The page aggregates the run's per-request log (data/replay.json) as you move the slider.

    Credits and licences