Customer portal — working prototype
Your booking, without the phone call
The MVP from our proposal, running. Real code, real failure handling, a mock reservation system standing in for RCM.
Open a booking
Four fixtures, each set up to prove something different. Every one goes through the same lookup a real customer uses.
- Auckland Airport, flying inSNP-4471902The main path. The shuttle request carries the flight; extras are priced live from RCM.Auckland Airport · Fri, 14 Aug 2026 · Whitfield
- Booked through a third partySNP-4468110The cover they sold, reconciled against the bond SNAP still holds — and pick-up inside the charge window.Queenstown Airport · Thu, 6 Aug 2026 · Raman
- Already on hireSNP-4459873Extension is a structured request, never automatic — your brief is explicit on this.Christchurch Airport · Wed, 29 Jul 2026 · Baxter
- Auckland DowntownSNP-4472518The worked negative caseNo shuttle runs here. The rule says so clearly instead of offering one that cannot happen.Auckland Downtown · Tue, 11 Aug 2026 · Tanaka
Or send yourself the real thing
A confirmation email with a link straight into the booking — the way a real customer arrives. No account, no password. Open it on your phone.
MockedWhat is real here, and what discovery settles
Real
The tokenised link — payload-free, single-use, expiring. Burn it and it stays burned.
Stand-in
The email send, and the booking behind it is fixture data.
Discovery settles
Which system sends your confirmations today, and whether RCM can carry the token or it is attached downstream.
What this is actually showing
01
Getting in, safely
A single-use link that carries nothing in the URL, a code to the address already on file, two levels of access. Try a reference that does not exist — you get the same answer as a real one with the wrong surname. That is deliberate.
02
The shuttle, linked to the booking
Your own booking widget sells a free airport shuttle. Today the request form has no idea which booking it belongs to. Here it arrives carrying the reservation, the flight and the terminal — and it needs no third-party API to work.
03
What happens when RCM says no
RCM returns errors inside a 200 and does not lock rates. Add an extra, then make it fail on purpose. Nothing is charged twice, nothing silently succeeds, and the pending state is visible to the customer.