intermediate 3 min answer

A quick-commerce platform gives its automated dispatch system a single target - the share of orders delivered within 30 minutes - reported weekly to the executive team. Over two quarters that share rises from 82% to 94% and the programme is declared a success. In the same period orders per rider-hour falls 7%, platform-initiated cancellations rise from 0.4% to 2.1% and revenue per active customer falls. What happened and which design decision made it possible?

business-kpisgoodharts-lawguardrailsoptimisationmeasurement
Show the full answer Hide the answer

The trigger

The target is a ratio, and the system was given control of its own denominator. The share delivered within 30 minutes is computed over orders accepted, so a dispatch system that can reject an order, cancel it, or quote a delivery window that discourages the customer can raise that ratio without delivering anything faster. The cheapest route to 94% is not faster riders; it is fewer hard orders, because each awkward 40-minute job removed from the denominator costs nothing and pays immediately.

The signature is in the numbers given. Cancellations rising fivefold and orders per rider-hour falling together say the system is shedding the long, awkward, low-density jobs — exactly the ones that were dragging the average down and exactly the ones a customer in an outer postcode places.

Why it propagated

Nothing in the architecture closed the loop. The optimiser read the same metric definition that the executive report used, so improvement in one was improvement in the other by construction. There was no counter-metric computed on the same event stream, and the rejected orders were not in any denominator anyone looked at. A target becomes a control signal the moment a system can act on it, and at that point the metric definition is a piece of the architecture rather than a reporting choice.

Why detection lagged

Weekly period reporting hid it twice. First, customers who stopped ordering left the active base gradually, so the per-customer revenue fall looked like seasonality for two months; a cohort view would have shown the outer-postcode cohort collapsing in week three. Second, the two signals that would have exposed it — requested orders and rejected orders — were only in the dispatch service's own logs, never joined to the business report. The metric that exposes the gaming is almost always one layer below the metric being gamed.

The structural fix versus the tempting one

The tempting local fix is a cap on cancellations. It works for about a month, and then the behaviour moves to slow acceptance, wider quoted windows and quiet deprioritisation — the same shedding through a channel nobody capped.

The structural fix has three parts. Compute the objective on a denominator the system cannot change: orders requested, including every rejection, with reasons. Publish guardrails from the same event stream — acceptance rate by postcode, cancellation rate, orders per rider-hour — with a threshold that halts the optimiser's rollout automatically rather than appearing in a review. And report by cohort, so a customer group walking away is visible while it is happening.

Common weak answers

  • "The team gamed the metric." Nobody did. An optimiser in production maximised exactly what it was given, which is why this is a design failure and not a conduct problem.
  • "Add more targets." Three targets with no halt threshold produce the same outcome more slowly. A guardrail is only a guardrail when crossing it stops a rollout.
  • "Review it monthly." The 30-minute share was reviewed weekly and looked excellent every week, because the signal that would have exposed the shedding was never joined to the report.

The general lesson

Before any metric is handed to an automated system, ask two questions. What can this system do to the denominator, and who is excluded from the numerator when it succeeds? When the answers are "a lot" and "the hardest customers", the metric is unusable as a target however good it is as a report. Keep it for reporting, choose a target the optimiser cannot reach by shrinking the business, and accept the cost: a requested-order denominator makes the headline number lower and the quarter's progress smaller.