← Back to Case StudiesMobility

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.

IndustryMobility
AvailabilityWhite-Label / Custom Deploy
TeamCore Product Team
EngagementProprietary Product

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
Built for real dispatch problems, not just a feature checklist — matching engineered at the architecture level.

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.

Rider AppFlutterDriver AppFlutterAPI GatewayKUBERNETES — DEPLOYED INDEPENDENTLY PER REGIONMatching EnginePricing EngineRedisLive Driver LocationPostgreSQLTrips, Fares, Users

System architecture — request path, services, and data flow

0Faster Driver Matching
0More Completed Trips
0New Regions in 6 Months
0Average Dispatch Latency

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.

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.