case 3 of 3 · unit economics
Why did you pick the expensive courier? An honest answer, zone by zone
In plain terms: The customer’s finance lead asked why so many orders go to the priciest courier. In two neighborhoods the extra cost roughly breaks even against the refunds it prevents, and it keeps those zones above the on-time rate promised in their contract — worth paying, but not because it pays for itself. In two others the expensive courier is only there because of a setting switched on months ago and never revisited, and that part is pure waste. So the honest answer is: you are half right, and here is the money back.
sev3Harvestline Groceryopened May 4, 11:05 AM ETspotted by: Customer finance lead flagged provider mix on the monthly invoice
01Symptom
Priya Raman, Harvestline Grocery’s finance lead, flagged one line on the monthly invoice: 37.9% of orders route to FleetX, the priciest provider on the account. Provider means courier — the company that actually drives the package; the platform owns no vehicles and hands every order to one of them. Fair question — and this case answers it with arithmetic, not defense. Nothing is broken; a customer is asking us to justify our own routing with their money.
The honest answer splits. In part of the city the premium is buying something the invoice cannot see; in the rest it is a config decision nobody re-checked. The case keeps those two separate, because blending them would flatter us and cost the customer money.
| provider | deliveries | share | on-time | cost / delivery |
|---|---|---|---|---|
| FleetX | 5,445 | 37.9% | 95.8% | $16.62 |
| Parcelet | 4,474 | 31.1% | 91.6% | $12.16 |
| DashNow | 3,765 | 26.2% | 91.8% | $10.73 |
| CourierCo | 697 | 4.8% | 93.5% | $12.96 |
Trailing 30 days, 14,381 deliveries. On-time means the package arrived within 15 minutes of the time promised at dispatch — the moment the order is handed to a courier. The FleetX row is the eyebrow-raiser: highest share, highest on-time, highest cost.
02Evidence trail
Before any arithmetic, the receipts from the router — the automatic step that reads every courier’s offer and picks one — with one order per zone (a zone is one ZIP code; cost and reliability change street by street), showing every quote it saw at dispatch time. A quote is a courier’s answer when asked to take a job: a price and an estimated time. The router’s score is that price plus an expected-lateness cost built from each provider’s trailing on-time — how often it actually hit the promise in that ZIP over the past 30 days (A4). Cheap and unreliable loses to expensive and reliable downtown. And in the third panel, watch the quote that clears the reliability floor at a lower price and still loses. That is not a score. That is a pin — a manual override forcing one courier for a ZIP, whatever the scoring would pick.
| provider | price | eta | on-time | |
|---|---|---|---|---|
| DashNow | $8.22 | 45 min | 77.0% | |
| Parcelet | $9.54 | 35 min | 86.5% | |
| CourierCo | $11.46 | 38 min | 87.6% | |
| FleetX | $14.52 | 34 min | 97.0% | ← dispatched |
| provider | price | eta | on-time | |
|---|---|---|---|---|
| DashNow | $8.06 | 40 min | 77.5% | |
| Parcelet | $9.60 | 40 min | 87.2% | ← dispatched |
| CourierCo | $11.14 | 39 min | 87.8% | |
| FleetX | $14.99 | 40 min | 97.6% |
| provider | price | eta | on-time | |
|---|---|---|---|---|
| DashNow | $8.60 | 41 min | 95.5% | |
| Parcelet | $10.66 | 47 min | 96.9% | |
| CourierCo | $12.21 | 42 min | 96.2% | |
| FleetX | $14.26 | 43 min | 97.8% | ← dispatched |
| provider | price | eta | on-time | |
|---|---|---|---|---|
| DashNow | $10.50 | 48 min | 95.9% | |
| CourierCo | $12.74 | 53 min | 94.3% | |
| Parcelet | $12.81 | 58 min | 97.9% | |
| FleetX | $16.05 | 45 min | 97.1% | ← dispatched |
On-time is each provider’s trailing rate in that ZIP at quote time (A4).
The arithmetic, zone by zone. For each zone: what FleetX costs, what each alternative would save on the invoice, and what that saving costs back in refunds, support contacts, and SLA credits — money handed back when the on-time promise written into the contract (the SLA) is missed. The economics are illustrative (A7/A14) and every constant is printed below the tables:
How to read a row: each row is a courier we could use instead of FleetX in that ZIP. Spend saved is what the invoice would drop; the four columns after it are what that saving costs back. Net / mo adds both sides up — a negative number means the switch loses money and FleetX stays, a positive one means we are overpaying by that much. Gaps under the materiality floor are too small to be worth acting on.
| alternative | avg quote | on-time | spend saved | lates added | refunds | support | sla credit | net / mo | call |
|---|---|---|---|---|---|---|---|---|---|
| Parcelet | $11.82 | 85.3% | $4,983 | 132 | $1,795 | $799 | $2,155 | $235 | below materiality |
| DashNow | $10.31 | 74.3% | $6,709 | 258 | $3,509 | $1,561 | $2,155 | -$515 | keep FleetX |
| CourierCo | $12.91 | 86.0% | $3,738 | 124 | $1,686 | $750 | $2,155 | -$854 | keep FleetX |
| alternative | avg quote | on-time | spend saved | lates added | refunds | support | sla credit | net / mo | call |
|---|---|---|---|---|---|---|---|---|---|
| Parcelet | $12.06 | 86.5% | $5,179 | 131 | $1,782 | $793 | $2,806 | -$202 | keep FleetX |
| DashNow | $10.47 | 75.3% | $7,357 | 284 | $3,862 | $1,718 | $2,806 | -$1,030 | keep FleetX |
| CourierCo | $12.91 | 86.2% | $4,014 | 135 | $1,836 | $817 | $2,806 | -$1,445 | keep FleetX |
| alternative | avg quote | on-time | spend saved | lates added | refunds | support | sla credit | net / mo | call |
|---|---|---|---|---|---|---|---|---|---|
| Parcelet | $12.29 | 95.7% | $6,152 | 4 | $54 | $24 | $0 | $6,073 | switch |
| DashNow | $10.67 | 92.3% | $8,644 | 56 | $762 | $339 | $2,509 | $5,035 | switch |
| CourierCo | $13.35 | 94.8% | $4,522 | 18 | $245 | $109 | $2,509 | $1,659 | switch |
| alternative | avg quote | on-time | spend saved | lates added | refunds | support | sla credit | net / mo | call |
|---|---|---|---|---|---|---|---|---|---|
| DashNow | $12.44 | 91.8% | $7,998 | 39 | $530 | $236 | $2,497 | $4,735 | switch |
| Parcelet | $14.06 | 96.1% | $5,745 | 0 | $0 | $0 | $2,497 | $3,248 | switch |
| CourierCo | $14.81 | 93.7% | $4,702 | 12 | $163 | $73 | $2,497 | $1,968 | switch |
Illustrative economics (A7/A14): 40% of added lates refund at $34 each; 55% raise a $11 support contact; when the projected zone on-time falls below the 95% floor, an SLA credit of 10% of zone spend applies; a switch only counts as savings above $250/mo materiality. All table figures are per month.
-- Realized share, on-time, and cost by provider and zone, trailing 30 days.
-- On-time per the A6 definition: delivered within 15 minutes of promise.
SELECT
zip,
provider_id,
COUNT(*) AS deliveries,
ROUND(100.0 * COUNT(*) / SUM(COUNT(*)) OVER (PARTITION BY zip), 1)
AS zone_share_pct,
ROUND(AVG((delivered_at <= promised_at + INTERVAL '15 minutes')::int), 3)
AS on_time_rate,
ROUND(AVG(cost_cents)) AS avg_cost_cents
FROM deliveries
WHERE account_id = 'acct_harvestline'
AND created_at > now() - INTERVAL '30 days'
AND delivered_at IS NOT NULL
GROUP BY zip, provider_id
ORDER BY zip, deliveries DESC;03Diagnosis
Two mechanisms produce the 37.9%, and they deserve opposite treatment.
Merit. In 78701 and 78704, scored routing picks FleetX because every cheaper provider’s trailing on-time in those ZIPs sits far below it — the cheapest quotes downtown come from a provider running 74.3% on-time against FleetX’s 96.8%. Even the best alternative projects those zones to 85.6% and 86.1% — both through the 95% SLA floor. The router is doing its job.
Config debt — an old setting nobody turned off. In 78757 and 78759, FleetX is not winning a score — it is pinned. The pin dates to a February decision after a bad DashNow week, and nobody revisited it. Today Parcelet runs 95.7% and 96.1% trailing on-time in those ZIPs, and the pin just burns money — $10,808 a month of premium that is not justified.
what the operator did not do
- Defend the router wholesale — the job is honest accounting, not advocacy for your own routing.
- Blend the four zones into one average — a blended number would show a modest premium and hide both truths.
- Recommend switching the two downtown zones just to look responsive — those paper savings reappear as refunds and SLA credits.
04Resolution & prevention
where the customer is right
$10,808 /month buying nothing
The customer was right about half of this: in two ZIPs we were paying extra for a courier that delivered nothing better, and that money should stop going out the door.
In 78757 (Crestview) and 78759 (Great Hills), the FleetX premium was not buying the reliability those zones needed: net overspend of $6,073 and $4,735 per month, even after charging the switch for every extra late delivery, refund, support call, and SLA credit it would cause. Roughly this much of the premium was buying nothing, and the finance team was right to flag it.
Recommended change: Remove the February FleetX pin in 78757 and 78759 and let scored routing pick per zone (Parcelet in 78757, DashNow in 78759); keep FleetX for baskets over $120 or sub-45-minute windows. Projected savings: $10,808/mo.
Prevention is a calendar rule, not a dashboard: routing pins now carry a quarterly review and expire unless re-justified with current numbers. A pin is a bet that the router is wrong; the February bet was right for a week and wrong for a quarter. The query below is the standing check — zones where we dispatch above the cheapest quote even though the cheapest provider is clearing the reliability floor.
-- Stale-pin detector: orders dispatched above the cheapest quote even though
-- the cheapest provider is clearing the 95% on-time floor in that zone (A4).
WITH ranked AS (
SELECT
order_ref,
zip,
provider_id,
price_cents,
chosen,
MIN(price_cents) OVER (PARTITION BY order_ref) AS cheapest_cents,
FIRST_VALUE(trailing_on_time) OVER (
PARTITION BY order_ref ORDER BY price_cents
) AS cheapest_on_time
FROM quotes
WHERE account_id = 'acct_harvestline'
AND ts > now() - INTERVAL '30 days'
)
SELECT
zip,
COUNT(*) AS orders,
ROUND(AVG(price_cents - cheapest_cents)) AS avg_overpay_cents,
SUM(price_cents - cheapest_cents) AS overpay_cents_30d
FROM ranked
WHERE chosen
AND price_cents > cheapest_cents
AND cheapest_on_time >= 0.95
GROUP BY zip
ORDER BY overpay_cents_30d DESC;the outreach — same facts, two altitudes
To: Tom Delgado (Eng, Harvestline)
Subject: Routing analysis behind the provider-mix answer for finance