Travel is a distributed systems problem wearing a consumer interface. Prices move, availability disappears mid-transaction, and a supplier times out at the worst possible moment. Almost everything else in the product is downstream of handling that well.
Availability and price are stale the moment you read them, and a booking touches several systems that can each fail independently. Design for that first and the rest of the product gets much simpler.
Multi-supplier search that stays fast when every query fans out to a dozen upstreams. Caching with honest freshness rules, timeouts that degrade to partial results, and a price you can still honour at checkout.
Taking the money is not the hard part. The state machine after it is: holds, confirmations, timeouts, and the reversal path when leg three fails after legs one and two have already confirmed.
Amadeus, Sabre, Travelport, bed banks, channel managers, property and car systems, and the direct supplier whose API documentation is a spreadsheet. Normalising them into one model is most of the engagement.
Multi-city, multi-passenger, multi-supplier trips with changes, cancellations and partial refunds applied correctly. The data model here decides how painful the following three years are.
Rate plans, markups, promotions, currency, taxes and market-specific fees expressed as rules your commercial team can change without waiting for a release.
Natural-language search over your real inventory, plus agents handling changes, cancellations and booking status against live systems and your actual fare rules rather than a generic policy summary.
Search infrastructure sized for the traffic that never books, because most of it never does. Cheap searches are what make the conversions affordable.
Every multi-step booking either completes or unwinds cleanly, with reconciliation catching the cases where a supplier confirmed and your system never heard about it.
Autoscaling and caching tuned to your own demand curve, so high season holds up and the quiet months do not bill like it.
Changes, cancellations and status questions handled by agents with real access to the booking and the fare rules, escalating anything involving a fee exception or a stranded traveller.
Every upstream, its quirks, its timeout behaviour under load, and the full state machine a booking can pass through. Travel projects go wrong here or they mostly do not go wrong.
Search, availability, booking and reversal, tested against supplier sandboxes and deliberately induced failures. The interface follows once the layer underneath is trustworthy.
Load tested against your own seasonal high, with cutover scheduled well away from it and a rollback available. Nobody should be replatforming a booking engine three weeks before high season.