Uber Ride Analytics — Where the Money Leaks

Fifteen thousand ride bookings across Delhi NCR in 2024. The operation looks healthy until you count the bookings that never carried a passenger. This is the dashboard we build in Lecture 15 and interrogate in Lecture 16 — the same aggregations you will write by hand in Lecture 14, and the same numbers you will recompute in Redis in Lecture 18.

bdma.rides Delhi NCR · 2024 15,000 bookings —
The headline numbers
Total bookings — Every booking request placed in 2024
Completion rate — —
Failure rate — —
Estimated lost revenue — —
Revenue realised — —
Avg booking value — Completed rides only
Avg ride distance — Across all completed trips
Avg time to arrive — VTAT — vehicle time to arrive at pickup
Avg driver rating — —

The pipeline behind these numbers

Every KPI above comes from this single pass over the collection. In Atlas Charts each one becomes its own Number chart sharing this query. Rebuild the whole dashboard in Atlas Charts →

Where bookings end up

Booking status mix

Every booking resolves to exactly one of five outcomes. Only the green slice earns revenue.

Four in ten bookings fail. Driver cancellations alone are nearly three times the size of customer cancellations — which moves this from a demand problem to a supply problem.

Why bookings are cancelled

Driver-side reasons, ranked. These are the cancellations the business can actually act on.

Demand across the day

Hourly booking volume and failure rate

Bars show booking volume against the left axis; the amber line shows the share of those bookings that failed, against the right axis. The teal bar is the busiest hour, the red bar is the worst hour.

Busiest hour Worst failure rate among high-volume hours Failure rate (%)

The guard that makes the hourly chart honest

Rank the same hours by failure rate with no volume floor and 03:00 tops the table at 43.48% — on 46 bookings for the entire year. One stage repairs it.

The year in shape

Monthly bookings and revenue

Volume against the left axis, realised revenue against the right. Watch for months where the two lines disagree — that is a completion-rate problem, not a demand problem.

Revenue tracks volume closely across the year. That is the expected pattern, and it tells you the leak is structural rather than seasonal — it is present every single month, so there is no quarter to blame it on.
Product and payment mix

Revenue by vehicle type

Revenue first, completion rate second. The two do not rank the same way.

Premier Sedan earns the most revenue on a third of Go Sedan's volume. High-value products deserve disproportionate attention when a ride fails, because each failure costs roughly twice as much.

Payment method mix

How completed rides were paid for. Share of completed bookings.

UPI is the default and cash is far from dead. A quarter of completed rides still settle in cash, which constrains any pricing or refund mechanism that assumes a card on file.
Vehicle performance detail

All vehicle types

Completion rates below the fleet average of 62.29% are flagged in amber.

Vehicle type Bookings Completion Avg value Avg km Revenue
Pickup locations

Top pickup points by volume

Cancellation rates at or above 33% are flagged. Transport hubs generate the most demand and lose the most of it.

Pickup location Bookings Cancelled Cancel rate Revenue
The three biggest pickup points are all transport hubs — a metro-adjacent office cluster, an airport and a railway station. They also carry the highest cancellation rates, which is where a targeted driver-incentive pilot would start.
Customer-reported cancellations

Why customers cancel

Smaller in volume than driver cancellations, but more diagnostic — these are the complaints customers choose to record.

The top two customer reasons are both service-quality signals, not changes of mind. “Driver is not moving towards pickup location” and “AC is not working” together describe a driver who has accepted a ride they did not want.
About this dashboard

How it was built

Every figure on this page comes from an aggregation over bdma.rides. In Lecture 14 you write those pipelines by hand; in Lecture 15 you rebuild this view in MongoDB Atlas Charts; in Lecture 16 you turn it into a recommendation; and in Lecture 18 you compute the same numbers in Redis at write time instead of read time.

The dataset is seeded and reproducible. Run node data/generate_uber_dataset.js from the repository root and you will get these exact numbers — which means the figures quoted in the lecture notes always match what you see here.