GoodRx

Pricing Clarity System

Insurance coverage for consumers and clinicians

Insurance coverage for consumers and clinicians

Insurance coverage data is fragmented, inconsistent, and difficult to interpret at the moment it matters most, when someone is trying to understand what a medication will cost. The challenge was designing a single, clear coverage system that could stay simple for consumers and structured for clinicians without increasing effort for either.
Insurance coverage data is fragmented, inconsistent, and difficult to interpret at the moment it matters most, when someone is trying to understand what a medication will cost. The challenge was designing a single, clear coverage system that could stay simple for consumers and structured for clinicians without increasing effort for either.

ROLE

Lead Product Designer

DURATION

5-month MVP build

SURFACES

iOS / Android / Web

SCOPE

Consumer coverage flow
Clinician coverage experience
Coverage system architecture

OUTCOME

Shared coverage system
Predictable coverage logic
Faster decisions

ROLE

Lead Product Designer

DURATION

5-month MVP build

SURFACES

iOS / Android / Web

SCOPE

Consumer coverage flow
Clinician coverage experience
Coverage system architecture

OUTCOME

Shared coverage system
Predictable coverage logic
Faster decisions

ROLE

Lead Product Designer

DURATION

5-month MVP build

SURFACES

iOS / Android / Web

SCOPE

Consumer coverage flow
Clinician coverage experience
Coverage system architecture

OUTCOME

Shared coverage system
Predictable coverage logic
Faster decisions

The System Tensions We Had to Resolve

Insurance coverage is complex, uncertain, and high-stakes. For people to trust what they see, the system underneath must resolve competing forces without exposing them.

The System Tensions We Had to Resolve

Insurance coverage is complex, uncertain, and high-stakes. For people to trust what they see, the system underneath must resolve competing forces without exposing them.

Data arrives messy

Coverage information comes from different sources, formats, and confidence levels. We turn it into one clear signal so users never feel that complexity.

Data arrives messy

Coverage information comes from different sources, formats, and confidence levels. We turn it into one clear signal so users never feel that complexity.

Two mental models

Consumers care about what they will pay. Clinicians care about coverage requirements. The system must serve both without diverging into two products.

Two mental models

Consumers care about what they will pay. Clinicians care about coverage requirements. The system must serve both without diverging into two products.

Ambiguity is normal

Some coverage rules are known immediately. Others depend on context. The system absorbs uncertainty so the UI only surfaces what’s clear and actionable.

Ambiguity is normal

Some coverage rules are known immediately. Others depend on context. The system absorbs uncertainty so the UI only surfaces what’s clear and actionable.

The price page cannot break

Coverage is important, but GoodRx’s business relies on price clarity. If coverage disrupts workflow or pushes prices out of view, decisions slow and conversions drop.

The price page cannot break

Coverage is important, but GoodRx’s business relies on price clarity. If coverage disrupts workflow or pushes prices out of view, decisions slow and conversions drop.

Trust Leaks We Removed

The clinician experience I inherited surfaced the right data, but system behavior caused hesitation at the moment of care. These trust failures emerged when cost, coverage, and uncertainty collided. We fixed them by improving system behavior, not just how it looks.

Trust Leaks We Removed

The clinician experience I inherited surfaced the right data, but system behavior caused hesitation at the moment of care. These trust failures emerged when cost, coverage, and uncertainty collided. We fixed them by improving system behavior, not just how it looks.

Price context was unstable

Before: Inline expansion pushed price content down, breaking scanning rhythm and disorienting clinicians.

Final: A drawer preserves page stability so prices remain visible while coverage is reviewed.

Price context was unstable

Before: Inline expansion pushed price content down, breaking scanning rhythm and disorienting clinicians.

Final: A drawer preserves page stability so prices remain visible while coverage is reviewed.

Signals broke decision order

Before: Signals followed the wrong hierarchy, with overlapping terms that obscured meaning.

Final: Coverage signals are ordered to match clinical decision-making, with each signal carrying clear meaning.

Signals broke decision order

Before: Signals followed the wrong hierarchy, with overlapping terms that obscured meaning.

Final: Coverage signals are ordered to match clinical decision-making, with each signal carrying clear meaning.

The system demanded certainty before earning trust

Before: Three required fields (insurer, plan, type) forced recall before coverage.

Final: Search replaces recall. Missing plan details never block progress.

The system demanded certainty before earning trust

Before: Three required fields (insurer, plan, type) forced recall before coverage.

Final: Search replaces recall. Missing plan details never block progress.

How We Made Coverage Trustworthy

Insurance data arrives fragmented and uncertain.
The coverage model standardizes meaning.
The rules govern how that meaning is revealed.
The surfaces express those decisions where cost or care is on the line.

We established four rules the system must follow, and reinforced them on the surfaces where those decisions live.

How We Made Coverage Trustworthy

Insurance data arrives fragmented and uncertain.
The coverage model standardizes meaning.
The rules govern how that meaning is revealed.
The surfaces express those decisions where cost or care is on the line.

We established four rules the system must follow, and reinforced them on the surfaces where those decisions live.

Rule 1 — Entry protects context

Insurance appears only after users understand cost.

Consumer: Users first see pharmacy prices, then choose to check insurance beneath them.

Clinician: The coverage drawer opens without shifting price placement or interrupting workflow.

Rule 1 — Entry protects context

Insurance appears only after users understand cost.

Consumer: Users first see pharmacy prices, then choose to check insurance beneath them.

Clinician: The coverage drawer opens without shifting price placement or interrupting workflow.

Rule 2 — Inputs keep decisions moving

People shouldn’t need perfect insurance knowledge to check coverage. The system absorbs what’s missing and keeps progress moving.

Consumer: They can check insurance coverage without plan details.

Clinician: They can confirm insurance viability without plan details.

Rule 2 — Inputs keep decisions moving

People shouldn’t need perfect insurance knowledge to check coverage. The system absorbs what’s missing and keeps progress moving.

Consumer: They can check insurance coverage without plan details.

Clinician: They can confirm insurance viability without plan details.

Rule 3— Signals follow real decision order

Users shouldn’t have to reorder information in their head.

Consumer: Cost leads. GoodRx prices remain visible for comparison.

Clinician: Coverage leads. Tier first, then cost and PA context.

Rule 3— Signals follow real decision order

Users shouldn’t have to reorder information in their head.

Consumer: Cost leads. GoodRx prices remain visible for comparison.

Clinician: Coverage leads. Tier first, then cost and PA context.

Rule 4 — Stress should never break trust

Even when signals fail, trust keeps moving. The experience stays interpretable and actionable, no matter what data is missing.

Consumer: Fallback states still show the next best action.

Clinician: Partial signals still support safe prescribing.

Rule 4 — Stress should never break trust

Even when signals fail, trust keeps moving. The experience stays interpretable and actionable, no matter what data is missing.

Consumer: Fallback states still show the next best action.

Clinician: Partial signals still support safe prescribing.

One System, Two Behaviors

Trust comes from how a system behaves when people are unsure.

Consumers decide whether to use insurance. Clinicians decide how to prescribe with it. Different pressures. Same rules.

The coverage model turns messy data into clear meaning. Each surface leads with the signal that matters most:

Cost first for consumers. Coverage first for clinicians.

One system with two decision rhythms.
Progress protected everywhere.

One System, Two Behaviors

Trust comes from how a system behaves when people are unsure.

Consumers decide whether to use insurance. Clinicians decide how to prescribe with it. Different pressures. Same rules.

The coverage model turns messy data into clear meaning. Each surface leads with the signal that matters most:

Cost first for consumers. Coverage first for clinicians.

One system with two decision rhythms.
Progress protected everywhere.

What Designing for Price Clarity Taught Me

Principles that bring order to complexity

Strong models matter. Clarity starts upstream, not at the UI.

Language shapes trust. Precision and approachability must coexist.

Hierarchy guides interpretation. The right order reduces cognitive load

One system can serve many users. A shared model can flex.

Reflections

Designing for price clarity reinforced how heavily decision-making depends on information structure. People move quickly, look for the strongest signal, and trust what feels well ordered. Labels, spacing, and hierarchy mattered as much as the data.

This work reshaped how I think about multi-audience systems. Consumers and clinicians need different things, but clarity doesn’t require separate solutions. When complexity is absorbed by the system, people can make decisions faster and with confidence.

What Designing for Price Clarity Taught Me

Principles that bring order to complexity

Strong models matter. Clarity starts upstream, not at the UI.

Language shapes trust. Precision and approachability must coexist.

Hierarchy guides interpretation. The right order reduces cognitive load

One system can serve many users. A shared model can flex.

Reflections

Designing for price clarity reinforced how heavily decision-making depends on information structure. People move quickly, look for the strongest signal, and trust what feels well ordered. Labels, spacing, and hierarchy mattered as much as the data.

This work reshaped how I think about multi-audience systems. Consumers and clinicians need different things, but clarity doesn’t require separate solutions. When complexity is absorbed by the system, people can make decisions faster and with confidence.

Made with love ♡

Made with love ♡

© 2026 Michael Fofrich

© 2026 Michael Fofrich