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.

blob_dh5nzd.webp

LIVE SITE

Empty fields styled red before any input. Search competes with a

promo block and a hero image. Discount code sits mid-search.

blob_iyva2q.webp

LIVE SITE

Dozens of results, no ranking. The same savings message repeats

three different ways in the same viewport.

blob_r7opmc.webp

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.

blob_ujhxcl.webp

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.

blob_pebcze.webp

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.

blob_tqo9dw.webp

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.

blob_q57ons.webp

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.

blob_lsxhxe.webp

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.

blob_sq6csg.webp

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.

blob_jdj8ox.webp

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