State-of-the-art VRP optimization with robust models for scheduling, frequency planning and workload balancing, behind one JSON contract.
Every line is a driven leg from the quarter that started 29 June 2026, drawn straight from stop to stop. One ink per region; line weight is frequency: weekly legs print heavy, four-weekly visits stay hairlines. 257,601 km of driving, planned by one POST.
| wk | mo tu we th fr | task | service | route | day load |
|---|---|---|---|---|---|
| 27 | ●··●· | Station cleaning, Amersfoort · 2×/wk | 35 min | N-2 · N-4 | |
| 27 | ●···· | Station cleaning, Nieuw-Vennep · weekly | 30 min | N-4 | |
| 27 | ●···· | Station cleaning, Europoort–Maasvlakte · every 2 wks | 60 min | W-1 | |
| 27 | ·●··· | Car wash, Assen · every 2 wks † | 40 min | O-2 | |
| 27 | ··●·· | Station cleaning, Breda · every 4 wks | 45 min | Z-3 | |
| 28 | ●··●· | Station cleaning, Amersfoort · same days, next week | 35 min | N-1 | |
| 28 | ●···· | Station cleaning, Nieuw-Vennep · same day, same route | 30 min | N-4 | |
| 28 | ····· | Europoort–Maasvlakte, rest week (wk mod 2 = 1) | – | – | |
| 28 | ····· | Assen, rest week (wk mod 2 = 1) | – | – | |
| 28 | ····· | Breda, next visit wk 31 (wk mod 4) | – | – |
† Tue wk 27 runs at reduced crew: the vehicle calendar says so, the plan follows. Rows are real assignments from the run behind the map sheet: wk 27–28, regions N/O/W/Z. The load column is the point: week totals level to within 2%.
Every routing API plans the day you hand it. Routebase decides the days.
Routebase is the layer in between: the recurring schedule itself (weekday, week, rhythm) decided for you, behind one JSON contract. Day routing is included, downstream.
$ curl -X POST https://api.routebase.nl/v1/recurring-plans \ -H "Authorization: Bearer rb_…" \ -d @quarter.json # quarter.json { "tasks": [ … 8,290 rows: address, service_min, frequency, allowed weekdays … ], "config": { "vehicles": { "vehicles_per_day": 4, "max_route_minutes_hard": 570 }, "effort": "max" } }
{
"status": "ok",
"horizon": { "start": "2026-06-29", "weeks": 13 },
"plan": {
"assignments": [
{ "task_id": "1-W1-a",
"date": "2026-06-29", "route": "N-2" },
… every task, dated and routed …
],
"routes_by_day": [ … 1,150 routes … ]
},
"metrics": { "drive_min": 190062, "solve_s": 3888 }
}
One POST for the quarter; day planning, single routes and detour ranking are the same story at smaller scale. Contracts are JSON Schema: the same files the validator runs, so the docs cannot drift. Want to try it without an account? The sandbox ships a ready-to-POST day (rb_demo_sandbox, no signup) and the full 4-week recurring problem.
"(Near-)best-in-class" is the claim. These are the measurements.
Scenario against the running plan, same task set, re-costed with HERE, measured 2026-07-06. Claims on this page are numbers with units; if we can't measure it, it isn't here.
The full sheet: guarantees & benchmarks → · gaps against public best-known solutions, head-to-head, stability under 5% churn, scale.
The second customer never reads a homepage. When someone asks their agent for complex route planning, the answer has to already be indexed, in the formats agents actually read.