Booking & pricing

From “hold 2” to a PNR — with safeguards on every step.

Holds for flights, hotels and transfers inside the conversation, issuance switched on per partner, and pricing the language model never touches.

In-chat holdsLive

Hold the booking without leaving the chat.

Flights: pick, re-price, passengers, contact, review, hold — with PNR and auto-cancel deadline. Hotels: pick a room, add guest names and contact, hold with a booking ID. Transfers hold in chat too.

The problem
Moving from a chat quote to a booking tool loses context and invites typos in names and passport numbers.
How it works
The flow re-validates the fare, reads passengers from a passport photo or typed text, remembers contact details and uses retry ladders with targeted fixes when a field is rejected. Rooms that can’t be held are refused server-side. Multi-passenger fares can continue in the web wizard, and relay users get a secure booking hand-off link.
Where AI helps
The model reads documents and free-text corrections; validation and booking calls are deterministic and server-checked.
Business value
Shorter time from enquiry to confirmed hold, with fewer data-entry errors.
AgentsOTA support teams
In-chat flight holdlive
Pick option 2Card index = displayed number
Validate & re-priceLive fare re-checked with the supplier
PassengersPassport photo read, or typed
ContactRemembered from earlier bookings
ReviewPrice consent required to continue
StatusHOLDPNRK7Q2XMAuto-cancel14 Dec · 18:00
+ Hotel for these datesIssue ticket
Illustrative demo · sample data
Ticket & voucher issuancePer partner

Issue when you’re ready — and only when it’s safe.

Flight tickets and hotel vouchers can be issued from a held booking, in chat or in the app. Issuance is switched on per partner.

The problem
Accidental or duplicate issuance costs real money, and fares can move between hold and issue.
How it works
Issuance only works on bookings in HOLD state, behind an idempotency lock, after a live supplier check. If the price changed, consent defaults to refuse until the user confirms the new total.
Where AI helps
None in the money decision — issuance is fully deterministic and auditable.
Business value
Agencies can let trusted teams issue from chat without fear of double charges.
Ticket issuance · per partnerlive
issue ticket for K7Q2XM
Partner flagIssuance enabled for this partner
Booking stateHOLD only — issued bookings are refused
Idempotency lockA double tap can’t issue twice
Live supplier checkFare changed by ৳ 1,200
✓ VerifiedThe fare has gone up by ৳ 1,200. I won’t issue unless you confirm the new total.
Default on price change REFUSE
Illustrative demo · sample data
My BookingsLive

Every booking, everywhere you work.

Flight, hotel, transfer and activity bookings with list, detail and cancel — on the web (“My Trips”), over the messaging relay and in the mobile app, from one shared view.

The problem
Booking status lives in supplier portals the agent has to log into separately.
How it works
Details are fetched live: voucher, fare rules, penalties and baggage, with deadlines shown in the market’s timezone and hidden once issued. Prices are shown in BDT, the supplier currency of record.
Where AI helps
The assistant can answer “is my hotel confirmed?” from the live booking, not from memory.
Business value
Fewer status calls and one consistent view for agents and travellers.
My Bookingslive
DAC → DXB · 14 Dec
PNR K7Q2XM · HOLD · cancels 14 Dec 18:00
৳ 61,350
DAC → BKK · 10 Jan
Ticketed · fare rules & baggage
৳ 37,900
Deira hotel · 4 nights
Voucher issued · free cancel until 10 Dec
৳ 39,400
Sample bookings
Money-path safeguards

Engineered so a chat message can’t cost you money.

Bookings run on an isolated processing queue with server-side validation of every passenger and guest. A bare “2” always refers to the most recent list you saw.

Mandatory price consent

If the fare drifts, the request is rejected until the user agrees to the new price.

Idempotency locks

Locks are kept even when a create call fails ambiguously — so a retry can never double-hold.

Never lose a supplier booking

If the local record fails to save, the supplier booking is still tracked rather than dropped.

Owner-scoped access

Every booking and validation session is checked against its owner, closing object-level access gaps.

Throttled money endpoints

Sliding-window rate limits on holds, cancels and issuance.

HOLD-only cancel

Only held bookings can be cancelled from chat; issued bookings are protected server-side.

Deterministic pricing & currencyLive

Every number is computed — never generated.

Visa prices follow a fixed pipeline: base price, USD-pivot cross-rate, partner markup (percentage or flat), round up, ISO currency code. Flight and hotel prices are supplier sell rates.

The problem
A language model that “estimates” a price is a liability on a travel desk.
How it works
Exchange rates are admin-managed with an audit log and a 7-day stale flag, refreshed from a live FX API every two hours or on demand. “Show in USD / AED / …” re-displays the last priced result deterministically, and the display currency stays sticky — the original price remains authoritative.
Where AI helps
The model only recognises which currency the user means — including country names and local nicknames.
Business value
Consistent, auditable prices across agents, channels and partners.
Deterministic pricing enginelive
Base priceUSD 120.00record
Cross-rate× 122.00 → 14,640.00USD pivot
Markup+ 8% → 15,811.20partner
Roundup → 15,812always up
DisplayBDT 15,812ISO code
show in AED
✓ Verified · display only≈ AED 476 · the BDT price remains the price of record.
Illustrative rate and markup
Book a demo

See TravoPilot run on your inventory.

A tailored walkthrough with your markets, your languages and your booking flows. No slides — the live product.