<style>.themes { display: none; }</style> Skip to the page

BlogAllocationFairness

Why we tell a driver why the job was not theirs

A rule nobody can check is a rule nobody believes. So ours is a threshold, not a weight, and the driver can read it back.

Nick Khan3 September 20263 min

A driver is paid per job, so who gets the next job is who gets paid. It is the thing a fleet argues about more than anything else: the office is accused of favourites, the app is accused of being rigged, and a driver who believes either stops answering the radio.

The obvious rule is nearest-first, and the best evidence against it comes from a real fleet rather than a simulation. One month of assignment logs from a taxi company — 1,462 drivers, 231,268 jobs, the nearest available car every time — and the least successful half of the drivers earned 28% of the income. The inequality rose the longer the system ran. Supply exceeded demand throughout, so this was inequality in a quiet fleet, which is what a small firm is for most of the day.

What a rule has to do

We wrote down five things before choosing anything.

A driver has to be able to say it in one sentence. They have to be able to check it against their own screen. It must not be winnable by gaming — refusing the small jobs, hovering at the rank, hopping a zone boundary. The office has to be able to overrule it, and the override has to show. And the customer still has to get a car in a reasonable time, because fairness that sends the car from the far side of town is fairness the firm cannot afford.

Nothing in it is a weighted score. A rule with weights is a rule nobody can check, and every surprising outcome becomes "the algorithm hates me".

What we shipped

Three policies and three modes, kept separate because they answer different questions. The policy decides what order the drivers are in; the mode decides who presses the button.

  • Longest waiting. Whoever has been free longest gets the next job. Right for a town ten minutes across.
  • Zone queues. First into the zone, first out, with a dwell so hopping a boundary buys nothing — the plot system the trade has run on the radio for thirty years.
  • Nearest within a band. For a firm whose drivers are salaried, where being passed over costs nobody anything.

The ledger is the part that matters

Two facts per driver: how long they were free, and how many offers they had. The fair share is the first as a proportion of the fleet's, times the offers there were. Two offers or more behind, and at least an hour free, earns the priority flag.

An accepted offer clears the flag, and it cannot be earned again for an hour after that — a driver who has just been put first and took the job is not still owed. It is deliberately a threshold rather than a weight, because a driver can check a threshold and the office can be argued with about it.

There is no penalty for refusing. Back of the line and a row in the ledger, and nothing else. A time-out after declining is control, and control is what made Uber's drivers workers rather than contractors in the Supreme Court.

The office can still send whoever it likes. That choice is recorded beside the one the rule would have made, which is how a firm reads its own override rate before trusting the rule with the offers.

Read next

Fewer notes than a news feed, and each one about a decision rather than an announcement.

  • 2 min

    A tap in a tunnel

    Money-carrying taps wait. They do not vanish. That is three apps, one rule, and one bug we only found by asking who owns a frame.

See OneTaxi working with your own team.

Book a 30-minute call. We’ll help set up your firm, walk you through a booking and show you the dispatch process in action.