The concern is that adding a routing engine to Trip Management brings a large, growing compute bill. It does not. Routing sits off the telemetry hot path entirely, so its cost is a fixed monthly box that does not move when the fleet grows. Every number below is measured on our own data.
This is the whole concern, resolved. The expensive-sounding part and the high-volume part are two different paths that never meet.
Millions of packets a day at fleet scale. Routing engine calls: none. Live ETA is computed from the stored route duration and a rolling average of the vehicle's own observed speed. No external lookup, no per-packet cost.
One call per route, when a human defines or edits it. The result is written to the database and reused forever after. A route planned once is never re-planned by traffic.
Benchmarked locally against real vehicle traces on a 2 CPU container.
Memory was identical idle and after 2,000 queries. The engine loads a map and answers from it; serving requests adds essentially nothing. The 232 MB figure is measured with the full India road network and all of Bengaluru loaded at once.
These are no longer estimates. Built and measured on 27 August against the live 1.6 GB India map.
| What is loaded | On disk | Actually in memory |
|---|---|---|
| All of India, main road network | 598 MB | 136 MB |
| Bengaluru, every street | 304 MB | 18 MB |
| Whole service, both together | 902 MB | 232 MB |
The right-hand column is the one that gets billed, and it is roughly a quarter of the left. The engine reads its map straight off disk and keeps in memory only the parts we actually drive through, so covering the whole country costs little more than covering one city. This runs comfortably on the smallest instance any cloud sells.
Verified on real journeys across the country, not just inside one city:
| Journey | Distance | Estimated time |
|---|---|---|
| Bengaluru to Mumbai | 975 km | 16.6 h |
| Delhi to Kolkata | 1,486 km | 21.6 h |
| Chennai to Hyderabad | 681 km | 12.7 h |
| Kevadia to Ahmedabad | 217 km | 3.9 h |
Distances match real road distances to within a few percent. This matters because the cheap way to cover a country is to chop it into regional pieces, and every one of these journeys crosses a regional boundary. Our design keeps a country-wide layer permanently loaded precisely so these cannot silently fail.
Move the sliders. The point is the shape of the two lines, not the exact rupee figure.
Self-hosted is one small server plus a disk, and a monthly map rebuild on a throwaway instance. The server figure now comes from the measured 232 MB footprint rather than an estimate. The API line is list price for basic directions requests. Both in USD, sized to be defensible rather than flattering.
Tested against seven days of real vehicle traces, its road geometry matched where the driver actually went to within 7 metres on highway legs. Its travel time predictions were wrong by 53% on average, always optimistic, because Indian road data carries speed limits on only 2% of roads.
This is a limitation of public map data, not of the engine, and no paid setting fixes it. So we use the engine for the road path and take arrival times from our own historical vehicle speeds, which we already store. The same corridor measured between 15.8 and 31.5 km/h across days, and that variation is something only our own data knows.
At our volume a commercial API is genuinely competitive on price, and that is worth saying plainly. The blocker is not cost. Commercial map terms restrict storing route results and expect the result to be shown on that provider's own map tiles. Trip Management stores every route permanently, because the saved road path is the corridor that deviation alerts are judged against and the evidence in a customer dispute, and it renders OpenStreetMap tiles. Self-hosting is the choice that keeps the data ours. The $15 is the smaller half of the argument.