Every city runs a queue it can never empty. Potholes, downed signs, blocked drains, a railing coming off a footbridge — 311 requests arrive faster than any crew can clear them, so the real decision is never “can we fix it?” It is “what do we fix today, and in what order?” That is a triage, and most operations run it on the bluntest possible signal: age. Oldest ticket first. It is fair, it is defensible, and it is blind to the one thing that actually separates a nuisance from a hazard — what the person actually wrote.
So I ran the experiment. I took a real backlog of open 311 requests, had a calibrated AI read each citizen's own words for danger, and routed a fleet of crews on real road-network times to serve the most urgent work a shift can reach. Then I compared it, on the same crews and the same map, against oldest-first. There is a caveat I will not bury, and a result I think is worth sharing — and you can drive the whole thing yourself in the demo.
The setup
The instance is 242 real, open, citizen-reported 311 requests in Atlanta, pulled from the public SeeClickFix feed and kept only where the resident wrote an actual description.1 Each request keeps its location, its age, and its words. A calibrated decision model — TypeSafe's System One model, Jev — read every description and answered a few atomic, typed questions about it: how much physical danger, how severe, whether it worsens if delayed, whether it even is an actionable work order. Those calibrated judgments combine, with weights I control in code, into one urgency score.2 Scoring all 242 cost under a cent.
Then it becomes an operations-research problem. Crews leave a shared depot, work a six-hour shift, and cannot serve everything — so choosing which requests to serve, and in what order, to maximise urgency within the time budget is a prize-collecting vehicle routing problem, the team orienteering problem.3 A compact greedy-insertion plus Large-Neighbourhood-Search matheuristic solves it, with the urgency score as both the prize it maximises and the signal that steers the search. Travel is a real OSRM driving-time matrix over the road network.4 The baselines — oldest-first, and “close as many tickets as possible” — reuse the exact same solver with a different prize, so the comparison is fair: only the signal changes.
What reading the text changes
With three crews on a six-hour shift, the difference is not subtle. Reading the text cleared about three times as many acute hazards as oldest-first — and, just as telling, it almost never sent a crew to a non-job. Roughly 40% of the backlog isn't an actionable work order at all: duplicates, questions, thank-you notes, neighbourly posts. Oldest-first can't tell those from a broken traffic signal, so it dutifully drives to them.
The hazards it surfaces are exactly the ones a timestamp buries. Among the acute cases the text-reading policy served that oldest-first left in the backlog: a utility pole “broken almost in half and barely attached,” reported 838 days ago; an open water-meter that a resident “suddenly dropped into” while walking, 1,186 days old; vandalised spray nozzles at a park that “slam down and can crush little kids' fingers”; a collapsed pipe railing at a playground entrance. None of them are the oldest tickets in the queue, so age never reaches them. The danger is in the sentence, not the date.
The honest caveat: it matters most when you're starved
Here is the part I refuse to oversell. The advantage is largest exactly when crews are scarcest, and it narrows as you add capacity — because with enough crews you eventually reach everything, and priority stops mattering. Sweep the crew count and the gap is a fan that closes.
This is the right shape for the claim, and it is more credible than “the AI always wins.” A city drowning in backlog with a handful of crews is precisely the starved regime where reading the text reallocates scarce hours toward danger. A city with slack doesn't need the help as much. There is a second honest tradeoff, too: the text-reading policy closes slightly fewer tickets than oldest-first — it trades raw ticket count for danger removed. If your dashboard rewards tickets-closed, this will look worse on the dashboard and better on the street.
Drive it yourself
The interactive version runs entirely in your browser — no server, no model call at runtime. The urgency scores and the road-time matrix are precomputed once and shipped as static data; the routing solver runs live in the tab as you change the policy or the crew count. Toggle between reading the text and oldest-first and watch the red rings — acute hazards left in the backlog — appear and vanish. Click any dot to read the citizen's own words the urgency was read from.5
Why this generalises
Strip away the potholes and the pattern is everywhere: a queue you can't clear, prioritised on a proxy — age, category, first-in-first-out — because the signal that actually matters is written in text a database throws away. Insurance claims, safety inspections, IT and facilities tickets, content moderation, clinical triage of messages. The move is the same one here: a calibrated model turns the unstructured half of each item into an auditable number, and a solver turns the numbers into a plan the operation can act on.
That division of labour is the whole point — a model for judgment over messy language, code and a solver for the math and the constraints, each doing what it is actually good at. The model reads; the solver routes; you own the weights, the thresholds, and the audit trail. This preview runs on public data in your browser; the production version runs on your queue, your crews, and your rules — which is what we mean, at BIS, by decisions engineered.
One note on what this is. I built it as an independent experiment on TypeSafe's System One model, Jev2 — I'm not affiliated with TypeSafe and this wasn't sponsored; I ran it because a decision model trained for calibrated judgments is a genuinely new building block and worth testing in the open, on real data, with the caveats left in. The urgency here is the model's reading of the text — there is no ground-truth “true urgency” label in 311 data, which is exactly the judgment a triage desk is paid to make by hand. If you're on the TypeSafe team, or building on System One yourself, I'd love to compare notes.

