Icon

GoGoX_​FulfilmentRisk1

<p><b>Problem</b><br>Many GoGoX bookings are cancelled because no driver ever accepts them, so GoGoX earns nothing on them.</p><p><b>What it answers</b><br>At the moment a booking is made, how likely is it that no driver will ever accept it? XGBoost scores each booking from 14 inputs known at booking time and flags the riskiest 20% (cut-off fixed on May). Problem A: in which weekday-hour periods are bookings lost, and what is closing that gap worth? Problem B: does any driver action (R1 S$1 completion credit, R2 van push, R3 book-ahead prompt) pay for itself, and what should GoGoX do with the risk score (van offer, surcharge, step-up pay, bundling)? Model 2 (step 9b) predicts which free driver nearby will take a job.</p><p><b>How to use</b><br>Reset, then Execute all. Read steps 1 to 10 from left to right; step 9b (the driver model) sits below them.</p><p><b>Where the results go</b><br>Nothing is written to disk. Step 10 shows the results in six interactive views: 10A answers in words, 10B when bookings are lost, 10C the check of model 1, 10D what to do with the risk score (van offer, Friday-evening and night surcharge, step-up pay), 10E bundling and 10F the check of model 2, the driver model (May decides, June checks). Open a view to read it or to save its picture.</p><p><b>Data</b><br>GoGoX's booking export (one row per booking attempt, January to June 2026) and URA's Master Plan 2014 subzone boundaries. January to April trains the model, May chooses the inputs, the cut-off and the actions, June tests them once.</p>

GoGoX_FulfilmentRisk: which bookings will no driver accept?

Predicts, at the moment a booking is made, how likely it is that no driver will ever accept it. XGBoost learns from January–April on 14 inputs known at booking, is chosen on May and is tested once on June. Read steps 1 to 10, then 9b; double-click a step to see its nodes.

Colours: orange = read data; yellow = prepare data and build inputs (steps 2 to 4: cleaning, transformation and feature engineering); purple = explore the data; lime = train and validate; red = evaluate; teal = Problem A (when bookings are lost); green = Problem B (actions); grey = results.

How to run: Reset, then Execute all. Then double-click step 10 and open the six result views 10A to 10F (select a view and click Open in new window). Nothing is written to disk.

1 Read data

Reads GoGoX's booking export and URA's subzone map from the workflow's data folder and profiles the raw bookings; the 25 hand-matched area names are a table typed into the workflow. Sends the bookings to step 2, and the map and the names to step 3.

2 Clean data

Takes the raw bookings, drops active and duplicate bookings and pickups before booking or more than 30 days ahead, sets blank tips and bonuses to 0 and marks the target (never matched). Sends clean bookings to step 3, and the rows each rule removed or filled to step 10.

3 Add area details

Takes the clean bookings, the URA map and the 25 names, adds each pickup's URA planning area and region, and works out a centre point for every area name. Sends the bookings and the centre points to step 4.

4 Build model inputs

Takes the bookings and centre points from step 3, adds the bands and keys the analysis groups by, and completes the 14 inputs known at booking (five were made in step 2). Sends one row per booking, in a fixed order, to steps 5, 6, 8 and 10.

5 Explore the data

Takes the model table from step 4 and charts the never-matched rate by vehicle, lead time and weekday × hour, the outcome split, prices and the weekly trend, with chi-square tests for vehicle and booking type. Its views justify the target, the inputs and the split by month; no table flows on.

6 Train and validate

Takes the model table from step 4, splits it by month (train January–April, choose on May, test on June), trains XGBoost and checks it with 5-fold cross-validation. Sends the month tables and the model to step 7, the training months to step 9 and the fold results to step 10.

7 Evaluate on May and June

Takes the month tables and the model from step 6, scores May and June with XGBoost, a Random Forest and a vehicle-only rule, and fixes the flag cut-off on May before June is scored. Sends flagged May and June bookings to step 9, and the AUCs, cut-off, risk fifths and SHAP ranking to step 10.

8 Find when bookings are lost

Takes the model table from step 4 and finds the weekday-hour periods that lose more bookings than a healthy level GoGoX already reaches (Problem A). Sends those periods and the value of closing the gap to step 10.

9 Cost the actions

Takes the training months from step 6 and the flagged May and June bookings from step 7, aims R1 driver credit, R2 van push and R3 book-ahead prompt at flagged bookings in unhealthy periods (Problem B) and costs each per month, valuing a rescue at the take rate of completed bookings. Sends the options, the what-ifs and the costed bookings to step 10, where May decides and June checks.

10 Show results

Takes the results of steps 2 to 4 and 6 to 9b and shows them in six interactive views: 10A answers in words, 10B when bookings are lost, 10C the check of model 1 (the booking risk), 10D what to do with the risk score (van offer, Friday-evening and night surcharge, step-up pay), 10E bundling and 10F the check of model 2 (the driver model). May decides, June checks. Nothing is written to disk.

9b Driver acceptance model (model 2)

Takes the model table from step 4 and the centre points from step 3. For each booking it finds the drivers who were probably free nearby, and XGBoost learns from January to April which of them took the job; May and June are scored once. Sends the scores, folds, SHAP and coverage to step 10 (views 10D and 10F).

8 Find when bookings are lost
7 Evaluate on May and June
9b Driver acceptance model
9 Cost the actions
10 Show results
2 Clean data
1 Read data
4 Build model inputs
3 Add area details
6 Train and validate
5 Explore the data

Nodes

Extensions

Links