The problem
The website could book a sedan. The phone could not — not without a side channel. Agents worked from a different list of cars, guessed surges, and assigned drivers the public site didn’t know about. By the afternoon, two versions of “what’s on the road” existed.
The approach
We didn’t build a CRM with a notes field. We put the agent on the same reservation object the customer uses: search, filter, draft, assign, collect payment type. The console is dense on purpose — a headset shift is not a marketing page.
The solution
A Vue 2 operator app: reservation queue with status, payment type, customer and transaction IDs, assigned drivers. Side filters instead of a pretty dashboard. CRUD for cars, add-ons, discount codes, affiliates, and surges so the person on the call isn’t waiting on an admin in another building. Live updates when a trip changes while they’re still on the line.
The result
A booking taken at the desk is a real reservation on the fleet — same cars, same drivers, same fare rules. The agent isn’t the integration layer. The inventory is.
