A truck jackknifes on I-80 westbound at mile 184. Eleven minutes later a phone forty miles back shows a card that says so. Here is what happened in those eleven minutes, step by step, and where each minute went.
Minute 0: the radio call
The first report is a voice. A trooper, a plow driver or a passing motorist calls it in, and the first question dispatch asks is the one every highway worker knows: what mile marker? "I-80 westbound, 184" is a location a dispatcher can act on. A GPS coordinate is not, because nobody on a radio reads out eight decimal places. This is why the mile marker is the first thing dispatch asks for.
Minutes 1 to 5: the traffic center types it in
The state DOT runs a traffic management center. An operator there hears the call, or gets it from the highway patrol's dispatch system, and creates an event in the DOT's software: route, direction, mile marker, what happened, which lanes are blocked. This is the step nobody outside the building controls, and it is where most of the delay lives. A busy center on a snow day can be several minutes behind. A quiet one can post within a minute.
What the operator types is what everyone downstream gets. If the direction field is left blank, every app that reads the feed sees a crash with no direction. If the operator writes "101-LOOP" where the map data says "SR-101," someone has to reconcile the two.
Minute 5: the DOT publishes the feed
The DOT's system pushes the event into a public data feed. No two states use the same format. Washington serves JSON from its own API. Arizona and a dozen other states run a shared platform called ibi511. Kansas, Iowa, Nebraska, Minnesota and Indiana publish an XML file that overwrites itself every 30 to 60 seconds. New Jersey publishes a work-zone feed on a two-minute cadence. Hawaii updates weekly. Some feeds carry coordinates for every event; Arkansas's carries none.
The feed is the DOT's. MileCheck does not change it, and cannot see a crash the DOT never posts. The one exception is California, where the Highway Patrol publishes its own dispatch log as public XML, and MileCheck reads that alongside Caltrans.
Minutes 5 to 10: MileCheck's server reads it
A server at Cloudflare fetches each state's feed and holds the result for five minutes before fetching again. California's feeds move every minute, so that one refreshes every 60 seconds. Whenever the fetch happens, the server translates the state's format into one shared shape: a route name the mile-marker data will recognize, a direction, a start and end mile marker, a type code, the time the DOT last touched it.
That translation is most of the work. "I-10 Eastbound" becomes I-10 plus a direction. "Interchange ramp closed, all lanes closed" is a ramp closure, not a closed freeway, even though the DOT typed "all lanes closed." A Washington event with no direction field gets its direction read out of the headline text, but only when the text names exactly one direction. How one app reads 50 DOT systems covers the rest of that.
Minutes 10 to 11: your phone asks
The app refreshes its alert list every five minutes by default, so it picks up the new event on its next cycle. Then it does the part no DOT feed does. It knows your route and direction from the mile-marker data it carries offline, and it knows your position. It checks whether the crash is on your route, whether it is ahead of you in your direction of travel, and how far. If all three are true, it becomes the card on the Mile tab: "Crash, I-80 WB, MP 184, 41 miles ahead."
The DOT's mile marker and your mile marker are on the same scale. That is the whole trick. The crash was reported as a milepost, recorded as a milepost, and matched to the milepost you are passing.
Adding it up
Operator entry, one to five minutes. Server refresh, up to five. App refresh, up to five. A crash posted the instant the trooper calls can be on your screen in two minutes. A crash posted five minutes after the call, on the wrong side of both refresh cycles, takes about eleven. The pull-to-refresh on the Alerts tab skips the app's half of that wait, and the Worker's cache can be no fresher than the feed the DOT publishes.
What never arrives
Three things. A crash the DOT does not post, because the highway patrol cleared it before the traffic center logged it. A crash posted without a location the server can place, which happens in states whose feed has no coordinates and no mile marker for that event. And a crash on a road the app does not carry mile markers for, which in most states means a county road. The app shows what the road system reports about itself. It does not invent the rest.
Keep reading
Related: How one app reads 50 different state DOT systems · How MileCheck finds your mile marker offline · Road conditions by state · Who pays for the highway you're on