Work/ Lift Mate

Airport sedan bookings that don’t die in a quote email

A limo and shuttle desk was quoting by hand, then retyping the same trip into a booking. We built quote and reservation as one flow — cars, drivers, add-ons, and pay.

Client
Lift Mate
Year
2024
Role
Reservation platform
Result
Quote to confirmed trip in one path
Airport sedan bookings that don’t die in a quote email

The problem

Airport sedan, shuttle, and limo work is simple until it isn’t: surge windows, add-ons, affiliates, a driver who has to be assigned, a customer who started with “just a quote.” The public site and the back office were two stories. Quotes aged in inboxes. Confirmed trips hid in another list.

The approach

We made “Get a quote” and “Make a reservation” the same product with different intent. Cars, drivers, customers, discount codes, and surges share one admin. The customer never re-enters a trip the desk already priced.

The solution

A Nuxt 3 front with a Node API: reservation create/update/detail, driver assignment, add-ons, affiliates, and payment through PayPal and Braintree. Roles and permissions for who can touch which list. Static pages and config for the marketing skin without forking the app. Socket updates when a trip changes status so the desk isn’t refreshing to see if the driver accepted.

The result

A quote is a reservation that hasn’t been confirmed yet — not a parallel spreadsheet. The same cars and drivers the customer sees are the ones the desk assigns. Payments and refunds sit on the trip, not in a separate merchant tab someone might forget.

Next

Have a similar problem?

If the brief sounds close, send it. We’ll say quickly whether we can help.