Back

Perk

Turning a forced compliance project into a platform for improvement

I led a redesign that started as a compliance requirement and became something much more — rescuing a key partnership, resolving years of cross-vertical UX debt, and uncovering a revenue opportunity that drove a 1.6x increase in product attachment.

1.6x

Product attachment

18%

Easier to book (CES)

8 weeks

Design to launch

Perk (ex-TravelPerk) is a B2B platform for booking company travel. Delta was enforcing new guidelines for how vendors display their flights. The guidelines conflicted with Perk's booking model and their business travelers' mental models.

Defining the scope

Delta and Perk had different incentives. To avoid relitigating design decisions, I created a definition of done that both parties signed before any design work began.

Auditing across verticals

To align the design across verticals, I ran a heuristic review across flights, trains and cars with each vertical's designer.

Continuous testing

We usability-tested all critical flows before rollout. A phased release with live session observation let us iterate continuously.

Understanding the baseline

We ran a CES survey at the end of the booking flow before the redesign, so we could quantify any change in user effort.

Locking in scope

Agreeing the definition of done up-front saved us from any potential scope changes.

Evidence over opinion

Contested decisions went to customer data rather than to whoever argued hardest.

Shipping in slices

Weekly critique with engineering and incremental release rather than one big launch.

Un-bookable fare tiers

The guidelines introduced six fare tiers. Perk users can only book within their price policy, meaning the higher-end tiers weren't relevant for the majority of users.

One Delta flight from CDG to JFK. 6 fare categories sit beside the itinerary. Bookable categories show from-prices; out-of-policy categories are labelled Out of policy. Selecting a premium category expands nested fare options, each marked out of policy with a red shield cross and an Out of policy button.

Most users cannot book higher-end flights

I negotiated reducing the tiers from six to four: combining higher-end fares into the fourth tier. This reduced the prominence of non-viable options.

One Delta flight from CDG to JFK. 4 fare categories sit beside the itinerary, all marked in policy. Selecting a category expands nested fare options that travellers can book.

Non-viable options are de-prioritised

Hiding journey visibility

Delta's guidelines hid return flights until after choosing an outbound flight. This meant users could unknowingly choose an outbound flight with no viable return options.

An outbound flight from JFK to LAX with four fare categories. The second category is open, showing nested fares. Selecting a fare transitions to return flight cards from LAX to JFK, each labelled Out of policy, the last of which is clipped by the frame. In-policy outbound does not mean in-policy return.

A viable outbound flight doesn't mean viable return options

I negotiated for us to keep the round-trip flight view, rather than hiding return options. This let travellers keep the ability to see viable round-trip options at a glance.

One round-trip card in the four-column fare grid. Outbound and return legs sit together beside skeleton fare placeholders, so travellers can see the full journey and whether it is in policy.

Full-visibility of the round-trip journey

Conflicting with different markets

European carriers have fewer fares than American carriers, meaning almost every fare tier would be empty across most airlines.

A European round-trip card in the four-column fare grid. The first category has a fare; the remaining three columns are largely empty in the European market.

Delta's design didn't work in Europe

To avoid this, I designed a separate European search results view, based on the same design, but with a simplified card that didn't include the fare tiers.

One European round-trip result in a simplified single-fare column layout — one bookable fare instead of a four-column grid.

Simplified card for European searches

Search results and fares

As well as implementing the new expandable fare tiers, I redesigned the flight search result card with stronger content grouping and hierarchy.

Shipped North American flight results page
Press the expand button to see the full image

Re-thinking the filtering experience

The new layout needed horizontal space that the old filters side panel was occupying. This meant we had to rethink where they lived.

Flight results with a vertical filters side panel
Filters side panel didn't work with the new full-width results design

I ran a card sort to re-group filters around our users' mental models, then designed a horizontal filter experience, using progressive disclosure to reduce cognitive load .

North American flight results with horizontal filter tiers
Horizontal filter categories create more space and improve navigation

Making it easier to change parameters

Changing search terms was tucked behind an edit button. In live sessions, I noticed that users often missed the button and returned to the home page to adjust their search.

Old results header with a small Edit search button beside the route summary
Changing search terms was hidden and cumbersome

To address this, I made the search parameters editable by default, tucking away when the user scrolls down, and re-appearing when they scroll up from anywhere on the page.

Sticky search bar on the flight results page
Changing search terms is now much easier

Scaling the new patterns

The new search experience, filters, and results cards were designed to scale across verticals, creating a unified design language.

Introducing 'FlexiFare'

FlexiFare is Perk's flexible fare: a normal fare with a small markup for free changes and cancellation. Under the old design, it was only offered on the most basic fare.

Two fare cards sit side by side. Basic fare at $390 allows no changes and is not refundable. FlexiFare at $449 has changes at price difference and a minimum 80% refund. Both include underseat and carry-on bags, but no checked bag or seat selection.

The new guidelines buried it

In the old flow, every traveller saw FlexiFare as the second option on a single fare screen. In the new design, only users who chose Basic would see it.

One round-trip result with outbound and return legs stacked beside the fare categories. 4 fare categories sit beside the itinerary, all marked in policy. Selecting a category expands nested fare options that travellers can book.

FlexiFares would only show under the Basic tier

Expanding FlexiFares

I proposed extending FlexiFare across the fare tiers. This fixed the visibility problem and unlocked a major revenue opportunity that had been overlooked.

Standard fare tier expanded to show Main Cabin and Main Cabin FlexiFare
All fare tiers now have a FlexiFare variant

The redesign secured the Delta partnership, cleared years of UX debt, and grew FlexiFare revenue — all from a project that began as forced compliance.

The FlexiFare expansion drove a1.6x increase in attachment, representing a yearly revenue increase of several million dollars.

On top of this, overallflight booking CES improved 18%, from 3.9 to 4.6 out of 5.

Learnings

  • A written definition of done is a conflict resolution tool

    The definition of done document became our most-valuable tool for alignment and decision-making. Having Delta sign off on success criteria early meant that when they pushed back later, we had something to point to.

  • Usability testing only tells us so much

    Usability testing gave us confidence, but watching real users in Fullstory post-launch revealed behaviours we hadn't anticipated. Some of our assumptions about navigation were simply wrong, and we only caught them because observation was built into the plan from the start.

  • Opportunities often come from looking sideways

    The FlexiFare expansion wasn't in scope. I spotted the revenue risk while solving an unrelated problem. This is a reminder that design exploration can lead to opportunities that aren't covered in PRDs. It's also a reminder that, if we look at them in the right way, constraints can sometimes open doors.