← Back to portfolio
Case Study 02 / B2B Consumer Financial Product

Designing the first student loan retirement benefit

Company Northbridge Financial
Role Product Designer
Timeline 1 year, kickoff to launch
Platform Web + Mobile
Tools Sketch, Figma

Company name changed under NDA. Fortune 100 US retirement and asset management firm, 2018 to 2024.

01 / Overview

Overview

Over 40 million Americans carry student loan debt. For many, that debt is the reason they cannot save enough to receive their full employer 401(k) match. This project introduced a new category of workplace benefit: the first product that let employers treat an employee's student loan payments as a retirement contribution.

I was the product designer on a small team that included a content strategist, a research intern, and three engineering teams each owning a different layer of the product: UI buildout, backend, and migration and integration. My role extended past screen design into dev handoff across all three teams, QA, and contributing patterns back to an early-stage internal design system as it matured alongside the product.

The product launched with two strategic employer clients and enrolled at 300% of projected participants. It became one of the most widely cited examples of SECURE 2.0 legislation put into meaningful product practice, and was internally recognized as the fastest discovery-to-launch at Northbridge to date.

300%
of projected enrollment at launch
1st
product of its kind under SECURE 2.0
40M+
Americans carrying student loan debt
26%
average turnover across the firm's benefits book, the retention problem this addressed
02 / Challenge

A new category of benefit, with no existing infrastructure to build on

This benefit was possible because of newly passed federal legislation under SECURE 2.0, which allowed employers to match student loan payments directly into a retirement account. But passing the legislation did not mean the infrastructure to deliver it existed.

The benefit mechanic

When an employee makes a student loan payment, their employer matches a percentage of that payment directly into their 401(k), the same match they would normally receive for contributing to their retirement account themselves. To receive the match, employees connect their loan servicer during enrollment and certify their payments through their company's benefits portal.

This required Northbridge to verify loan payment data for thousands of employees across multiple servicers, calculate employer contributions, and communicate match projections accurately before any payment had been made. None of that existed in the existing retirement platform.

The infrastructure constraint

Northbridge's existing 401(k) platform was fully hardcoded. Integrating directly would have required an estimated $10 million and five years, according to that platform's PM. With a hard strategic client deadline in place, the product had to be built as a standalone experience first, integrated with a third-party loan-data provider (Finicity) to pull payment data during enrollment, with deeper platform integration to follow in subsequent phases.

That constraint shaped everything: how match projections were surfaced without a live connection to a user's actual retirement balance, how verification state was communicated without a real-time system, and how the experience would need to be designed in a way that could eventually absorb full integration without requiring a ground-up redesign.

The regulatory context

Because this benefit was the first of its kind, the product team worked alongside Northbridge's legal and compliance teams throughout the design process. Every piece of copy related to match projections required approval. Every disclosure had to be precise about what was guaranteed and what was estimated. These constraints were real design inputs, not footnotes. The final enrollment flow reflects them directly.

03 / Research

Research

Over three months, the team conducted 40+ interviews with borrowers across a range of socioeconomic backgrounds and loan amounts, alongside calls with loan servicing advisors to understand what information borrowers were already receiving, and where it fell short.

What we learned

Research surfaced three consistent findings that shaped design decisions throughout the project:

Three borrower segments

Research surfaced three distinct borrower profiles. Each shaped design decisions in specific ways, particularly around tone, information hierarchy, and how the product asked for trust.

Segment 01
The Weight Carrier
$150K–$250K+ in debt

Doctorate holders in public service, teachers, social workers. High credential cost, low salary, often denied PSLF after years of qualifying payments. Debt had stopped feeling like a number and started feeling like a life condition. Many had disengaged from financial tools entirely because nothing had ever worked for them.

Led with trust before asking for anything. Showed projected match amount before requesting account access, so the value was concrete before the vulnerability was required.
Segment 02
The Determined Paydown Borrower
$10K–$30K remaining

Started at $50K+ and spent years aggressively paying it down. Close enough to the finish line to feel the trade-off acutely: every dollar going to loans was a dollar not compounding in retirement. More willing to talk openly about debt. Likely to complete enrollment independently if the flow was clear and fast.

Responded to concrete math. Needed the process to be fast, not another complicated financial product. Enrollment flow designed for independent completion with minimal friction.
Segment 03
The Ineligible Borrower
In default, various debt amounts

Emerged during interviews rather than from product requirements. Borrowers in default wanted this benefit as much as anyone, sometimes more, but eligibility required accounts to be in good standing. The design couldn't serve them in this release.

Influenced how the ineligibility state was handled: a clear explanation of why and what steps might change their status, not a generic error. Flagged as a genuine product opportunity for a future release.
Enrollment flow sequence Five steps: value preview, connect loans, confirm accounts, terms, enrolled. The value preview step appears before any account connection is required. FIGURE 01 / ENROLLMENT SEQUENCE STEP 01 Value preview Match shown first STEP 02 Connect loans Finicity STEP 03 Confirm accounts Review & verify STEP 04 Agree to terms Legal approval DONE Enrolled
Fig 01. Enrollment sequence. The projected match amount is shown before any account connection is requested.
04 / Process

Testing two enrollment sequences

Before committing to a final flow, I built low-fidelity wireframes for two different enrollment sequences and tested both with borrowers. The only variable that changed between them was the order of two steps: connecting a loan account, and seeing the projected employer match.

Both sequences ended at the same destination, the same account connection and the same match calculation. The question was whether asking for account access first, or showing the payoff first, changed how borrowers felt about the benefit and how likely they were to complete enrollment.

Tested and rejected

Option A. Connection first

Wireframe, connection first sequence Lo-fi wireframe showing loan account connection requested before any match amount is shown. CONNECT LOAN ACCOUNT (STEP 1) Match amount not shown yet

Borrowers were asked to connect a loan servicer via Finicity before seeing any match projection. For the Weight Carrier segment in particular, this read as a request for financial vulnerability with no stated payoff, and created visible hesitation in testing.

Shipped

Option B. Value first

Wireframe, value first sequence Lo-fi wireframe showing the projected match amount before any account connection is requested. PROJECTED MATCH (SHOWN FIRST) $1,900

Borrowers saw their estimated match amount immediately, before being asked to connect anything. Trust was established before vulnerability was required. This sequence became the enrollment flow that shipped.

What the test showed Sequence alone changed how the same information landed. Nothing about the underlying benefit changed between Option A and Option B, only the order borrowers encountered it in, and that order measurably changed how ready they were to trust it.
05 / Design decisions

Key design decisions

Three decisions defined the shape of the final product. Each one was grounded in a specific constraint, a research finding, or a technical reality uncovered during the project.

Decision 01

Lead with the projected match, not the account connection

We tested two enrollment sequences in wireframes. One front-loaded the Finicity loan account connection before showing any match projection. The other led with the estimated match, showing users what they stood to gain before asking for account access. Users responded significantly more positively to the value-first sequence. For the Weight Carrier segment in particular, being asked to link a loan account before understanding what was in it for them created hesitation. Showing the match projection first established trust before asking for vulnerability. That finding drove the final enrollment order.

Decision 02

Build outside the existing platform

Integrating with Northbridge's existing 401(k) infrastructure would have taken years and cost far more than this project's budget allowed. The product was designed as a standalone experience from the start, capable of operating independently and being integrated incrementally in later phases. That shaped every decision about how match data was surfaced without a live retirement account connection: projected amounts were clearly labeled as estimates, the dashboard communicated a pending verification state rather than a live balance, and the architecture was designed so nothing about the user-facing experience would need to be rebuilt when integration eventually happened.

Decision 03

Design the ineligibility state as carefully as the happy path

When the Ineligible Borrower segment surfaced during research, the immediate product response was to add a generic error for users who didn't qualify. I pushed for something more intentional: a clear explanation of exactly which eligibility criterion wasn't met, what it would take to meet it, and what the user could do next. For a product built around financial inclusion, a generic "you don't qualify" felt like a design failure. The final error states reflect the same care given to the enrollment flow itself, and the segment was formally documented as a product opportunity for a future release.

Enrollment intro screen showing the employer match figures and a retirement projection calculator with salary, loan payment, contribution and employer match inputs, all before any account connection is requested
Enrollment intro. The match figures and the projection calculator both sit above the account connection step. Borrowers enter their own salary, loan payment and contribution rate and see a personal ten year projection before anything is asked of them.
Loan servicer connection step, showing the Finicity search dialog opened over a disclosure page that names the third party, states what it does and does not control, and sets out which accounts are eligible
Connect a servicer. The handoff to Finicity sits behind a disclosure page naming the third party, what it does and does not control, and which accounts qualify, so nothing about the data exchange arrives as a surprise.

Design system contribution

This project was built within an early-stage internal design system. Several patterns didn't exist when the project started, including the benefit enrollment wrapper, the match projection card, and the loan verification state components. Where patterns were missing, I created them and contributed them back to the system so they could be reused across other benefit products. The system matured alongside the product, which required building with one eye on the specific enrollment context and another on what would generalize cleanly.

06 / Implementation

Leading through implementation

With a hard deadline tied to client open enrollment, I coordinated across three engineering teams each owning a different layer of the product. That meant owning dev handoff and QA across all three, and prioritizing cross-team work wherever this product depended on other parts of Northbridge's infrastructure.

Two technical constraints surfaced during implementation and had direct design implications. Neither was anticipated during the discovery or design phase, which is itself one of the lessons I'd carry forward from this project.

Technical challenge 01

Servicer-side two-factor authentication breaking the loan connection

The two-factor authentication step lived with the loan servicer, not with the benefit itself. To calculate each employer contribution, the benefit had to re-authenticate with the servicer through Finicity on a recurring basis and pull the borrower's latest payments. The servicer's own two-factor check could interrupt that handshake and quietly drop the connection, sometimes on the first sync, sometimes months after enrollment. The visible symptom on our side was that payments stopped syncing, with no explanation to the borrower and a real risk of a missed contribution. Since we could not change the servicer's security step, the design had to own the recovery: a clear disconnected state that explained what happened and gave the borrower a simple path to reconnect their loan account and resume syncing, readable even by someone who was long past enrollment and no longer remembered the setup.

Technical challenge 02

NAVIENT's fragmented account structure

NAVIENT issues a separate loan number for every loan a borrower takes out, typically one per semester, and separates subsidized from unsubsidized debt into further loans on top of that. A borrower who financed four years of study could arrive carrying twenty or more individual loans under a single servicer, and NAVIENT opens a second account once the first one fills. Pulled straight through Finicity, that borrower's debt surfaced as a scattered list they did not recognize as their own. I designed the loan confirmation step to absorb the structure rather than pass it along: one row per servicer showing a single balance, with the individual loans available underneath on request. The account layer NAVIENT uses internally is never shown at all. Borrowers confirm what they owe in one line, and open the detail only if they want it.

The failure

Summary view

Benefit summary with a page level alert that a loan account was disconnected, and an inline error on the NAVIENT row with a link to reconnect, while the other three loan accounts continue reporting payments

The failure is flagged in place, on the row it belongs to. Every other account keeps reporting payments, so the borrower reads the problem as specific rather than total, and knows which one account needs their attention.

The consequence

Payments detail

NAVIENT payments page showing an account balance of $8,000.00 and $5,000.00 in tracked loan payments, with an empty state explaining that no new payments have arrived since the connection dropped and a button to reconnect through Finicity

Drilling into the broken account shows what actually stopped. Tracked payments sit frozen at $5,000.00 and nothing new has arrived, which is the contribution the borrower stands to lose if the connection is not restored before the period closes.

Benefit summary confirming the servicer connection has been restored and payment data is syncing again, with a reconnected confirmation on the NAVIENT row where the earlier error appeared
Recovery. The connection is restored and the account is confirmed reconnected on the same row that carried the error, so the borrower sees the fix in the place they saw the problem.
Default

One row per servicer

Loan confirmation step showing a single NAVIENT row with one balance and one payments figure, with the individual loans collapsed out of view

The borrower confirms one balance per servicer. NAVIENT's internal account structure never appears, because it is an artifact of how the servicer stores debt rather than anything the borrower needs to reason about.

On request

Individual loans

The same loan confirmation step expanded, revealing five individual NAVIENT loan numbers with their own balances and payment figures summing to the servicer total above them

Expanding reveals the individual loans behind the balance, each with its own figures, for borrowers who want to verify the detail before they enroll. The disclosure is available, never imposed.

Design principle When an infrastructure reality creates user confusion, the design is responsible for absorbing it, not surfacing it. Borrowers shouldn't need to understand why their debt appears as two separate accounts. They just need to know it's all theirs.
07 / Outcomes

Outcomes

The benefit launched with two strategic employer clients and exceeded projections immediately. Its reception in the benefits industry extended well beyond the initial client relationships.

Benefit summary showing an active benefit period with $1,900.00 accrued against $8,000.00 in tracked student loan payments across four loan accounts, and an inline prompt on the one account not yet reporting payments
The benefit accruing. Payments sync, the contribution accumulates, and any account not yet reporting payments is flagged inline so the borrower can act before the period closes. This is the ongoing visibility research asked for, and what the numbers below rest on.
08 / Reflection

What I'd do differently

This project moved faster than anything I had worked on at Northbridge. That speed created gaps worth naming honestly.

Finicity proof-of-concept before the enrollment design

The servicer-side two-factor disconnect and the inconsistent NAVIENT account structures were discovered during implementation, not during discovery. If I were starting over, I would have pushed for a technical proof-of-concept on the third-party loan connection before designing the enrollment flow around it. Those edge cases would have been known design constraints from day one, rather than problems the design had to absorb mid-build.

The ineligibility experience deserved earlier investment

The Ineligible Borrower segment surfaced during research, which was valuable. But the "not eligible" state ended up being addressed reactively rather than designed with the same intentionality as the happy path. A named segment in the research phase deserved a named design problem from the start. The final state is better than a generic error, but it could have been more, and the opportunity to build something genuinely useful for those borrowers was partly lost.

Documentation for the teams who inherited the work

This product required two more years of integration work after I rolled off. The teams inheriting it were navigating design choices made under a specific set of constraints, including the standalone architecture, the regulatory approval requirements, and the Finicity dependency, and a cleaner record of why those decisions were made would have given them a stronger foundation. Design rationale is not just useful during a project. It earns its value most when the people who made the decisions are no longer in the room.

Explore other work

← Back to portfolio