BetterTaxi: Set Up Your Fleet

Configure service classes, the vehicle catalog, pricing, dispatch, and operating area in the dashboard.

Last updated Oct 1, 2026

Every taxi configuration screen lives in the dashboard, under the Taxi & rides group and Configuration in the sidebar. The onboarding wizard collects your Operation Area — the list of cities you plan to run in, capped by your plan's locations limit — and everything below builds on it.

If you haven't picked your cities yet, do that first in Owner Dashboard → Onboarding → Operation Area. Then come back here.

What you're actually configuring

ConceptWhere it lives in the dashboardWhat it is
Service classTaxi → Pricing → Service classesA bookable tier (Economy, Premium, XL). Carries pricing parameters and driver/vehicle eligibility rules.
Vehicle catalogTaxi → VehiclesThe makes, models, and colors drivers can pick from. Distinct from individual vehicles registered to drivers.
Pricing rulesTaxi → Pricing, the other tabsZone fares, group fares, surcharges and time bands that layer on top of a service class.
Dispatch rulesTaxi → Dispatch rulesHow driver offers are sent (broadcast vs. sequential) and how candidates are scored.
Regions and zonesConfiguration → RegionsGeographic regions and their zones, each drawn on a map. Used by pricing rules and dispatch.
Map starting pointConfiguration → Regional SettingsWhere maps open when a person's location isn't known.

The Drivers section is its own surface — see Onboard Drivers.

Step 1: Create your service classes

Open Taxi → Pricing. The Service classes tab shows your existing classes; click New service class to create one.

The form is divided into these sections.

Basic info

FieldNotes
ImageOptional; shown to passengers when picking a tier. Pick a catalog vehicle in your colour, or upload your own.
Map markerHow drivers of this class appear on every map.
Namee.g. "Economy".
DescriptionShort blurb shown in the app.
PositionSort order in the picker — lower numbers appear first.
SeatsInteger seats.
ActiveToggle to hide a class without deleting it.
Available for deliveryLets the class be matched to package deliveries as well as rides.

Regions

A class is only offered where it is linked. Tick the regions it should be bookable in — an unlinked class never appears in a quote.

Pricing

The economics are pricing-mode-aware. Amounts are in your workspace currency, and percentages are entered as percentages — 20 means 20%.

  • Pricing mode — Fixed (predetermined fee, no driver submission) or Metered (driver submits the final fee at end of ride). Source: backend/crates/taxi/domain/src/services/pricing_mode.rs.
  • Fee policy — accept any fare, warn if out of range, or reject if out of range.
  • Payment timing — authorize before dispatch, charge after the ride, or decide per ride.
  • Base fare, Per km, Per minute, Booking fee, and Waiting, per minute.
  • Minimum / Maximum fare — optional absolute bounds.
  • Lower bound / Upper bound — the accepted fare range, against the estimate.
  • Authorization — the share of the maximum fare to hold before dispatch.

Settings

  • Passenger confirmation window and Driver fee window — seconds.
  • Platform commission — a percentage.
  • Commission flat fee — applied on top of the percentage.

Eligibility

This section controls which drivers can take rides for this service class. Driver matching has two modes (backend/crates/taxi/domain/src/services/eligibility_mode.rs):

  • Dynamic — drivers automatically qualify if they meet the criteria below.
  • Manual — only drivers explicitly included in this class qualify. You include a driver from their own page, on the Eligibility tab. INCLUDE / EXCLUDE overrides in taxi.driver_service_class layer on top either way.

In Dynamic mode, the editor exposes:

  • Vehicle — maximum vehicle age (years), allowed makes, models and colours, body types, size classes, fuel types, minimum seats, minimum doors. Leave any field empty to skip that requirement.
  • Driver — minimum rating (out of 5), minimum completed rides, minimum acceptance rate (last 30 days), maximum cancellation rate (last 30 days), minimum driver tier, and an optional driver-gender filter. Use the gender filter sparingly — only for legally permitted gender-restricted services.
  • Customer — the minimum customer tier (Unverified / Basic / Verified / Premium) the passenger must hold, and a VIP eligible toggle for the driver.
  • Compliance — documents in date, photo verified, background check passed, and a multi-select of Certifications that points at the catalog you manage in Configuration → KYC Policies → Certifications.

Step 2: Curate the vehicle catalog

Taxi → Vehicles has three tabs: Makes, Models, and Colors.

Each list mixes two row types:

  • Global rows seeded by the platform — every workspace sees them. You can't edit a global row, but you can Hide it so it stops showing up to drivers picking a vehicle. Hidden rows can be brought back with Unhide.
  • Yours rows — makes / models / colors you've added for your workspace. These are editable and deletable.

Under Catalog preferences you can turn a whole platform list off, to offer drivers only the entries you add yourself.

Add a custom make with New make. Models live under their make and carry the specifications service classes match drivers on (body type, size class, fuel, seats, doors); colors are flat.

This catalog is what drivers (and the New driver form in the next article) pick from when registering a vehicle. It does not track individual vehicles or vehicle approval — that happens implicitly when a driver is approved (see Onboard Drivers).

Step 3: Define pricing rules (optional)

Back on Taxi → Pricing, the other tabs let you layer zone-specific fares on top of a service class:

  • Zone fares — a fixed price for trips from one zone to another. It replaces the distance and time price for those trips.
  • Zone groups — named sets of zones in a region.
  • Group fares — a fixed price for trips between two zone groups. A zone fare for the same trip wins over a group fare.
  • Surcharges — an extra charge for trips that start or end inside a zone, such as an airport.
  • Time bands — days and hours, such as nights or weekends, that fares and surcharges can be limited to.

Zones themselves come from Configuration → Regions, where each region carries a boundary drawn on a map and its own list of zones. Each operating city gets a region with a circular boundary automatically; redraw it to match the area you actually serve. You add zones to a region before you can reference them in a fare.

Step 4: Configure dispatch

Open Taxi → Dispatch rules. Dispatch settings are held in configurations. One is enough to run; with several you can split new rides between them and compare how drivers and passengers respond. Open a configuration to edit its settings — saving starts a new version, and every earlier version can be restored.

Strategy

  • Broadcast — send requests to multiple drivers at once, in waves.
  • Sequential — send requests to one driver at a time, in order.

General

FieldUnit
Request Timeoutseconds
Initial Search Radiusmeters (where the search starts)
Maximum Search Radiusmeters (hard ceiling)
Radius Expansionstep in meters, interval in seconds, and a maximum number of steps

Broadcast Settings (when Broadcast is selected)

FieldUnit
Wave Sizedrivers per wave
Wave Intervalseconds between waves
Max Wavestotal waves
Radius increase per wavemeters added per wave

Sequential Settings (when Sequential is selected)

FieldUnit
Per-Driver Timeoutseconds
Maximum drivers to trydrivers
Driver Retry Limittimes

Fallback

Optionally try the other strategy when the first finds no driver.

Driver Scoring Weights

Values between 0 and 1 for Distance, Driver Rating, Idle Time, and Cancel Rate, plus an optional Minimum score and a "consider only the best N drivers" limit.

Passenger policy

A separate section for per-customer-tier rules:

  • Free waiting (seconds) — per tier; how long the driver waits at pickup before billable charges start.
  • Booking radius after a no-show (meters) — per tier.
  • Automatic rebooking when a driver cancels — Off, or a minimum tier. If a trip drops and the passenger is at or above this tier, the system automatically attempts to re-match.

Save settings writes the configuration as a new version.

Step 5: Set the map starting point

Configuration → Regional Settings has a Map starting point — where maps open when a person's location isn't known. This is a per-workspace preference, not a per-class one.

What we don't have (so you don't go looking)

A few capabilities that the previous version of this article suggested exist, but don't:

  • No single workspace-wide service-area polygon. Boundaries are drawn per region in Configuration → Regions.
  • No "Test mode vs. live mode" toggle. There's a per-workspace is_demo flag that gates demo affordances in the driver/passenger apps, but it's set at workspace provisioning, not flipped from the operator UI.
  • No vehicle approval queue. Individual vehicles aren't approved separately — they're attached to a driver and reviewed as part of the driver's approval (see the next article).
  • No "surge multiplier" field on service classes. Demand-shaping is done through pricing rules and dispatch scoring.
  • No dispatch-health view. It was part of the retired ops console app. The Performance section of Taxi → Dispatch rules shows how each configuration is doing.

Suggested order on day one

This is advisory — not enforced by the product:

  1. Set your operation cities (onboarding).
  2. Check the Region created for each city in Configuration → Regions, and redraw its boundary to cover your service area.
  3. Create at least one Service Class in Dynamic mode with sensible defaults, linked to that region.
  4. Save Dispatch settings. The defaults suit a small fleet. If drivers are sparse, raise the Initial Search Radius so the first round already reaches them, rather than only the maximum — the maximum is a ceiling the search grows toward, not where it begins.
  5. Move on to driver onboarding.

How the search widens

A request starts at the Initial Search Radius and widens by the expansion step at each interval, never past the Maximum Search Radius. If the fully widened search still finds nobody, dispatch makes one last round with no distance limit before cancelling, so a tight ceiling cannot strand a booking that a nearby-ish driver would have taken.

Drivers also set their own pickup radius in the driver app. Both have to accept: a driver 8 km away is inside a 10 km workspace radius, but not inside their own 5 km preference, and will not be offered the ride. A driver who sets no radius has no limit of their own.

What's next

  • Onboard Drivers — invite, verify, and approve the people who'll drive for this fleet.
  • Plans & Billing — your plan's locations limit caps how many cities you can register in Operation Area.
  • Dashboard Tour — the whole sidebar, in case you're hunting for a setting you remember seeing elsewhere.