Upland Advocacy

Upland Advocacy

Upland Advocacy

Built to help health advocates quickly connect patients to the right financial support

Built to help health advocates quickly connect patients to the right financial support

Built to help health advocates quickly connect patients to the right financial support

Modular policy tool for faster eligibility matching

Modular policy tool for faster eligibility matching

Modular policy tool for faster eligibility matching

Introduction

Introduction

Speed and clarity for policy input, when every second counts on a call

Speed and clarity for policy input, when every second counts on a call

Speed and clarity for policy input, when every second counts on a call



Health advocates often support underserved patients by matching them to financial assistance programs.

But during calls, they scrambled to locate the proper eligibility rules across hundreds of policies, creating delays and risking missed support.



Health advocates often support underserved patients by matching them to financial assistance programs.


But during calls, they scrambled to locate the proper eligibility rules across hundreds of policies, creating delays and risking missed support.



Health advocates often support underserved patients by matching them to financial assistance programs.

But during calls, they scrambled to locate the proper eligibility rules across hundreds of policies, creating delays and risking missed support.

I led the 0->1 design of a modular eligibility system that organizes complex policy logic into structured inputs and applies real-time validation. This reduced errors, prevented mismatches, and helped advocates match patients faster under pressure.

I led the 0->1 design of a modular eligibility system that organizes complex policy logic into structured inputs and applies real-time validation. This reduced errors, prevented mismatches, and helped advocates match patients faster under pressure.

* UI shown is partially redacted due to NDA.

* UI shown is partially redacted due to NDA.

Timeline

Timeline

2022 Dec - 2023 Feb

2022 Dec - 2023 Feb

Team

Team

Me (Lead Product Designer)

Me (Lead Product Designer)

Ibadat Shaney (Product Manager)

Ibadat Shaney (Product Manager)

Suhail Amhed (Lead Business Analyst)

Suhail Amhed (Lead Business Analyst)

Aswhin Kumaar (Business Analyst)

Aswhin Kumaar (Business Analyst)

Sana Ru (Lead Frontend Developer)

Sana Ru (Lead Frontend Developer)

Shardha Sapra (Senior Frontend Developer)

Shardha Sapra (Senior Frontend Developer)

Deliverables

Deliverables

Research | IA

Research | IA

UI System | Visual Design

UI System | Visual Design

Interaction Design

Interaction Design

Dev Handoff | QA

Dev Handoff | QA

Project Scope

6 Weekly Sprints & Cadence

We worked in 6-week sprints covering data structures, rule modeling, user interviews, and system design. I collaborated daily with BAs, the project owner, and developers to define requirements and structure program logic.

Sprint Timetable

Challenges

Eligibility rules were difficult to locate, confirm, and act upon, especially when every second counted

Manual Spreadsheet

Fragmented Policy Logic

Eligibility rules differed among hospitals, facilities, and programs, each using unique formats, thresholds, and exceptions.

High Mismatch Risk

Slight variations, such as insurance overrides, residency exceptions, and household size buckets, often led to incorrect determinations.

No Unified System

Critical eligibility criteria were spread across different spreadsheets and versions, making quick verification nearly impossible during calls.

Goals

I framed the design goals around turning inconsistent policy data into a modular system that advocates could search, edit, and apply in real time while scaling as policies evolved

01_ Make Policies Searchable

Turn scattered policy data into searchable fields, so advocates can match rules in seconds

02_ Define Eligibility Clearly

Translate vague criteria into clear, reviewable logic that advocates can trust in real time

03_ Prevent Errors at Scale

Use real-time validation to catch errors early and scale new rules without slowing calls

Understanding the Context

Designing for real-time decision-making under call pressure

Matching logic only made sense once I understood the real-life constraints advocates faced during calls. So, I worked closely with clients and the product team to clearly structure the flow.


Even while working fully remote, I kept the feedback loop tight. Daily meetings and consistent client input helped identify edge cases we would've otherwise missed.

Daily Syncs, Remote First

Maintained alignment despite changing priorities and no in-person context

Consistent Client Feedback

Exposed gaps and challenged unclear assumptions early

Support Team Insights

Revealed complex edge cases and call-specific blockers

Interview Synthesis

Critical care breaks down when rules are undefined, and systems are disorganized

I interviewed 10 active users to identify where policy lookup and decision-making failed. Their stories highlighted recurring issues with clarity, speed, and reliability.

Confusing or Missing Rules

Application windows and eligibility criteria varied widely; some allowed 30 days, others 90. Many policies didn't specify any rule at all, forcing advocates to guess or look up manually.

Application windows and eligibility criteria varied widely; some allowed 30 days, others 90. Many policies didn't specify any rule at all, forcing advocates to guess or look up manually.

"I have to go through multiple documents to find matching eligibility rules."

Lost in Tabs

During the calls, advocates juggled multiple Excel files to verify coverage details. This slowed responses, caused stress, and increased the risk of errors.

During the calls, advocates juggled multiple Excel files to verify coverage details. This slowed responses, caused stress, and increased the risk of errors.

"I'm busy flipping tabs instead of helping. Tasks became overwhelming."

Frequent Mismatches & Delay

Unclear formats and complex logic often caused missed matches. One advocate misread an income rule that said "usually qualifies under 60% FPL", which the system couldn't apply.

Unclear formats and complex logic often caused missed matches. One advocate misread an income rule that said "usually qualifies under 60% FPL", which the system couldn't apply.

"I once gave someone the wrong info. Now I double-check every single time."

Data Structure Diagram

The domain model defined how the entire system should behave

Policy rules were too inconsistent to design around, so I first mapped all entities and rule dependencies into a single unified model that the system could reliably use.

Core Entities | Rule Models & Validation Flows

System Requirement Overview

The core requirements of a highly adaptable policy system

Eligibility workflows rely on inconsistent, multi-layered policy data that covers health systems, facilities, qualifiers, discount rules, documents, and status logic. Clarifying these requirements helped define what the system must reliably support before proposing solutions.

3 Core Requirements

Exploring Solutions

From recurring pain points to a modular system built for speed and accuracy, solutions focus on:

Guided Rule Builder

Combine rules into a single guided form to eliminate file-switching and reduce vague logic

Smart Policy Filter

Inconsistently reveals matching policies with clear criteria, no spreadsheet required

Live Validation Alerts

Flag incomplete or unclear rule entries immediately to prevent errors

Solutions

Improved key flows and requirements through form structure and logic-driven interface

Improved key flows and requirements through form structure and logic-driven interface

01_ Guided Rule Builder

Analysts had to switch between multiple screens to complete a single policy, which caused confusion about what was missing and led to inconsistencies.


I reorganized the whole process into a guided builder that displays requirements in a logical order. This helped analysts complete policies without guesswork and ensured each rule was created with proper context.

Early version

Limited logic capture

The early UI only listed buckets and discount rules as two basic categories. This couldn't handle exceptions or combined conditions, causing mismatches or unclear qualification logic.

Final

Flexible logic composition

So, I redesigned it as a more flexible, structured form that supports combined rules, conditional exceptions, and more straightforward prompts, reducing errors and helping analysts and advocates apply accurate requirements.


*Want to see the full eligibility form?

Extend full view

Extend full view

02_ Integrated Health System Dashboard

A major source of errors came from analysts referencing external spreadsheets to confirm which facilities belonged to which health system.


So, I made sure to display health systems and facility mappings directly within the policy workflow to remove that dependency. This provided analysts with immediate clarity and eliminated the need to verify data outside the tool.

Early version

Isolated view without details

Isolated view without details

The initial dashboard only listed basic information about facilities and policies without showing their relationship. This still left advocates to work to piece details together manually.

Final

Connected system with actionable info

Connected system with actionable info

To fix this, I unified key info for each health system, showing relationships between systems while enabling quick search and in-context add actions. So, advocates can navigate complicated policies in one place.

Policy Logic Status Update

This status model was also restructured to enable more accurate progress tracking, aligning the system logic with the redesigned policy workflow.

03_ Building Flexibility into Eligibility logic

Rather than hard-coding rules, I introduced a modular logic framework that let analysts define eligibility requirements step-by-step. This supports scenarios ranging from simple to highly variable across different health systems and policies.

Eligibility Logic Variation 1 - Qualifying Buckets

Eligibility Logic Variation 1 - Qualifying Buckets

Step 1 : Set a basic eligibility threshold

Step 1 : Set a basic eligibility threshold

Use case: An initial assessment to verify if the patient meets the minimum eligibility threshold for assistance (e.g., FPL 200%).

I designed this as the simplest block in the flow so analysts can quickly set a baseline and avoid early rule conflicts.

Key benefit: faster setup and a solid base for more advanced rules

Key benefit: faster setup and a solid base for more advanced rules

Step 2: Create additional income brackets

Step 2: Create additional income brackets

Use case: Hospitals often set multiple income ranges with varying discount levels. (e.g., FPL 200% gets 100% discount, 300% gets 50%).

Analysts frequently needed 3-5 brackets, and manually recreating each range caused overlaps and errors. I added a bracket builder that lets them duplicate, edit, and reorder brackets safely without breaking thresholds.

Key benefit: fast, error-resistant way to support hospital-specific income rules

Key benefit: fast, error-resistant way to support hospital-specific income rules

Step 3: Combine different condition types

Step 3: Combine different condition types

Use case: Programs often require multiple factors to be met simultaneously (e.g., FPL > 200% AND Age 65).

Previously, conditions were spread across fields, making AND/OR logic ambiguous. I unified all condition types into a single structured form so that ("AND within a group, OR across groups") is explicit and easy to follow.

Key benefit: clear logical structure that prevents misinterpretation

Key benefit: clear logical structure that prevents misinterpretation

Step:4: Finalize complex qualifiers

Step:4: Finalize complex qualifiers

Use case: Fully composed qualifiers that require multiple factors simultaneously (e.g., Income > 200% AND Age 65 AND Residency = NY within the same group).

Analysts could easily misunderstand which conditions belonged together. I introduced visual grouping so each qualifier group represents conditions that must all be met, making intent more straightforward.

Key benefit: Higher accuracy when defining multi-factor eligibility

Key benefit: Higher accuracy when defining multi-factor eligibility

Following this, I also outlined how layered discounts can be defined using the same logical frameworks.

Eligibility Logic Variation 2 - Discount Rules

Eligibility Logic Variation 2 - Discount Rules

Layered logic with contextual automation

Layered logic with contextual automation

Use case: Programs commonly offer layered discounts across services. (e.g., 75% waiver + 100% discount for specific procedures). Analysts needed a simple way to define these rules without overlaps or errors.

So, I extended the same eligibility logic framework to support discount rules.

Rules can be added, layered, and scoped to specific services, and the system auto-applies them without extra steps, reducing manual work and keeping discounts consistent.

Key benefit: Automated, flexible discount logic that scales with program complexity

Key benefit: Automated, flexible discount logic that scales with program complexity

04_ Real-Time Validation to Prevent Downstream Errors

Analysts frequently built policies that appeared valid on-screen but later failed during enrollment or reporting due to silent issues, such as incorrect income ranges, mismatched discount rules, or missing health system IDs. These errors were only discovered after submission, slowing operations and causing rework.


I integrated real-time validation directly into the form to handle this, so users receive immediate, contextual feedback as they set up rules.

Range Validation

Income brackets and discount ranges often overlapped or created impossible thresholds. My design displays inline warnings as soon as a value exceeds the expected range, allowing analysts to make adjustments before proceeding.

Income brackets and discount ranges often overlapped or created impossible thresholds. My design displays inline warnings as soon as a value exceeds the expected range, allowing analysts to make adjustments before proceeding.

Income brackets and discount ranges often overlapped or created impossible thresholds. My design displays inline warnings as soon as a value exceeds the expected range, allowing analysts to make adjustments before proceeding.

Immediate Rule-Level Feedback

Each issue appears exactly where the mistake occurs rather than blocking the entire form. This reduces cognitive load and makes errors quick to understand and correct.

Each issue appears exactly where the mistake occurs rather than blocking the entire form. This reduces cognitive load and makes errors quick to understand and correct.

Each issue appears exactly where the mistake occurs rather than blocking the entire form. This reduces cognitive load and makes errors quick to understand and correct.

Required System Linkage Checks

I also added a save-time system linkage check so analysts don't accidentally create policies without the required health system, a small guardrail that prevents downstream failures before they happen

Outcome

Modular eligibility logic reduced errors and help advocates match patients faster and more accurate

By reorganizing eligibility rules into reusable, predictable modules and implementing real-time checks where necessary, analysts made fewer mistakes when adding policies to databases and completed matching workflows more quickly.

80%

80%

Fewer policy errors

Fewer policy errors

25%

25%

Faster matching setup

Faster matching setup

52%

52%

Fewer downstream errors

Fewer downstream errors

1.4X

1.4X

New policies scaled faster

New policies scaled faster

Takeaways

What I learned from designing complex systems from scratch

Clear Structure Builds Trust

Clear Structure Builds Trust

I experienced how people become overwhelmed when rules seem vague. Providing a clear, predictable structure helps them feel empowered and helps progress.

I experienced how people become overwhelmed when rules seem vague. Providing a clear, predictable structure helps them feel empowered and helps progress.

I experienced how people become overwhelmed when rules seem vague. Providing a clear, predictable structure helps them feel empowered and helps progress.

Small Reusable Patterns Scale Farther than Big Redesigns

Small Reusable Patterns Scale Farther than Big Redesigns

Instead of trying to reinvent the wheel, a few well-thought-out patterns helped align teams over the long run. This truly shifted my perspective on designing for scale.

Instead of trying to reinvent the wheel, a few well-thought-out patterns helped align teams over the long run. This truly shifted my perspective on designing for scale.

Instead of trying to reinvent the wheel, a few well-thought-out patterns helped align teams over the long run. This truly shifted my perspective on designing for scale.

If You Don't Design For Exceptions, They'll Design Themselves

If You Don't Design For Exceptions, They'll Design Themselves

Every unexpected case eventually led to some downstream issues. Learning to catch and plan for these early on became one of the most valuable habits I gained from this project.

Every unexpected case eventually led to some downstream issues. Learning to catch and plan for these early on became one of the most valuable habits I gained from this project.

Every unexpected case eventually led to some downstream issues. Learning to catch and plan for these early on became one of the most valuable habits I gained from this project.

Explore other projects