Case study 10 · Pricing · Real data

Pricing a commute

What should a seat in a shared car cost for a daily commute in Lagos? I researched what a journey really costs the car owner, turned it into a per-seat pricing model with the engineering team, and checked it against every route published on the platform since relaunch.

Role
Data Consultant, with the engineering team
Data
Conductor published trips (aggregated, no personal data) and public fuel prices
Methods
Cost build-up, journey-time sampling, benchmark calibration, distribution analysis
Tools
SQL (PostgreSQL), TypeScript model, Chart.js

Situation

Conductor, a Lagos commuter carpooling platform, was relaunching and needed a price for every route a driver publishes: one fare per seat that holds all week.

Task

The co-founders asked me to work out what a seat should cost, so drivers cover their real costs and passengers pay clearly less than a solo ride.

Action

Built the fare up from researched costs (fuel, maintenance, the driver's time and traffic delay), split the car's costs across its seats, and proposed the rule that calibrates it against ride-hailing.

Result

The Trip Fare Pricing Model prices every route published on Conductor. Across the published routes, fare per seat per km sits in a tight band, and the driver's time, not distance, is the largest part of the fare.

The problem

Conductor is a Nigerian commuter carpooling platform. A driver who already makes the same journey to work every weekday publishes the route, and passengers going the same way book a seat for the week. The driver isn't a taxi. They are a car owner sharing the cost of a trip they would make anyway.

That makes pricing a different problem from ride-hailing. There is no surge, no bidding and no per-trip haggling. The price has to be set once, when the route is published, and hold for every day of the week. It has to be high enough that a driver feels it is worth picking people up, and low enough that a seat is clearly cheaper than a solo ride. The co-founders asked me to work out how to price it, and I researched and built the Trip Fare Pricing Model with the engineering team.

The research: what a commute really costs

I started from the car owner's side and asked what one journey actually costs them. Four things matter.

  1. Fuel. Litres used (the car's fuel economy times the distance) times the pump price. Petrol prices vary by state, so the model looks up the price for the state the trip starts in, with a small buffer for idling and detours.
  2. Maintenance. Tyres, servicing and wear, expressed as naira per kilometre for the vehicle type. It is a real cost that owners tend to forget when they price a lift.
  3. Driver time. The driver's time is paid per minute. The "no-traffic" minutes come from distance times a typical city pace, so a driver is paid fairly for the kilometres covered.
  4. Traffic delay. Lagos traffic can double a journey. Any minutes above the no-traffic baseline are charged at a lower rate than the base rate, so passengers share the cost of gridlock without paying full rate for it.

The tricky input is journey time. One quote from a maps service at one moment is a poor guide to a route people drive every weekday. So the model samples the route's journey time on about five weekdays and combines them as (average + maximum) ÷ 2. That leans towards the slower days, because commuters remember the bad ones. It also drops the slowest sample if it is more than 1.5 times the median, so one accident or flood doesn't inflate the price for the whole week.

Why price per seat, not per car

The running costs of the car (fuel, maintenance and a small flat base fare) are split across all of its seats. The driver's time is charged to each passenger. That has two useful effects. A passenger's price doesn't jump when a seat is left empty, because the shared costs are divided by the car's capacity, not by how many seats were booked. And the driver earns more as the car fills, which is the behaviour the platform wants.

Finally, the rates were calibrated rather than guessed. I proposed the rule: four passengers together should pay about 1.10 times what one ride-hailing car would charge for the same trip, with a ceiling on what four passengers pay on a canonical Lagos commute from Ikorodu to CMS. That puts a single seat at roughly a quarter of a solo ride. This is the calibration rule the rates were tuned to, not a set of observed competitor quotes.

Fare per seat against distance, every route published since relaunch Real data
routes shown
median fare per seat per km
middle half of routes (IQR), per km
range of fare per seat

One dot per published route, September and October after relaunch. Colour shows the vehicle's capacity and whether any seats were closed to booking. Fares are the ride fare per seat, before the service charge and VAT added at booking. Hover a dot for its details.

What the published fares show

Fare per seat rises almost in a straight line with distance, from around on the shortest routes to on the longest. Switch to fare per kilometre and the picture is the one I wanted: for 4-seat cars the middle half of routes sits between per km, even though the routes range from .

Two patterns explain the spread that is left. Short trips cost a little more per km, because the flat base fare is spread over fewer kilometres. And the handful of minivans and buses (6, 7 and 13 seats) sit well below the band. Their running costs are shared across many more seats, so each passenger pays less per km. (Cars with a seat or two closed sit inside the band, because the shared costs are still divided by the car's full capacity.) That is the model working as designed, but it also means buses deserve their own rate card (more on that below).

Average share of the fare by component Real data
time on the road (driver time + traffic)
running the car (fuel + maintenance)
flat base fare share, under 20 km
flat base fare share, 35 km and over

Each trip's components as a share of its total fare, averaged within each distance band. Bars show the share; hover for the band's trip count.

The breakdown is the clearest lesson from the model. Time on the road drives the fare more than distance does. The driver's time plus the traffic surcharge make up of the average fare, against for fuel and maintenance together. Fuel, the cost everyone talks about, is only about a fifth. Strictly, the no-traffic minutes are themselves derived from distance, so the precise reading is that paying for the driver's time costs more than running the car.

That has practical consequences. A fuel price rise moves fares much less than people expect, and the rate per minute is the lever that matters most when the model is recalibrated. As trips get longer, the flat base fare fades from to of the fare and the time share grows.

Price a commute with the model Real model
ride fare per seat, per day
per seat per km
driver's total for a full car
of the fare is time on the road

The formula and constants are the model's own: a flat base fare and the car's running costs split across all seats, plus driver time and a traffic surcharge per passenger. Fuel economy and maintenance use the most common values among published cars. Moving the distance resets the no-traffic time to the city pace. The ride-hailing figure is implied by the calibration rule, not a live quote.

Model inputValue used
Flat base fare per vehicle (split across seats)₦1,200
Driver time per passenger, per minute (after the economy-class adjustment)₦30.60
No-traffic city pace1.6 min/km
Traffic minutes charged at40% of the base rate
Fuel economy / maintenance (typical car)8 L per 100 km / ₦125 per km
Fuel buffer / economy-class adjustment on running costs+4% / ×0.85

These are the settings implied by the published trips, which I checked by solving each trip's components back to its inputs. They differ from some written defaults (for example a 50% traffic rate in the original design), because the rates were recalibrated several times before relaunch.

Caveats

Charts on this page use real, aggregated data from Conductor: one row per published route, with no rider or driver information, locations or identifiers.

Skills shown

Pricing modelsCost researchCalibrationSQLDistribution analysisData-quality auditsWorking with engineers