Milliman MedInsight.
making complex data clear
Milliman MedInsight · Product Strategy Internship

Designing a provider-roster
comparison module.

Milliman roster comparison interface displayed on a silver laptop in a bright office.

Milliman MedInsight provides healthcare analytics. Its Network Optimizer helps organizations evaluate provider networks and identify gaps in access to care. A provider roster is the list of providers in a network. Comparing rosters helps an analyst understand how changing that list could affect access, compliance, and cost. About Network Optimizer ↗

Why this matters: A roster change can shape whether people can find an in-network provider close to home. Giving analysts a clearer way to compare options helps them spot access gaps and focus on changes that could make care easier to reach.

As a Product Strategy Intern on the Product Development team , I designed a new roster-comparison module from the ground up. Leadership supplied the brief and constraints. My responsibility was to work out the workflow and interface within Milliman’s existing design system.

Role
Product Strategy Intern
Team
Product Development
Foundation
Existing design system
01 · The brief

Working out what comparison needed to mean.

The module did not exist, and there was no module-specific documentation to build from. There were useful resources around it: previous user research, existing Figma files, and the design system. I reviewed those first, then sketched the flow.

The request went beyond showing two provider lists. Analysts needed to see where networks differed against the same requirements, understand the providers behind a difference, and consider what to change. That matters because a network can meet a requirement for one specialty or location and miss another.

The broader concept could support comparing two or more rosters. I focused the brief on two, then worked through roster selection, the comparison matrix, summaries, and the supporting actions before extending the what-if flow.

02 · Setting up a fair comparison

Choose the rules once, then compare.

I started with the order of operations: select the first roster, set the rules, and add the second roster under those same rules. If the requirements changed between columns, the analyst could mistake a settings difference for a network difference.

The shared settings were rule basis, such as drive time or distance; regulatory framework, such as Medicare Advantage (MA), Qualified Health Plan (QHP), or custom; and standard year. State, county, and specialty filters would narrow the visible results without changing those underlying rules.

Flow from shared filters to provider exploration and a saved roster revision
Low-fidelity sketches · Shared conditions I worked through the relationship between filtering, editing, and saving. The annotations specify that the rosters being compared use identical filters.

Roster identity

Make the starting roster easy to recognize.

I considered how someone would add or remove a roster, find it in My Files, rename it, and distinguish a revision. I explored several entry points before developing the comparison tab.

Review feedback called for an indicator for the original roster. That detail mattered once two similar lists sat beside each other: the analyst needed a stable reference for interpreting a change.

The sketches also explored a return to the original or single view. Keeping these actions visible takes space, but leaves less for someone to remember.

Comparison entry alternatives beside the roster name and inside the filter panel
Low-fidelity sketches · Entry points These alternatives place the comparison action in different contexts. The blue outlines are my original annotations.
03 · Reading the differences

Show the gap behind a pass or fail.

I developed the comparison matrix around roster columns and county-by-specialty results. A color-coded status could show where one roster met a requirement that another missed. Percentages added the size of that difference.

I explored a compact status view and a denser view with progress bars. The choice was about how much explanation to put in the main table before it became difficult to scan.

Status-first roster matrix with pass and fail marks
Low-fidelity sketches · Status view A compact alternative for spotting differences across rosters.
Roster matrix alternative with percentages and progress bars
Low-fidelity sketches · Percentage view Adding magnitude explains more of the result, at the cost of a denser table.

Summary and detail

Give the analyst a next question to investigate.

After the table, I developed the results summary and KPI summary. The concept included measures such as “12 cardiology counties where Roster A is compliant and Roster B is not.” This was an illustrative KPI used to show how the summary could work, not a measured project outcome.

The intended drilldown would open provider-level comparisons from a difference in the matrix, showing who appeared in each roster and the related quality and cost measures. My sketches explored row selection, expanded columns, and a focused view while keeping summary context available.

I wanted the summary to identify where to look and the detail to help explain why. The extra step would need a clear entry point, especially when the table already had many columns.

Annotated specialty drilldown alternatives with row selection and expanded columns
Low-fidelity sketches · Provider detail The sketches question how much detail belongs in the table and explore ways to open a focused comparison.
04 · Acting on the result

Keep a proposed change separate from a saved revision.

Once the comparison table and summary were in place, I developed the fullscreen view, export action, and export pop-up. The broader export concept covered both the provider lists and summarized differences so analysts could take the comparison into a review.

I then began the what-if scenario. The intended flow was to choose a specialty, inspect suggested providers, add one to a particular roster, and see how the compliance and cost differences changed. I developed the beginning of this flow, not a completed simulation.

The sketches explore an explicit apply action and call for change history. A proposed edit should not be confused with a saved roster revision. Adding a confirmation step takes longer, but gives the analyst a clear point at which to commit.

What-if sequence from a selected specialty to suggested providers
Low-fidelity sketches · What-if exploration I explored how provider suggestions would relate to the selected specialty. The pop-up versus replacement-table question remained open.
Provider selection and apply action connected to updated comparison results
Low-fidelity sketches · Applying changes Arrows link a provider edit to the results it would affect. The change-history annotation records another state the workflow needed.

The map needed its own decisions.

The map introduced another challenge: where it should sit beside the comparison, how each roster’s visibility should be controlled, and how to retain the original-roster context. I explored a shared map with per-roster summaries rather than treating geography as a separate screen.

Shared-map exploration with per-roster summaries and visibility controls
Low-fidelity sketches · Map context The layout connects roster identity and geographic context. Labels and placement were still being worked through.
Designing the empty state

I also considered what happens when there is no previous roster to compare or return to. The interface needed an explanation and an unavailable-action state.

No previous rosters found state and unavailable return control
Low-fidelity sketches · Empty state An empty comparison history needs different behavior from a populated one.
05 · So what?

The interface sits upstream of a patient’s drive.

For someone in a rural county who needs a cardiologist, network adequacy is not an abstract compliance box. It can shape whether the nearest in-network specialist is within a reasonable drive. Milliman describes Network Optimizer as a way to evaluate geographic access, identify gaps, and respond to regional provider shortages.

My comparison concept was designed to make that work more actionable. Instead of stopping at “this roster fails,” an analyst could see which county and specialty created the difference, inspect the providers behind it, and explore what a targeted roster change might improve before saving a revision.

Locate

Find the access gap.

The county-by-specialty matrix surfaces where one roster meets a shared travel standard and another does not.

Explain

See what drives it.

Provider-level detail connects a compliance difference to the clinicians present in, or missing from, each roster.

Act

Test a focused change.

The intended what-if flow shows how adding a candidate provider could affect access and cost before the analyst commits.

06 · Published product context

The surrounding analytical workspace.

The brochure shows a specialty compliance summary and a provider-exploration view. These help explain the product setting and visual language. They were published after my internship and are separate from my comparison-module design.

Recreated published compliance summary with access measures and provider counts
Published product interface · Milliman MedInsight. Recreated for clarity. The published summary puts provider counts, time and distance access, and a target beside each specialty. Display values are product examples.
Recreated published provider-exploration interface
Published product interface · Milliman MedInsight. Recreated for clarity. The published layout brings access measures, a map, and provider details together. This reconstruction uses illustrative geography, plotted locations, and provider rows.
07 · Review and next steps

What I brought back to the team.

I presented the comparison table, results and KPI summaries, fullscreen view, and export flow to the team. The review surfaced positive feedback and requested adjustments, which I incorporated into the next round of revisions.

The work gave the team a concrete module design to discuss, including the states and actions around the main table. I learned to give those details attention early: which roster is the original, which rules are shared, and whether an edit has actually been applied.

Documented output

Flows, low-fidelity sketches, comparison and summary designs, fullscreen and export flows, and the start of what-if exploration. This work reached design review, not a production release.

Proposed evaluation

I would check correct identification of the original roster, time to explain a specialty-level difference, and errors distinguishing proposed from applied changes.

Image detail