Booking is where airlines lose people. I designed the part everyone hates.
A complete UX process for a fictional airline, research to annotated handoff. Research named where booking conversion breaks, the seat picker answers it.
A complete UX process for a fictional airline, research to annotated handoff. Research named where booking conversion breaks, the seat picker answers it.
Too many steps. Hidden mandatory costs. A seat-selection screen that feels built to confuse you into paying more. Users know it, and the research confirmed it: the most painful part of booking a flight isn't searching or paying, it's the stretch in the middle where you pick a flight and get funnelled through options you didn't ask for.
Skyjetz is a fictional start-up airline. The brief was to design its booking experience end to end, grounded in real user research. I took it as the chance to run the complete process without the compromises a live commercial timeline usually forces: benchmarking, survey, user testing, synthesis, flow design, prototyping, and a full annotated handoff, on one project. Fifteen years into the work, I rarely get to do every stage properly. This was that project.
This case study is built the way the work was: research first, decisions second, design third. The seat-selection microapp at the end isn't a separate showpiece. It's the proof that the research paid off, the answer to the exact pain the journey map identified.
A note on scope. The baseline booking flow was provided by the UX Design Institute. The research, the synthesis, the interaction design, the edge and error states, and the handoff are mine. This was a UX project, so the deliverable is mid-fidelity annotated wireframes and a clickable prototype, the flow, the states, and the interaction logic, not the visual design layer.
Before designing anything, I needed to know where booking actually breaks. I ran three research methods and triangulated them.
Competitive benchmarking. I compared the booking usability of several best-in-class airlines, Air France, Air Canada, Norwegian, plus Google Flights as a wild card, across three areas: homepage, search and flight selection, and details and payment. The goal was to learn the conventions worth following and spot the bad patterns worth fixing.
An online survey. Quantitative and qualitative, to understand goals, behaviour, and pain. The findings that shaped the project: a clear majority booked on desktop rather than mobile, which set my primary focus to the desktop experience; 50% prioritised dates over price; and, most importantly, respondents named added options, seat selection and baggage, as the single most painful, least transparent part of booking. In their words: too many steps before checkout, and prices that hide mandatory costs until late.
User testing and depth interviews. Three sessions I ran (two remote, one in person) plus two recorded sessions I reviewed in detail, across four airlines. The recurring findings: information overload, features that confuse without explanation, uncertainty about whether a price covered one passenger or several, and a booking process that was simply hard to follow.
Three methods, one consistent signal. The next job was to turn a pile of findings into a direction.
Raw research isn't a direction. A list of findings is a list of findings until something forces a decision out of it.
I clustered every observation onto individual notes and grouped them by triangulation, first into the stages of the booking flow (search form, results, flight selection, upsell, checkout), then into finer subgroups like the date picker and the flight card. Sequencing those clusters in booking order turned directly into a customer journey map, with goals, behaviours, positive moments, and pain points at each step, quotes from the usability tests pinned where they landed.
The journey map confirmed the spine of the whole project. Across every stage, one zone stood out as the most painful by a clear margin: search results, flight selection, and the upsell. The upsell in particular was described as unnecessary and annoying, the place where users felt the booking turn against them.
That synthesis is what gave me a focus instead of a wishlist. The design effort would concentrate where the pain was densest, the middle of the flow, and treat the upsell not as a revenue add-on to tolerate, but as the hardest UX problem to solve honestly. Every design decision after this point traces back to that one conclusion.
The research had named the villain: the upsell. Seat selection specifically, the moment users said the booking stopped feeling honest. So the seat picker became the part of the project I most wanted to get right, because solving it meant solving the thing the journey map flagged as worst.
The answer was a self-contained seat-selection microapp, launched from the travel-extras step. Not another page in the chain. A focused module with its own internal logic, designed to make the most resented part of booking the most transparent.
Here is what it actually had to handle. Two passengers, two legs of a round trip, four independent seat decisions. Each passenger has their own selection track with three states: no seat selected, actively choosing, and seat confirmed. Click Select and the button becomes Cancel while a pick-a-seat prompt and the seat map both highlight, the interface tells you it's your turn to act. Pick a seat and the state flips again: the button becomes Change, and a release-seat control returns the passenger to the default. One passenger can be fully booked while the other still reads no seat selected, and the flow handles that partial state without complaint. The same workflow repeats for the return leg in its own tab.
Three fare tiers, Extra Legroom, Economy Comfort, Economy Standard, are stated openly in the panel, with the price visible at every step. The anchored bar shows the running total for all passengers, updating live as seats are added (664 euros, then 679.99, then 727.96). The flight-details sidebar itemises every charge by passenger and by leg. Nothing is hidden until checkout. Nothing is a surprise.
That is the research paying off. The journey map said seat selection is where booking feels deceptive. So I designed the version where the price is never hidden, the state is always clear, and the user is never tricked into anything. The upsell, made honest, because the research told me exactly which moment to make honest.
Benchmarking, survey, user testing, affinity diagram, journey map, flow design, prototype, and annotated developer handoff. Every stage of the UX process, run properly on one project.
The decision to focus on search, selection, and the upsell wasn't a hunch. The affinity diagram and journey map identified it as the most painful zone, and naming that focus is the call every later decision rests on.
The seat microapp turned the most resented part of booking into the most transparent. Open pricing, clear state, a live running total, and no hidden costs, a direct answer to the journey-map finding.
Every page, component, screen state, error message, and interaction documented for engineering. The kind of handoff that gets built as designed.
This was an academic brief with a fictional client, and I'm clear about that. But the chain behind it, research to synthesis to a single focusing decision to design, is the one I run on real products, and the seat microapp is the kind of interaction problem, multi-state, multi-passenger, commercially loaded, that separates arranging screens from designing systems. If you're building a flow where the hard part is making a complicated, money-touching moment feel honest, that's the work I do.