Taxi Booking Platform
LaunchPad's own real-time dispatch and dynamic fare engine — sub-two-second driver matching built for taxi and ride-booking networks, ready to deploy under your own brand.
The Problem
We kept seeing the same problem across mobility engagements: dispatch stuck in semi-manual, call-center-driven workflows, fixed fares regardless of demand, and no live visibility for riders or drivers. As networks grew past their home region, wait times climbed and driver utilization dropped — the coordination model simply didn't scale.
The specific technical failure was almost always the same: a single dispatch process trying to match drivers across an entire metro area (or worse, multiple cities) without geospatial indexing, meaning matching time grew with the total number of active drivers instead of staying flat as the network grew. Fixed pricing meant no lever to balance supply and demand during surges, so wait times spiked exactly when the network needed to incentivize more drivers onto the road.
System Architecture
The core design decision was separating driver-rider matching from fare pricing into two independently scaled services, both running on Kubernetes with regional isolation — each geographic region gets its own deployment, so a new city launch or a traffic spike in one region can't degrade dispatch in another.
Driver location updates stream into Redis continuously — the Matching Engine reads from that live in-memory index rather than querying PostgreSQL, which is what keeps matching under two seconds even with thousands of active drivers in a metro area. The Pricing Engine independently reasons about the same supply signal (driver density) plus historical demand patterns to compute fare multipliers, then hands the result back through the gateway. PostgreSQL stays the durable system of record for completed trips, fares, and user data, but never sits in the critical path of an active match.
Technology Stack
- Flutter — one codebase for both rider and driver apps, chosen because neither app needs platform-specific capability that would justify separate native builds
- Python — the Matching and Pricing Engines, chosen for its strength in geospatial and numerical computation, which is most of what these two services actually do
- Kubernetes — regional isolation for the dispatch and pricing services, so scaling or launching a new region is a deployment, not a re-architecture
- Redis — the live driver-location index that makes sub-two-second matching possible, updated continuously rather than polled from a slower durable store
- AWS — regional infrastructure, with each Kubernetes cluster mapped to a geographic market
Quantifiable Impact
Businesses running on the Taxi Booking Platform get sub-two-second driver matching and dynamic fare logic from day one. In one deployment, average driver matching time dropped 40% after launch, completed trip volume rose 22% as riders experienced more consistent wait times, and the architecture's regional isolation allowed expansion into three new regions within six months — each onboarded without disrupting existing markets.
System architecture — request path, services, and data flow
Questions
Frequently Asked Questions
How does dynamic fare pricing work on this platform?
The fare engine calculates price in real time based on driver availability, demand, and traffic conditions, rather than a fixed per-mile rate — the same demand-aware pricing model used by major ride-booking networks.
Can the platform expand into a new city or region without a rebuild?
Yes. Kubernetes-based microservices give each region independent scaling and regional isolation, so a new market launch doesn't touch or risk disrupting existing markets — one deployment added three new regions in six months this way.
What's the typical driver-matching speed?
The geospatial dispatch engine targets sub-two-second driver matching, with one deployment cutting average matching time by 40% after launch.
Why is matching and pricing split into separate services?
They scale differently and fail differently — a pricing recalculation shouldn't block a driver match that's already ready to confirm. Splitting them means a slowdown in one doesn't cascade into the other.
More Case Studies
Ready to Build Something Exceptional?
Whether you need a complete software solution or a dedicated development team, let's turn your next idea into a scalable digital product.