kanchangaur.com / Airport Taxes
LOS ANGELES

Airport Taxes

2026 / lyft / price commander, lead designer, research to handoff
When do riders start paying? A MEM airport trip fee change from $4.00 to $4.50, waiting for approval, once approved starting June 1 at 12:00 AM central time, with its four statuses: submitted, waiting approval, scheduled, live

Price Commander is the internal tool Lyft uses to set the taxes and fees charged on trips. The Airports team uses it to configure airport trip fees, which come from signed, audited airport agreements. A wrong value either overcharges riders or breaches a contract.

The brief: redesign how the Airports team sets, schedules and tracks airport trip fees, so a fee change is correct the first time, without asking engineering. I led design from research through engineering handoff, working with engineering and the project’s DRI. The users are Airports BDMs, Tax Ops and approvers.

##

Confusing dates cost real money

The old flow had three similar-sounding date fields. One of them, Change will be processed at, was mistaken for the date riders start paying. The result was SEV 18005: roughly $40K overcollected at MEM and other airports.

Four more problems came with it. Manual timezone math: times were entered in the user’s own time zone, not the airport’s, so a BDM in Denver had to convert to Memphis time by hand. No status, no history: after submitting, there was no clear way to tell if a change was waiting, approved or live, so teams tracked fee history in Jira and email instead. Engineering vocabulary: config names, layers and UUIDs, not how a BDM thinks, which is raise the MEM pick-up fee. Fields with no real choice: reason was always “Business Requirement”, priority always P0, and one date field didn’t control anything at all.

##

Process

Research: interviews with the Airports team and Tax Ops, and a review of the user doc, the issues doc, SEV 18005 and real failure emails. Design: a competitive scan of change-and-approval tools, iteration in Figma with Price Commander’s existing components, and interactive prototypes for date and time and for ending the fee. Validation: usability sessions with the Airports team on the new UI.

##

Before and after: tracking a change

The old change request view showed config names, layers, a UUID and three timestamps: requested, scheduled to be processed, actually processed. It gave no plain answer to when do riders start paying?

BEFORE
The old change request view in Price Commander, a taxes update request listing display name, config name, locations, layer and type, beside a details panel with a request ID, priority, reason and three timestamps: change actually was processed on, change is scheduled to be processed on, change requested on
// fig.1a: before: a config name, a layer, a UUID and three timestamps

The redesigned view leads with one plain-language sentence about what riders will pay and when, in the airport’s local time. A stepper shows where the change is: Submitted, Waiting Approval, Scheduled, Live.

AFTER
The redesigned change view for a 2026 MEM airport trip fee increase, a waiting-for-approval badge, one sentence saying that once approved, starting June 1 at 12:00 AM central time, riders picked up at MEM will be charged $4.50 instead of $4.00, a four-step stepper from submitted to live, and a summary of what is changing
// fig.1b: after: one sentence, one status, the airport’s local time
> The redesign makes the flow airport-first, plain-language and status-first.
##

The airport page is the hub

Users search for an airport and land on one page that shows the live fee by leg, its status, and exactly three actions: change the fee, schedule future changes, or end the fee.

The airport detail page for the BOS airport facility charge, pick-up and drop-off shown as separate $5.50 fees with a pending-approval status, above three actions: change the fee, schedule future changes, end the fee
// fig.2: airport detail: pick-up and drop-off as separate fees, with a pending-approval status
##

Changing a fee

Pick-up and drop-off are separate toggles with their own amounts, each showing the current value. One start date and time replaces the three old date fields, and it is always in the airport’s local time. Exceptions by ride type go underneath.

The change MEM airport fee form, an optional description, one start date and time labelled MEM local time (central time), pick-up and drop-off toggles each with a new amount and its current value, and an override by ride type control
// fig.3: change fee, MEM: the start time labelled in Memphis local time
##

Also designed

MULTI-YEAR
Scheduling for contracts that escalate every year, with per-year ride type overrides.
END THE FEE
Including what happens to changes already scheduled after the end date.
REVIEW
A screen showing current vs. new values before anything is submitted.
STATES
Empty, error and failure states, including plain-language messages when a deploy fails.
##

Outcome

$40K
Overcollected in SEV 18005, when a date field was mistaken for the date riders start paying. The single local-time start date is designed to prevent that kind of mistake.
3→1
Confusing date fields replaced by one start date and time.
0
Timezone math. Every time is set in the airport’s own time zone.

Engineering received a full Figma handoff, built on Price Commander’s existing components, with edge cases and open questions documented. The new UI is in use by the Airports team.

What’s next: fold the usability findings from the Airports team into the next iteration, extend the same patterns to non-airport taxes with Tax Ops, and support finance’s tax-type field (airport fee, city fee, sales tax) once Price Commander is queryable.