
Booking a flight when
you barely fly
A two-round usability redesign of WestJet's flight search and checkout,
built for people who book once or twice a year.
MY ROLE
Prototype build, heuristic evaluation
methodology and analysis, usability
testing
TEAM
Five. Abdul Alzokm, Anam Malik,
Jacob Marquez, Maecel Enriquez,
Tina Siassi
TIMELINE
4 months
TOOLS
Figma, Microsoft Teams
CONTEXT
INF2171, Master of Information (UX),
University of Toronto

THIS CASE STUDY IN ONE CARD
WESTJET FLIGHT BOOKING, REDESIGNED
Two rounds of evaluation across flight search
and checkout, for infrequent flyers
FLOWS
Search and selection, booking and checkout
METHOD
Heuristic evaluation, then moderated testing
MEASURED TASK SUCCESS
Search for a round-trip flight
5/5
Compare fare options
5/5
Complete booking and checkout
5/5
Modify a previous selection
PARTIAL
3/5
5/5
In a five-second impression test, every participant recognized the booking page,
the input fields, and the primary action.
THREE FINDINGS, THREE CHANGES
01
Ranking was inconsistent. Sorting made consistent across departure and
return, filters given weight, sort options given helper text.
02
Nobody could find modify. Control moved onto the summary, opening the
search fields in place, with a price-lock warning.
03
Checkout had no way back. Back navigation between steps with selections
preserved, plus a persistent progress stepper.
Course project. No live business metrics: the numbers above are measured task outcomes
from five moderated sessions.
THE PROBLEM
WestJet's live booking flow buries pricing, splits attention
across competing calls to action, and gives an infrequent
flyer no way to change a flight without starting the
search over.
THE APPROACH
Two rounds. A heuristic evaluation drove the first redesign.
Moderated usability testing of that prototype drove
the second.
2
Rounds of evaluation and redesign
5
Participants, moderated, think-aloud
4
Tasks across two core flows
3
Findings from testing, each answered by a
change
01 / OVERVIEW
Built for people who
don't book often
WestJet is a Canadian airline. Booking is where most of its customer
relationships start and end, so the flow carries the whole first impression of
the brand.
We designed for infrequent flyers: people who are not fluent in fare
breakdowns, airline jargon, or the usual booking pattern. Someone who books
once a year has no muscle memory to fall back on, so every unclear label and
every hidden fee costs them real effort.
Two flows were in scope. Flow 1 is flight search and selection. Flow 2 is booking
finalization and checkout.
PROJECT GOALS
01
Find and compare flights with confidence
02
Understand pricing before purchase
03
Navigate checkout with ease
04
Modify a flight without restarting
02 / THE PROBLEM
The live flow works against
the person using it
We evaluated the live WestJet site against Nielsen's heuristics and Norman's design
principles. The flow leans on dark patterns and upselling. Pricing is buried. Error styling
appears before anyone has typed anything. Attention is split across competing calls to
action. Results run to endless scroll, fare types are nested in a structure that is hard to
compare, and there is no way to change a flight without starting over.
For an infrequent flyer that adds up to friction and cognitive load at exactly the moment
they are deciding whether to spend money.

LIVE SITE
Empty fields styled red before any input. Search competes with a
promo block and a hero image. Discount code sits mid-search.

LIVE SITE
Dozens of results, no ranking. The same savings message repeats
three different ways in the same viewport.

LIVE SITE
Choosing the cheapest fare triggers an interstitial arguing against
the choice the user just made.
Screenshots of westjet.com captured June 2026 for academic evaluation.
03 / APPROACH
Two rounds, not one
The redesign did not stop at what the designers thought was better. The first version was
built to answer specific heuristic violations, then put in front of real users, then revised
again against what those sessions exposed.
STEP 01
Heuristic evaluation
The live site assessed against Nielsen's
heuristics and Norman's principles. This
surfaced the violations.
STEP 02
First redesign
Both flows rebuilt in Figma against those
violations. This became the prototype we
tested.
STEP 03
Usability testing
Five infrequent flyers, four tasks, think-aloud,
moderated over MS Teams.
STEP 04
Second redesign
Three findings from the sessions turned into
three specific changes.
04 / ROUND ONE
Heuristic evaluation into
the first redesign
Ten problems were documented across the two flows. Each one has a decision attached to
it. Four of the strongest are below.
DECISION 01
One action, not three
The landing page split attention across the search container, a
promotional offer, and a hero image. The search box, the whole
point of the page, was the narrowest thing on it.
A single primary action now anchors the page. Everything else is
demoted. The label changed from "Get Flights" to "Search
Flights" because searching is what the button actually does, and
"get" implied a purchase.
Empty fields default to neutral placeholder text. Validation only
fires after someone has actually touched a field.

DECISION 02
Stop making people remember
their departure date
Picking a return date meant holding the departure date in your
head. Disabled dates were greyed out at a contrast too low to
read as a rule, and there was no way to see how long the trip
would be.
A summary bar under the calendar shows departure, return and
duration. The departure date is highlighted. Hovering a return
date previews the full range, so trip length is visible instead of
calculated.

DECISION 03
Five ranked options instead of
endless scroll
Results ran to dozens of flights with no ranking, and the same
"extra savings" message appeared three times in close proximity
as a banner, a date-cell tag, and a mini banner on the fare card.
Three signals for one idea, none of them consistent with the
others.
Results now open under "Top Departing Flights": five options
ranked on price and convenience, with "Show all" for the rest.
Seats remaining sit next to the flight details.
The three savings treatments collapsed into one "Lowest Price"
tag.

DECISION 04
Show the total, and where you are
On the live site the total sits alone in a corner with no breakdown,
and choosing the cheapest fare triggers a modal arguing against
it. Nothing tells you where you are in the process.
The redesigned summary opens with a stepper. Fees break out
alongside the grand total. Cancellation coverage is an explicit
choice rather than fine print, and a 15-minute timer shows how
long the fare is held.
"Continue as Member" and "Continue as Guest" sit side by side
instead of pushing guests through an interstitial.

THE OTHER SIX DECISIONS
"Get Flights" became "Search Flights"
The old label implied a purchase. The new one matches
what the button does, so nobody hesitates over whether
they are committing.
Discount code moved to checkout
It sat between the route fields and the dates, interrupting
the core search inputs with a step users expect much later.
The loading screen says something
It read as an empty state. Now it carries a status message, a
progress bar, branded imagery and a summary of the trip
being searched.
Fare types flattened
Class first, then fare type inside it, was two layers too many.
Fares are now parallel cards showing name, price and
features side by side.
A consistent three-column grid
Tiles used to change shape row to row, implying that
bigger meant different. Unavailable fares now show as a
labelled "Not Available" tile instead of vanishing.
Modify without backing out
Changing a flight meant stepping back through every page
of the search. A "Modify your flight" control now opens the
search fields in place.
05 / ROUND TWO
Putting the prototype in
front of people
I ran moderated sessions of about 20 minutes over MS Teams using a think-aloud protocol.
Recruitment ran through a screener, participants signed informed consent, notes went
into a shared spreadsheet, and the data was anonymized before synthesis.
WHO WE RECRUITED
Infrequent flyers matching the target user. Screening
criteria: 18 or older, flying three times a year or fewer,
and having booked a flight in the last 12 months.
Convenience sampling.
WHAT WE MEASURED
Task completion, observed behaviour, user errors, and
verbal feedback captured during think-aloud.
WHAT HELD UP
The five-second impression test, the visual indicators
(pricing under dates, lowest-price tags, colour-coded
fares), and wayfinding through the progress stepper.
06 / WHAT TESTING CHANGED
Three findings, three
changes
FINDING 01
Flight evaluation
Three of five participants wanted the results sorted more clearly and more
consistently. Telling the departure list from the return list was harder than it
should have been, and the cheapest option was not always first.
Selecting my return flight, it didn't put the lowest option
at the top, it was the second option. Lowest goes in the
top to begin with.
PARTICIPANT 4
I think typically price is probably top priority.
PARTICIPANT 5
WHAT CHANGED
Sorting became consistent across departure and return. Filter and sort controls gained visual weight, sort options
gained helper text, and information density on the results page came down.

FINDING 02
Modifying a flight
Three of five struggled to find how to change a flight. Four of five were
frustrated by the idea of restarting the search. This was the one task that did
not reach full success.
If it was more like visible, how to change the flight dates
without restarting, then it would have been easier.
PARTICIPANT 3
I wouldn't say it was intuitive.
PARTICIPANT 2, ON FLIGHT MODIFICATION
WHAT CHANGED
"Modify your flights" moved onto the summary itself and opens an overlay with the search fields in place. A
confirmation modal now warns that changing dates removes the current price lock and may change the price, so
the tradeoff is visible before committing.

FINDING 03
Checkout navigation
Four of five had trouble moving back and forth to change information during
checkout. They completed the task, but they did it without feeling in control of
it.
I would try to go back, like, all the way. Oh, I guess I
can't.
PARTICIPANT 3
Unless I wanted to change something, like pick a new
flight entirely, I don't see why I have to restart.
PARTICIPANT 5
WHAT CHANGED
Back navigation between steps, with selections preserved when moving backward. The progress stepper carries
through every screen, and "Back" and "Skip Seat Selection" are explicit controls rather than implied ones.

07 / FINAL DESIGNS
Flow 1: search and
selection
Landing to trip summary, after both rounds.
Date selection. Departure highlighted, range previewed on hover, duration stated under the calendar.
Trip summary. Stepper, full price breakdown, cancellation coverage as a choice, 15-minute fare hold.
Modify overlay. Search fields open over the summary, and changing dates warns about the price lock before it goes through.
Flow 2: booking and
checkout
Seats through payment, organized by passenger.
08 / REFLECTION
The work doesn't
stop at the redesign
The heuristic evaluation caught real problems, but it could not have told
us that people would not find the modify control. Only watching someone
look for it did that. Every round surfaces something the last one could not.
Modify was the only task that did not reach full success, at three of five.
The second redesign put the control on the summary and added a price-
lock warning, but that fix has not been tested. It is the first thing I would
put in front of users if this continued.
What I took from it: design is iteration. There is always another round that
makes it better.
INF2171, Master of Information (UX), University of Toronto. Team project with Anam
Malik, Jacob Marquez, Maecel Enriquez and Tina Siassi. WestJet is not a client and this
work is not affiliated with the airline.
ABDUL ALZOKM