This case study is private

Enter the password to continue.

Incorrect password — try again.
UX / UITD Bank

Customer contact update app

Company
TD Bank
Platform
Desktop web app
Role
UX/UI Designer
Users
U.S. front-line agents
Team
Cross-functional
Timeline
Q425–Q126
Customer contact update app — Odyssey Platform UI showing the Address, Phone, and Email update flow

TD's first contact-update experience built around the customer instead of the product — a colleague experience that replaces a multi-call process with one interaction, now live across 1,000+ U.S. branches and the contact-center network.

Context

Contact info lived with the product, not the customer

The data was managed at the product-level, not profile-level. Each product — deposit account, credit card... — kept its own data, managed by product-specific call centers.

The agent servicing the customer couldn't make the change themselves, they needed to call a second agent to make the change. Separate calls per product.

Before state — a contact update meant escalating to two different back-office agents
Deposit accountCall #1
1
Customer
Walk into the branch
2
Front-line agent
Loops in a second agent
3
Second agent - deposit
Update made
Credit card — same visit, againCall #2
5
Customer
Still at the counter
6
Front-line agent
Loops in a third agent
7
Third agent - credit card
Update made
Deposit account
Customer
Walk into the branch
Front-line agent
Loops in a second agent
Second agent - deposit
Update made
Credit card — same visit, again
Customer
Still at the counter
Front-line agent
Loops in a third agent
Third agent - credit card
Update made
The problem

Catching conflicts before they become rework

MVP1 proved the concept for deposit accounts only. MVP2 — my work — added the second product, credit cards. Becoming the first time that multiple products could be updated in one place (the reason this app was built for).

Adding a second product surfaced a new problem — MVP1 didn't support a scenario to keep contact details consistent across products when the customer didn't ask for it.

"How do we let an agent resolve conflicting contact info across a customer's products — even when the customer didn't ask about it — without adding friction to a task they perform dozens of times a day?"
Design decisions

A feature ships, a foundation compounds

Beyond adding a new product to the existing journey, we were designing the foundation why this app was built for — an experience capable to let the bank's front-line agents make all the changes in one place.

Design for re-use

I designed the patterns so any future product can join the same journey — with no retraining for frontline agents and no new workflows for engineers to build.

Complex only where it matters

I split the data into product-aware and profile-aware: a mailing address can vary by product (joint accounts), so its tab carries product context; phone and email stay profile-aware.

Confirm legal address screen — the confirmation moment pattern in the Odyssey contact update app
1
2
3
The "confirmation moment" pattern
1
Surfaces the mismatch inline

Right in the agent's flow, not a separate screen.

2
Pre-selects the value just entered

The common case needs no extra decision.

3
One click confirms it

Because the match is already selected.

Approach

Map the system before the screen

I set up periodic program calls with the stakeholders and subject matter experts — branch managers, contact-center managers, business management specialists... — to gather continuous feedback and pressure-test the MVP2 across its lifecycle from wireframes to the final product.

01

Map the system

Contact data lived in separate legacy systems, I collaborated with our Tech Lead to understand where each value came from and where an update would land — this surfaced the need for the confirmation moment when conflicting data was found across systems.

02

Build the evidence

My evidence came from the periodic calls I set up to gather feedback from our stakeholders and SMEs. The same forum let me pressure-test flow logic against operational reality and stay ahead of shifting requirements.

03

Collab with Odyssey's design leadership

Collaborated with design leadership to keep every pattern aligned with Odyssey's approved, reusable patterns — extending the shared system rather than adding a one-off.

04

Deliver

In parallel, I set up periodic calls between the design team, engineers and QE to verify that the build preserved the design intent, screen by screen.

Final designs

From update to confirmed

Validation

Pressure-tested by the stakeholders and SMEs

Once MVP2 was built, I walked it through structured reviews with stakeholders, business management, design leadership and subject matter experts to confirm it met business and product requirements, as well to confirm day-to-day edge cases within the branches and contact centers were properly treated up-front. Their sign-off confirmed three things:

Business requirements

The app reduced operational cost and chance for error during contact update, and kept data consistent across products in all possible scenarios.

Operational reality

Fits how front-line agents actually operate — no clash with the real workflow.

Day-to-day edge cases

It held up against the situations agents hit day to day — the edge cases a requirements doc never lists.

Impact

One agent, one interface, no phone calls

Updating a customer's contact info used to fan out into a call per product and a second agent each time. MVP2 collapsed that into one interaction — and set the reusable pattern for every product still to come.

31
Agents involved

A customer with 2 products required to loop-in 2 more agents in the process. With MVP2, one agent is able to make the changes themselves.

20
Phone calls

A phone call were required per each product update, this experience replaces that process with one interaction.

20
Legacy systems required

We replaced two legacy systems and more will be replaced as soon as any product become a new feature in the program.

1,000+
US Branches

Successfully rolled out across 1,000+ branches and the U.S. contact-center network.

Reflection

Built to be inherited, not just shipped

What I'm proudest of is that this work didn't stay a feature: alongside the platform's design leadership, the patterns I designed were contributed to Odyssey's shared, reusable system for the whole design org to build on. If I could change one thing, I'd have secured the budget for a researcher to validate the experience at the usability level. Even so, it held up — we met every business objective, and reviewed the work with leadership and the frontline SMEs to confirm that agents already fluent in MVP1 could take on credit cards with zero re-training.

Next case study
Tour booking platform