0 Impact Sizing: What Happens If 1–2h FR Reaches 96%?

The 1–2h bucket is 11% of all Normal AB URs but is the only bucket below 92% FR
SEA overall pFR (all Normal AB) is 95.6%. The 1–2h bucket sits at 87.3% — an 8.3pp gap vs the rest. Every other bucket fulfils at 92–97%. If the 1–2h bucket matched each market's own overall pFR, SEA total would lift to 96.5% (+0.9pp). Market-level detail below.
1–2h Bucket pFR (Current)
87.3%
SEA, Normal AB (Airport DO + Others) — lowest FR of any bucket
Overall pFR (Current)
95.6%
SEA, all Normal AB — May 1–25 2026
Overall pFR if 1–2h Matches Overall
96.5%
+0.9pp SEA uplift — Vietnam gains +2.1pp, Malaysia +1.0pp
Market-Level Uplift — If 1–2h FR Matches Each Market's Own Overall pFR
🇻🇳 Vietnam — biggest prize
78.3% → 91.6%
Overall pFR: 91.6% → 93.7% (+2.1pp)
🇲🇾 Malaysia
87.0% → 96.2%
Overall pFR: 96.2% → 97.2% (+1.0pp)
🇮🇩 Indonesia
87.5% → 94.7%
Overall pFR: 94.7% → 95.6% (+0.9pp)
🇵🇭 Philippines
90.3% → 95.2%
Overall pFR: 95.2% → 95.8% (+0.6pp)
🇹🇭 Thailand
90.4% → 95.9%
Overall pFR: 95.9% → 96.5% (+0.6pp)
🇸🇬 Singapore
90.3% → 97.5%
Overall pFR: 97.5% → 98.0% (+0.5pp)
Vietnam is the biggest prize — its 1–2h bucket alone contributes +3.2pp gap to Vietnam's overall pFR
Vietnam's 1–2h FR is only 78.3% (lowest SEA), with an overall pFR of 91.6%. Closing the 1–2h gap alone would move Vietnam's overall pFR to 93.7% (+2.1pp) — the largest market-level uplift opportunity. Malaysia (87.0% → 96.2% target, +1.0pp overall) and Indonesia (87.5% → 94.7%, +0.9pp) follow.

1 Executive Summary

Problem Statement
Job Board (JB) Fulfilment Rate is consistently lower for 1–2 hour lead-time bookings vs 2–6 hour bookings across all SEA markets. The table below sizes every stage of the funnel that explains the gap and highlights the key insights at both regional and market level.
1–2h Bucket pFR (Current)
87.3%
Lowest FR of any lead-time bucket across SEA
Overall pFR (Current)
95.6%
All Normal AB, 6 SEA markets, May 1–25 2026
Overall pFR if 1–2h Matches Overall
96.5%
+0.95pp lift — 1–2h bucket is 11% of URs but 100% of the bottom
Key Findings: 1 JB Post-Alloc No-Show 2 FA: DAX Offline / Invalid State (Morning Peak) 3 Fallback Recovery (DAX Post-Cancel)
Funnel Stage Gap Contribution — Regional Gap by Market Overall pFR Uplift
if fully fixed (SEA)
Key Insights
Priority Finding
1
JB Post-Allocation
No-Show Problem

PAX cancels after allocation, within 30 min of pickup — no-show rate is 2–4× higher in 1–2h vs 2–6h
17–47%
of FR gap across SEA markets
SEA avg (ex-SG): ~21%
🇸🇬 SG 47% 🇵🇭 PH 31% 🇻🇳 VN 20% 🇲🇾 MY 19% 🇮🇩 ID 22% 🇹🇭 TH 17%
Contribution = (NS Rate 1–2h − NS Rate 2–6h)
+0.38pp
SEA overall pFR uplift
🇻🇳 VN +0.73pp
🇵🇭 PH +0.68pp
🇸🇬 SG +0.46pp
🇮🇩 ID +0.40pp
🇲🇾 MY +0.39pp
🇹🇭 TH +0.17pp
SG is the outlier (47%) — supply barely fails in SG; almost all of SG's gap is demand-side abandonment. For all other markets, no-show is a consistent but secondary contributor (~17–22%).

No-show rate in 1–2h is 2–4× the 2–6h rate (e.g. MY: 2.5% vs 0.7%) — passengers who book close to their ride time are far more likely to cancel.
⚡ FAILED ALLOCATION — Driver fails the pre-award check 30 min before pickup. A driver always signed up; the failure is at the T−30min broadcast check, not at sign-up.
FA: Overall
Net FA contribution = FA rate gap × (1 − fallback recovery). Portion of FR gap not rescued by fallback
4–66%
of FR gap across SEA markets
MY: 5.4pp (49%) | TH: 3.3pp (66%)
🇹🇭 TH 66% 🇵🇭 PH 62% 🇲🇾 MY 49% 🇻🇳 VN 31% 🇮🇩 ID 28% 🇸🇬 SG 4%
% of total FR gap attributable to net unrecovered FA failures
+0.63pp
SEA overall pFR uplift
🇵🇭 PH +1.04pp
🇻🇳 VN +1.00pp
🇲🇾 MY +0.91pp
🇹🇭 TH +0.50pp
🇮🇩 ID +0.42pp
🇸🇬 SG +0.03pp
Dominant lever in supply-first markets. TH (66%), PH (62%), and MY (49%) have FA as the biggest single contributor to their FR gap. FA rate in the 1–2h bucket is 2–3× higher than 2–6h: TH 11.7% vs 3.5%; MY 25.2% vs 7.8%; PH 14.0% vs 6.8%.

SG is the structural outlier — FA contributes only 4% of SG's gap; the gap is almost entirely PAX No-Show (58%) and Fallback recovery (38%).

Vietnam's high FA rate (20.5%) is split evenly between driver unavailability and Too Far — Bangkok/Vietnam geography amplifies TooFar failures more than other markets.
Priority Finding
2
Failed Allocation —
DAX Offline / Invalid State

Driver offline, suspended, or system-disqualified after JB acceptance · Morning peak amplifies Invalid State 2× (53% of FAs at 04–07h vs 27% off-peak)
3–52%
of FR gap across markets
MY: 4.6pp (41%) | TH: 2.6pp (52%)
Offline rate 1–2h vs 2–6h: MY 20.9% vs 6.3%
🇹🇭 TH 52% 🇵🇭 PH 46% 🇲🇾 MY 41% 🇻🇳 VN 23% 🇮🇩 ID 23% 🇸🇬 SG 3%
80–85% of FA failures in most markets are Offline/Unavailable (excl. VN at 55%)
+0.53pp
SEA est. pFR uplift
🇲🇾 MY +0.77pp
🇵🇭 PH +0.78pp
🇻🇳 VN +0.74pp
🇹🇭 TH +0.42pp
🇮🇩 ID +0.34pp
🇸🇬 SG +0.02pp
Dominant FA sub-category everywhere except Vietnam. 80–85% of all FA failures in MY, ID, PH, TH are from drivers who went offline or entered an invalid state after accepting the JB. FA offline rate is 3–4× higher in 1–2h than 2–6h (MY: 20.9% vs 6.3%).

Vietnam anomaly: Only 55% of VN FA failures are Offline/Unavailable; the remaining 45% are Too Far — reflecting greater geographic spread of drivers relative to pickup zones in Vietnam cities.

Lever: Validate driver eligibility at JB sign-up; re-alert at T−45min; penalise post-acceptance offline transitions.
FA: Too Far
Driver moved too far from the pickup zone by the T−30min allocation check
1–15%
of FR gap across markets
MY: 0.9pp (8%) | VN: 1.2pp (8%)
TooFar rate 1–2h vs 2–6h: VN 9.2% vs 6.7%
🇵🇭 PH 15% 🇹🇭 TH 14% 🇻🇳 VN 8% 🇲🇾 MY 8% 🇮🇩 ID 6% 🇸🇬 SG 1%
% of total FR gap attributable to Too Far failures
+0.10pp
SEA est. pFR uplift
🇻🇳 VN +0.26pp
🇵🇭 PH +0.25pp
🇹🇭 TH +0.08pp
🇲🇾 MY +0.08pp
🇮🇩 ID +0.07pp
🇸🇬 SG +0.01pp
Secondary lever; geography-driven. Too Far accounts for 15–25% of all FA failures across markets. The share is highest in Vietnam (45% of FA) because driver coverage zones are more spread out; lowest in SG (27%) but SG's overall FA rate is negligible.

TooFar rate is relatively flat between 1–2h and 2–6h buckets — it contributes to the FR gap mainly because the overall FA rate is higher in 1–2h. In VN and TH, the TooFar gap is more pronounced (rate: VN 9.2% vs 6.7%; TH 2.8% vs 1.1%).

Lever: Geofence enforcement on JB sign-up; progressive unsubscription warnings when driver moves beyond service radius.
Priority Finding
3
Fallback Recovery Gap
Fallback rescues failed JB bookings at a lower rate in 1–2h vs 2–6h · Root cause: DAX post-cancellation after fallback acceptance (17–33% rate vs 1–6% in 2–6h)
35–60%
of FR gap across SEA markets
MY: 4.1pp (44%) of gap
MY rescue rate: 77.5% vs 92.6%
🇮🇩 ID 60% 🇸🇬 SG 51% 🇻🇳 VN 47% 🇲🇾 MY 44% 🇹🇭 TH 35% 🇵🇭 PH ~0%
Share of total FR gap explained by fallback rescue gap
+0.49pp
SEA overall pFR uplift
🇻🇳 VN +1.45pp
🇮🇩 ID +0.68pp
🇲🇾 MY +0.55pp
🇸🇬 SG +0.30pp
🇹🇭 TH +0.09pp
🇵🇭 PH ~0pp
Single largest lever — root cause identified. Fallback recovery drops 15pp in MY (77.5% vs 92.6%) and 16pp in ID (69.9% vs 85.3%) for 1–2h bookings.

🔴 Root Cause: Driver post-cancellation after fallback acceptance. Drivers accept the fallback booking but then cancel at 17–33% rates for 1–2h vs only 1–6% for 2–6h. This gap exists at every hour of the day — it is not a morning peak issue. Fallback allocation rate is actually better in 1–2h; PAX behaviour is not the issue.

Lever: Fallback commitment enforcement (cancellation penalty), fare uplift on fallback assignment, ETA visibility before acceptance. See Section 6 for full deep-dive.

Market contribution % = component's pp contribution ÷ total FR gap for that market. Market-level deep-dives in Section 4.

FR Gap Reference — All Markets
Market FR (1–2h) FR (2–6h) FR Gap ▼ FA Rate (1–2h) FA Rate (2–6h) FB Recovery (1–2h) FB Recovery (2–6h) Archetype
🇻🇳 Vietnam78.3%92.2%+13.9pp20.6%8.9%60.5%65.0%Fallback + FA
🇲🇾 Malaysia87.0%96.4%+9.4pp23.6%8.0%77.5%92.6%FA Supply
🇮🇩 Indonesia87.5%95.2%+7.7pp10.4%5.7%69.9%85.3%Fallback dominant
🇸🇬 Singapore90.3%97.3%+7.0pp2.8%2.3%72.8%90.7%PAX No-Show
🇰🇭 Cambodia88.0%94.3%+6.3pp9.0%12.1%Low volume
🇹🇭 Thailand90.4%95.2%+4.8pp10.2%3.4%66.2%80.3%FA Supply
🇵🇭 Philippines90.3%93.8%+3.5pp21.4%7.3%82.8%93.6%FA Supply

JB FA Rate = jb_failed_allocation / total_request  |  FB Recovery = fallback_completed / fallback_request

2 Gap Decomposition

The FR gap decomposes into three additive components. Bars below show the proportional contribution of each for every market.

PAX No-Show FA: Offline / Invalid State FA: Too Far Fallback Recovery Gap
🇻🇳 Vietnam — 13.9pp gap
2.8pp
20%
3.2pp
23%
1.5pp
11%
6.5pp
47%
🇲🇾 Malaysia — 9.4pp gap
1.8pp
19%
3.0pp
32%
0.6pp
6%
4.1pp
44%
🇮🇩 Indonesia — 7.7pp gap
1.7pp
22%
1.0pp
13%
0.4
5%
4.6pp
60%
🇸🇬 Singapore — 7.0pp gap
3.3pp
47%
3.6pp
51%
🇹🇭 Thailand — 4.8pp gap
0.8pp
17%
1.7pp
36%
0.5pp
11%
1.7pp
35%
🇵🇭 Philippines — 3.5pp gap
1.1pp
31%
2.0pp
58%
0.4pp
11%

🔴 Supply-Driven Markets

Malaysia · Thailand · Philippines · Vietnam

FA Offline/Invalid State is the dominant JB-stage driver. Fixing driver state at the pre-award check directly closes the gap. FA rate in 1–2h is 2–3× the 2–6h rate.

🟡 Fallback-Driven Markets

Indonesia · Singapore (+ Vietnam partially)

The JB booking itself barely fails differently between buckets. The gap is driven by fallback rescuing at a much lower rate in the 1–2h window. Requires a separate investigation.

3 Failed Allocation Deep Dive

Key Structural Finding
100% of failed alloc URs had a driver sign up for the JB. The failure always occurs at the T-30min pre-award broadcast check — never at sign-up. No intervention at the sign-up stage alone would help; the intervention must target what happens to the driver in the 30-minute window before pickup.
Failed Allocation Rate — All Markets, 1–2h vs 2–6h

All 6 SEA Markets · May 1–25 2026 · Normal AB, Non-Airport  |  Red = 1–2h · Green = 2–6h · Annotations show the excess gap (pp) for 1–2h over 2–6h

FA Sub-Reason Rates by Market
What the chart shows
Left — Total FA Rate: Malaysia (25.2% vs 7.8%) and Vietnam (20.5% vs 10.7%) have the widest 1–2h FA rate gaps. Singapore is structurally flat at ~2–3% — supply is not the constraint there.

Centre — Offline/Unavailable: This sub-reason dominates in every market except Vietnam. MY offline rate is 3.3× higher in 1–2h (20.9% vs 6.3%). In TH and PH the gap is similarly pronounced.

Right — Too Far: Vietnam is the clear geography outlier — 9.2% vs 6.7%, and Too Far accounts for 45% of Vietnam's FA failures. For all other markets Too Far is a secondary lever (1–4%).

Key takeaway: For MY/TH/PH/ID, fix driver availability and state at the pre-award check. For VN, combine availability fixes with geofencing — Too Far is a co-equal contributor.
Hypothesis Testing
1
DAX Behavior — Are Drivers Busy on Concurrent OD Trips?
✗ Rejected
HYPOTHESIS
InvalidState failures spike at morning peak (06–08h) because drivers who accepted a JB booking are occupied on a concurrent on-demand (OD) trip when the pre-award allocation check runs — preventing them from being available for the JB pickup.
HOW WE TESTED IT

For every failed allocation flagged as InvalidState, we checked whether the signed driver had an active non-AB booking within a 90-minute window around the allocation timestamp. This directly measures OD-trip overlap as a share of all InvalidState failures — including at peak hours.

EVIDENCE
6%
InvalidState failures with a verifiable active OD trip at allocation time — across all hours
~6%
OD-Busy share at 06–08h peak — no material increase vs off-peak hours
~46%
InvalidState failures caused by driver suspension / system disqualification post-acceptance — the dominant root cause
92.8%
Malaysia drivers with only 1 failed allocation in 25 days — failures are distributed, not concentrated in bad actors
CONCLUSION

The OD-busy overlap is negligible and constant across all time slots. Driver suspension/disqualification after JB acceptance (~46%) is the real driver of InvalidState failures. Targeting concurrent OD trips would not materially reduce FA failures.

2
Pickup Time of Day — Is the FA Gap Driven by Morning Peak Timing?
✓ Validated
HYPOTHESIS
The 1–2h bucket's higher Failed Allocation rate is concentrated at morning peak hours (06–08h), where supply is tightest and 1–2h bookings made during the pre-dawn window (04–06h) land squarely in the commute surge — unlike 2–6h bookings which are distributed earlier in the day.
HOW WE TESTED IT

We computed the FA rate by hour of pickup across all 6 SEA markets, split by 1–2h and 2–6h lead-time buckets. We also measured each market's share of FAs that fall within the 06–08h window and calculated a concentration ratio (1–2h ÷ 2–6h).

EVIDENCE
2–5×
Higher FA rate for 1–2h vs 2–6h during Morning Peak (06–08h) across MY, TH, PH, ID
20–40%
1–2h FA rate at peak hours in key markets — i.e. 1 in 3 JB bookings in MY & TH fail allocation
2.3×
Malaysia: 44% of 1–2h FAs in 06–08h vs 19% for 2–6h (concentration ratio)
2.8×
Thailand: 42% of 1–2h FAs in 06–08h vs 15% for 2–6h (sharpest peak)
2–3%
Singapore FA rate — flat across all hours, consistent with supply-surplus market structure
Stable mix
Offline/Suspended/OD-Busy sub-type mix unchanged at peak — timing amplifies all sub-types equally, not selectively
SUPPORTING CHART
🔴 Morning Peak FA Rate is 2–5× Higher for 1–2h Bookings Across All Markets
The FA rate for 1–2h bookings surges during Morning Peak (06–08h) and Wee Hours (00–05h) to 20–40% in key markets — vs only 4–10% for 2–6h bookings at the same hours. Gap annotations highlight the 1–2h excess FA rate for periods where the gap exceeds 8pp.

All 6 SEA Markets · May 1–25 2026 · Non-airport Normal AB  |  Red line = 1–2h FA Rate · Blue dashed line = 2–6h FA Rate · Red shading = gap ≥10pp · Amber shading = gap 5–10pp · Yellow band = morning peak (06–08h)

FA Rate by Time of Day — All Markets
CONCLUSION

The timing hypothesis is confirmed. 1–2h bookings systematically collide with peak-hour supply constraints because their lead time places pickup squarely in the commute window. The failure sub-type mix is identical at peak and off-peak, confirming this is a structural timing mismatch — not a new failure mode. The primary lever is supply pre-positioning ahead of the 06–08h window for 1–2h bookings.

BONUS FINDING: WHICH REASON DRIVES THE PEAK?
🔴 Invalid State Doubles Its Share at Morning Peak — It's Not Just "All Reasons Rising"
During 04–07h, Invalid State accounts for 53% of 1–2h FAs — vs only 27% off-peak (+26pp shift). Offline/Unavailable is completely stable at ~35% all day. Too Far actually drops at peak (24% → 6%). This means the morning peak amplifies Invalid State specifically — drivers who accepted a JB booking but are then disqualified by the system (suspension, state change) in the window leading up to a pre-dawn pickup. The implication: fixing driver state management before the pre-award check is the highest-leverage intervention for the morning peak.

Malaysia · May 1–25 2026 · 1–2h Non-airport Normal AB  |  Lines show % share of each reason within that hour's FAs · Grey dashed = overall 1–2h FA rate (right axis) · Yellow = morning peak (04–07h)

FA Reason Share by Pickup Hour — Malaysia

4 Fallback Recovery Deep Dive

Root Cause Found: Driver Post-Cancellation After Fallback Acceptance
The fallback funnel was decomposed into four stages across all markets. In every single market, the fallback recovery gap is explained by one factor: drivers accept the fallback booking then cancel at 17–33% rates for 1–2h bookings vs 1–6% for 2–6h bookings. Supply (unallocation) is not the issue. PAX behaviour is not the issue. The problem is driver commitment after accepting the fallback.
DAX Post-Cancel (MY, 1–2h)
18.8%
vs 1.6% for 2–6h → +17pp gap
DAX Post-Cancel (PH, 1–2h)
32.5%
vs 0.0% for 2–6h → +32.5pp gap
Fallback Alloc Rate (MY, 1–2h)
97.4%
Actually BETTER than 2–6h (94.5%)
PAX Pre-Cancel (MY, 1–2h)
1.9%
Also BETTER than 2–6h (4.0%) — pax more committed
Fallback Funnel Decomposition by Market
Market FB Recovery Gap Unalloc Rate (1–2h / 2–6h) PAX Pre-Cancel (1–2h / 2–6h) Alloc Rate (1–2h / 2–6h) DAX Post-Cancel (1–2h / 2–6h) 🔑 PAX Post-Cancel (1–2h / 2–6h) Verdict
🇲🇾 Malaysia -15.0pp 1.5% / 2.4%
✅ Not the issue
1.9% / 4.0%
✅ Better in 1–2h
97.4% / 94.5%
✅ Better in 1–2h
18.8% / 1.6%
🔴 +17.2pp gap
3.4% / 2.2%
Minor
DAX post-cancel
🇮🇩 Indonesia -13.7pp 4.3% / 4.7%
✅ Flat
4.7% / 8.3%
✅ Better in 1–2h
93.8% / 90.6%
✅ Better
20.3% / 2.3%
🔴 +18.0pp gap
8.7% / 8.8%
Flat
DAX post-cancel
🇹🇭 Thailand -8.1pp 8.9% / 17.4%
✅ Better in 1–2h
7.1% / 16.6%
✅ Much better in 1–2h
90.4% / 77.5%
✅ Better
26.3% / 5.7%
🔴 +20.6pp gap
3.1% / 1.7%
Minor
DAX post-cancel
🇵🇭 Philippines -28.6pp 1.3% / 2.3%
✅ Minimal
2.1% / 4.6%
✅ Better in 1–2h
97.1% / 94.3%
✅ Better
32.5% / 0.0%
🔴 +32.5pp gap
2.2% / 2.4%
Flat
DAX post-cancel
🇸🇬 Singapore -9.2pp 2.4% / 4.5%
✅ Better in 1–2h
3.4% / 6.4%
✅ Better in 1–2h
94.7% / 90.0%
✅ Better
13.3% / 3.0%
🔴 +10.3pp gap
6.1% / 2.0%
+4.1pp, secondary
DAX post-cancel
🇻🇳 Vietnam -2.9pp 42.8% / 35.6%
⚠️ Supply shortage
3.2% / 6.2%
✅ Better in 1–2h
69.7% / 61.8%
Better but still low
13.9% / 1.5%
🔴 +12.4pp gap
6.2% / 3.6%
Minor
DAX post-cancel
+ Supply shortage
Is It a Morning Peak Issue? — No.
The gap is consistent at every hour of the day
DAX post-cancel rate in Malaysia is ~17–21% for 1–2h bookings across all time periods — Wee Hours, Morning Peak, Day Time, Evening Peak, Night Time. For 2–6h it stays at 0–4% across all hours. This is not a morning peak OD competition problem. It is structural to how 1–2h fallback bookings are presented and committed to by drivers.

Malaysia · May 1–25 2026 · Non-airport Advance Bookings  |  Shaded area = FR gap between buckets  |  Amber bands = Morning/Evening peak hours

Fulfilment Rate by Pickup Hour Malaysia
Time of Day MY 1–2h DAX Post-Cancel MY 2–6h DAX Post-Cancel MY Gap TH 1–2h DAX Post-Cancel TH 2–6h DAX Post-Cancel TH Gap
Wee Hours (00–05h)20.7%3.0%+17.7pp31.2%11.1%+20.1pp
Morning Peak (06–08h)18.3%3.9%+14.4pp27.9%0.0%+27.9pp
Day Time (09–16h)17.3%0.0%+17.3pp20.5%5.1%+15.4pp
Evening Peak (17–20h)18.4%1.0%+17.4pp20.2%1.5%+18.7pp
Night Time (21–23h)17.2%0.7%+16.5pp23.6%7.5%+16.1pp
What Does This Mean? — Structural Causes

Fare / Incentive Gap

1–2h fallback fares may be less attractive relative to what drivers can earn from competing bookings at the moment of assignment. 2–6h fallbacks inherit the scheduled booking premium.

ETA Pressure

Driver accepts, then realises they cannot physically reach pickup in 30 min and cancels rather than arriving late. More prevalent in 1–2h because the booking is near-instant.

Commitment Asymmetry

2–6h fallbacks inherit a longer-window AB booking context with stronger acceptance norms. 1–2h fallback feels like a short-notice on-demand booking — drivers treat it with lower commitment.

Revised Action Priorities
ActionMechanismGap AddressableMarkets
Fallback commitment enforcement Cancellation penalty for driver post-accept cancellation on fallback bookings; increase within first 10 min of acceptance MY: ~4.1pp (44% of total gap) MY, ID, TH, PH, SG
Fare uplift on fallback assignment Increase driver-side fare for 1–2h fallback to make it competitive with OD alternatives at point of assignment Reduces 17–33pp dax post-cancel All supply-driven markets
ETA display at fallback accept Show driver ETA to pickup clearly before acceptance to reduce "accept then cancel" behaviour Reduces panic cancellations MY, TH, ID
Vietnam supply intervention Vietnam has structural supply shortage (42.8% unalloc rate) — incentives for drivers to accept AB fallback in low-supply periods Addresses unallocation separately from post-cancel VN only

Remaining Open Question
Open QuestionWhy It MattersStatus
Final Waterfall Sizing
UR → JB-stage losses → fallback-stage losses → entirely unrecovered URs, per market
Quantifies absolute ride count recoverable per lever for business case sizing Pending

A Appendix — Sample Booking Codes for Engineering Deep Dive

How to use these samples
Each table provides 5 representative bookings per market for the three priority failure buckets (1–2h lead-time, Non-airport Normal AB, May 1–25 2026). Always use the "Last Booking Code" column for system lookups — this is the last booking code in the UR chain (unique_request_id format: UR-{first}-XXXXXXXXXXXXXXXXXX-{last}) and is the canonical reference used in all funnels and certified tables. All timestamps are local time unless noted.
1 JB Post-Allocation PAX No-Show (1–2h bucket)

Driver was allocated at T−30min, arrived on time, but PAX did not board within the no-show window. Timeline: Booking Created → Allocation Broadcast (T−30min) → Driver Allocated → Driver Arrived → PAX No-Show → Driver Cancelled

Market Last Booking Code ✓ Driver ID Booking Created Scheduled Pickup Lead (min) Alloc Broadcast (T−30) Driver Allocated Driver Arrived (UTC) Cancel Time DAX secs post-alloc Cancel Reason
🇮🇩 INDONESIA
🇮🇩 IDA-9BOTB3PWWAKHAV8534642026-05-17 17:4719:15:008718:45:0018:45:0012:13:42 UTC19:30:082707s (~45min)PAX_NO_SHOW_V2
🇮🇩 IDA-99JN63RWWDU7AV62694802026-04-30 22:4300:00:007623:05:0023:05:0016:55:41 UTC00:18:004380s (~73min)PAX_NO_SHOW_V2
🇮🇩 IDA-9AEPTQ9GX7GKAV72193492026-05-07 12:3014:00:008913:15:0013:15:0006:48:03 UTC14:15:093609s (~60min)PAX_NO_SHOW_V2
🇮🇩 IDA-9AWXWNPWWFU6AV82241792026-05-03 22:2423:45:008022:50:0022:54:4016:16:28 UTC00:02:254065s (~68min)PAX_NO_SHOW_V2
🇮🇩 IDA-99K3QCPWWGXVAV43508372026-05-01 01:0102:30:008801:45:0001:45:0019:41:07 UTC02:56:414301s (~72min)PAX_NO_SHOW_V2
🇲🇾 MALAYSIA
🇲🇾 MYA-9BXIRI7WXDH7AV76579742026-05-12 02:5304:15:008103:45:0003:45:0019:58:27 UTC04:30:132712s (~45min)PAX_NO_SHOW_V2
🇲🇾 MYA-9CF7OMDWX3BFAV83083832026-05-23 04:5006:15:008405:45:0005:45:0022:01:56 UTC06:31:072767s (~46min)PAX_NO_SHOW_V2
🇲🇾 MYA-9CJJ7ELGW39CAV35091612026-05-24 06:1407:30:007507:00:0007:00:0023:16:19 UTC07:45:102709s (~45min)PAX_NO_SHOW_V2
🇲🇾 MYA-9AOXNMNWXWT9AV45125622026-05-09 19:2120:45:008320:15:0020:15:0012:54:30 UTC21:13:063485s (~58min)PAX_NO_SHOW_V2
🇲🇾 MYA-99K4TNOWXCUOAV29881652026-05-01 02:1303:30:007603:00:0003:00:0019:20:22 UTC03:45:422741s (~46min)PAX_NO_SHOW_V2
🇵🇭 PHILIPPINES
🇵🇭 PHA-9C96JE2GW6PRAV53362652026-05-21 17:4119:00:007818:15:0018:15:1010:42:21 UTC19:17:043713s (~62min)PAX_NO_SHOW_V2
🇵🇭 PHA-9BSI9PJWXALTAV66335172026-05-18 16:0517:30:008416:45:0016:45:0009:28:08 UTC17:46:053665s (~61min)PAX_NO_SHOW_V2
🇵🇭 PHA-9BP37COWWO2EAV13141962026-05-17 19:5121:15:008320:30:0020:30:0013:02:28 UTC21:30:263626s (~60min)PAX_NO_SHOW_V2
🇵🇭 PHA-9BNB6DGWX2PPAV89381142026-05-17 09:3911:00:008010:15:0010:15:0002:45:41 UTC11:17:013721s (~62min)PAX_NO_SHOW_V2
🇵🇭 PHA-9AQJ2FUGWUO9AV39641302026-05-10 10:0912:00:0011011:15:0011:15:0003:57:03 UTC12:17:183738s (~62min)PAX_NO_SHOW_V2
🇸🇬 SINGAPORE
🇸🇬 SGA-99VUSFFGWUD6AV9325992026-05-03 23:0100:30:008800:00:0000:00:0016:21:06 UTC00:45:292728s (~45min)PAX_NO_SHOW_V2
🇸🇬 SGA-9B42PJJGXABSAV59605142026-05-12 17:2718:45:007718:35:0018:35:0010:42:04 UTC18:50:12912s (~15min)PAX_NO_SHOW_V2
🇸🇬 SGA-99TOUKOWWKU2AV74257302026-05-03 10:1712:00:0010211:50:0011:50:0003:56:07 UTC12:06:30989s (~16min)PAX_NO_SHOW_V2
🇸🇬 SGA-9CGGN72WXCP4AV74067452026-05-23 12:1813:45:008613:35:0013:35:0005:41:23 UTC13:50:09909s (~15min)PAX_NO_SHOW_V2
🇸🇬 SGA-9BDNHSCWW4TTAV3192682026-05-15 01:3903:00:008002:30:0002:30:0018:51:53 UTC03:15:422742s (~46min)PAX_NO_SHOW_V2
🇹🇭 THAILAND
🇹🇭 THA-9AUFSM3WWWWGAV63639422026-05-11 07:5209:15:008208:30:0008:30:0002:09:57 UTC09:31:073667s (~61min)PAX_NO_SHOW_V2
🇹🇭 THA-9BRV7FLGX3W9AV75010752026-05-18 11:3613:00:008312:15:0012:15:0005:57:12 UTC13:16:093669s (~61min)PAX_NO_SHOW_V2
🇹🇭 THA-9A8KUDSW3W7XAV77155002026-05-06 00:3802:30:0011101:45:0001:45:0019:02:45 UTC02:45:233623s (~60min)PAX_NO_SHOW_V2
🇹🇭 THA-9CDWCE9WX3BFAV70888862026-05-22 14:5116:15:008315:30:0015:30:0008:57:08 UTC16:43:004379s (~73min)PAX_NO_SHOW_V2
🇹🇭 THA-9CIO3PJWXWSPAV81433492026-05-24 00:1801:45:008601:00:0001:00:0018:21:21 UTC02:00:173616s (~60min)PAX_NO_SHOW_V2
🇻🇳 VIETNAM
🇻🇳 VNA-9BPALVNW2G84AV37440882026-05-17 20:1321:30:007621:00:0021:01:3214:34:55 UTC21:51:393007s (~50min)PAX_NO_SHOW_V2
🇻🇳 VNA-9BXHN5KWX5C6AV77351042026-05-12 01:4103:00:007802:30:0002:30:0019:34:43 UTC03:15:072706s (~45min)PAX_NO_SHOW_V2
🇻🇳 VNA-99VOL4FGWKU2AV94967502026-05-03 20:5322:15:008121:45:0021:45:0015:02:30 UTC22:34:212960s (~49min)PAX_NO_SHOW_V2
🇻🇳 VNA-9C6XJ62GWSERAV82219022026-05-20 22:1723:45:008723:15:0023:15:0016:15:07 UTC00:00:062706s (~45min)PAX_NO_SHOW_V2
🇻🇳 VNA-9AAMOJ5GXDFQAV70608742026-05-06 12:3714:00:008213:30:0013:30:0006:43:56 UTC14:15:102710s (~45min)PAX_NO_SHOW_V2

⚠️ Driver Arrived is stored in UTC in the raw table. All other timestamps are local time. SG no-show window is noticeably shorter (~15min) vs other markets (~45–73min).

2 Failed Allocation — Driver Invalid State Only (1–2h bucket)

A driver signed up for the JB but was disqualified at the T−30min pre-award check specifically due to Invalid State (PreAwardCheckFailDriverInvalidState). Bookings where Offline/Unavailable or Too Far were also present for any driver are excluded.
Timeline: Booking Created → Driver Signs Up → Allocation Broadcast (T−30min) → Pre-Award Check: Driver Invalid State → Booking fails (no replacement found)
⚠️ This is a very rare failure mode: only MY, TH, VN have booking-level failures with a pure Invalid State signal across Apr–May 2026. ID, PH, SG have zero such cases — when Invalid State fires in those markets, another driver always recovers the booking.

Market Last Booking Code ✓ JB Booking Code Driver ID Booking Created Scheduled Pickup Lead (min) Alloc Broadcast (T−30) Award Failure Reason State
🇮🇩 INDONESIA  ·  No pure Invalid State booking failures found in Apr–May 2026 — when Invalid State fires in ID, another driver recovers the booking
🇲🇾 MALAYSIA
🇲🇾 MYA-99BE7OAWWGVCAVsame69918932026-04-28 23:2901:30:0012001:00:00Invalid StateCANCELLED_PRE_ALLOC
🇲🇾 MYA-9CH9A46GWDK5AVsame82655552026-05-23 16:4618:15:008817:45:00Invalid StateCANCELLED_PRE_ALLOC
🇵🇭 PHILIPPINES  ·  No pure Invalid State booking failures found in Apr–May 2026 — when Invalid State fires in PH, another driver recovers the booking
🇸🇬 SINGAPORE  ·  No pure Invalid State booking failures found in Apr–May 2026 — when Invalid State fires in SG, another driver recovers the booking
🇹🇭 THAILAND
🇹🇭 THA-95QD7SKGWQR7AVsame75613602026-04-01 12:0113:30:008813:00:00Invalid StateUNALLOCATED
🇹🇭 THA-95QINTQGW34VAVsame89520272026-04-01 13:0114:30:008814:00:00Invalid StateCANCELLED_PRE_ALLOC
🇻🇳 VIETNAM
🇻🇳 VNA-967COO4WWX3SAVsame15001732026-04-04 15:4017:00:007916:30:00Invalid StateCANCELLED_PRE_ALLOC
🇻🇳 VNA-9BNPT3DWWMQ8AVsame82550522026-05-17 11:2013:15:0011412:45:00Invalid StateUNALLOCATED

✅ All samples verified against ocd_adw.f_transport_advance_jobboard: award_failure_reason = 'PreAwardCheckFailDriverInvalidState' exclusively, with no Unavailable or TooFar events on the same booking. Data scope: Apr 1 – May 28 2026. The generic cancel_reason = 'Cancel before allocation' in the raw booking table is the same for all pre-award failure subtypes; the exact sub-reason is only visible in the JB events table.

3 Fallback DAX Post-Allocation Cancel (1–2h original JB)

The original JB driver cancelled → system created a fallback booking → a new driver was allocated to the fallback → that fallback driver also cancelled, often within seconds. Timeline: JB Created → JB Driver Cancels → Fallback Created → Fallback Driver Allocated → Fallback Driver Cancels

🔴 Pattern Alert: Many fallback cancels happen within 2–15 seconds of allocation using ACCEPTED_IN_ERROR_FREE_CR — a penalty-free cancel reason. This is a strong signal of cancel-penalty evasion: drivers accept then immediately cancel with no financial consequence.
Market Fallback Code (Last = ✓) Original JB Code JB Created Sched. Pickup JB Lead (min) JB Alloc Check FB Created FB Driver Allocated FB Driver Cancelled DAX secs post-alloc JB Cancel → FB Cancel Reason
🇮🇩 INDONESIA
🇮🇩 IDA-9AIRE5AWXFMFAVA-9AIITQ8GWSM7AV2026-05-08 10:3112:30:0011811:35:0012:04:4612:05:2412:22:171013s (~17min)ACCEPTED_IN_ERROR → TOO_MANY_PAX
🇮🇩 IDA-9CO4H7NGWB9NAVA-9COWIPEWW72DAV2026-05-25 06:5808:15:007607:35:0307:41:2307:41:4207:57:21938s (~16min)ACCEPTED_IN_ERROR → ACCEPTED_IN_ERROR
🇲🇾 MALAYSIA
🇲🇾 MYA-9BVVSQPGWBMVAVA-9BVQSOCGX6XJAV2026-05-19 11:0712:30:008212:00:0012:02:0712:02:3912:05:20161s (~3min)NOT_ENOUGH_TIME → NOT_ENOUGH_TIME
🇲🇾 MYA-9B82RR2GW6LRAVA-9B7TKOFWX72NAV2026-05-13 15:4817:15:008616:45:0016:45:5616:46:0616:46:114s ⚡NOT_ENOUGH_TIME → ACCEPTED_IN_ERROR_FREE_CR
🇵🇭 PHILIPPINES
🇵🇭 PHA-9AQRC65GX65TAVA-9AQN4OWWXXFKAV2026-05-10 10:5412:15:008011:40:0611:40:1811:40:5111:40:575s ⚡ACCEPTED_IN_ERROR_FREE_CR → ACCEPTED_IN_ERROR_FREE_CR
🇵🇭 PHA-9ARPGO3WWI5FAVA-9ARLTJAWX6JSAV2026-05-10 16:3017:45:007417:00:0017:09:3217:09:3517:09:5015s ⚡ACCEPTED_IN_ERROR → ACCEPTED_IN_ERROR_FREE_CR
🇸🇬 SINGAPORE
🇸🇬 SGA-9BCGUOJGWDU4AVA-9BC9RJVWX8SDAV2026-05-14 17:2018:45:008418:35:0018:37:5718:38:3718:39:0224s ⚡PROBLEM_CONTACT_CUSTOMER → PROBLEM_CONTACT_CUSTOMER
🇸🇬 SGA-9A2OILBGW6L9AVA-9A2J9BUGWAOUAV2026-05-04 14:2315:30:006615:20:0015:21:0815:23:4915:25:0777sPROBLEM_CONTACT_CUSTOMER → PROBLEM_CONTACT_CUSTOMER
🇹🇭 THAILAND
🇹🇭 THA-9C774T8GWGF7AVA-9C6VSAEWX25EAV2026-05-21 03:4805:15:008604:30:0005:08:0005:08:2105:08:286s ⚡ACCEPTED_IN_ERROR → ACCEPTED_IN_ERROR_FREE_CR
🇹🇭 THA-99UV67TGXBB9AVA-99UR8XXGW6TOAV2026-05-03 15:3217:00:008716:15:0016:25:1516:25:2016:25:243s ⚡ACCEPTED_IN_ERROR_FREE_CR → ACCEPTED_IN_ERROR_FREE_CR
🇻🇳 VIETNAM
🇻🇳 VNA-9CHFGRLWW5JVAVA-9CH8MU6GXEPVAV2026-05-23 15:4017:15:009416:45:2816:54:4316:55:0216:55:042s ⚡ILLEGAL_PICKUP → ACCEPTED_IN_ERROR_FREE_CR
🇻🇳 VNA-9AWAQHOWX2SAAVA-9AW4KX9WWMHLAV2026-05-03 23:0400:30:008500:01:2700:11:5200:16:1900:16:256s ⚡ACCEPTED_IN_ERROR_FREE_CR → ACCEPTED_IN_ERROR_FREE_CR

⚡ = fallback cancel within 15 seconds of allocation — strong indicator of cancel-penalty evasion via ACCEPTED_IN_ERROR_FREE_CR. All timestamps local time. Scope: 1–2h Non-airport Normal AB, May 1–25 2026.