How we score Medicare plans
Plain-English methodology for the priority-weighted ranking that powers /shop/medicare. If something looks wrong on your results page, the explanation is probably here.
Data sources
- CMS MA/PD Landscape file (PY2026, March release) — every Medicare Advantage and Part D plan offered in Wisconsin, including premium, deductible, out-of-pocket max, contract type, and CMS Star rating.
- CMS Plan Benefit Package (PBP) summary — extra-benefit flags (dental, vision, hearing, fitness, OTC, transportation). Section C dollar amounts not yet ingested; we flag plans without it as “no PBP data.”
- CMS Monthly Prescription Drug Plan PUF — formulary tiers + prior-auth / step-therapy flags keyed by RxCUI for every drug in every plan.
- HHS ASPE 2026 Federal Poverty Guidelines — the basis for Medicaid, MSP, LIS, and ACA subsidy bands.
- RxNorm (NLM) for drug name normalization and ingredient mapping.
- NPI Registry (CMS NPPES) for provider lookups in WI.
Priority weights
Picking a profile card on the priority step (Spec 02) sets one of four weight presets. Each weight is 0–5; they multiply against per-plan attribute scores in the matcher.
| Profile | Doctor | Drug | Premium | Predict | No-PA |
|---|---|---|---|---|---|
| Keep my doctor | 5 | 2 | 2 | 3 | 4 |
| Lowest drug costs | 2 | 5 | 3 | 3 | 3 |
| Lowest premium | 2 | 2 | 5 | 1 | 1 |
| Most predictable | 3 | 3 | 2 | 5 | 4 |
Scoring components
- Estimated annual cost— monthly premium × 12 + plan's expected drug copays for the user's prescriptions (matched via RxCUI to the formulary). When per-visit medical copays aren't known, we leave them out and flag the plan with “premium + real drug copays only.”
- CMS Star Rating— included as-is; weighted higher for “most predictable” profile.
- Network match— based on whether your listed doctors' NPIs appear in the plan's provider directory. Today this uses carrier-published lists which are known to be inaccurate (CMS audits: ~52% of entries wrong); we flag every plan with “verify your doctor in-network before enrolling.”
- Formulary fit— for each prescription, we surface the plan's tier (1–5) and whether it requires PA / step therapy. Lower tiers + no PA rank higher on the lowest-drug-costs profile.
- Extra benefits — PBP flags (dental, vision, hearing, OTC, transport, etc.). Boosted when you mark them as must-have.
- Chronic-condition fit— modest score boost for plans with $0–$10 PCP copay when the user reports any chronic condition. Only fires when we have PBP data (so we don't reward unknown-data plans).
Known limitations
- Per-visit medical copays aren't in the Landscape file — they live in the PBP Section C dataset, which we haven't fully ingested. About half of WI plans show “—” for those fields and a footer flagging missing PBP data.
- Provider directory accuracy is the biggest known gap. Industry standard data sources lag by months and contain ~52% errors per CMS audits. Until we integrate a real-time directory verification API (e.g. Ribbon), every “in-network” claim should be confirmed with the carrier.
- Medigap rates are indicative. Wisconsin doesn't publish a public Medigap rate file. Our Medigap entries show a representative mid-range premium and are flagged with a banner. For real Medigap quotes, call SHIP (1-800-242-1060) or carriers directly.
- Drug pricing varies by pharmacy. We don't differentiate between preferred and non-preferred pharmacy networks yet. For LIS / SeniorCare members, this can be a meaningful difference.
- Star ratings change yearly. Plans new to the market or that just changed contracts may show “no rating yet.” We display the current published rating without weighting for plan age.
Questions or corrections
File an issue on GitHub with what you saw vs. what you expected. Methodology changes are committed publicly with rationale.
Last reviewed April 25, 2026. Methodology files live in packages/matcher/src/index.tsand packages/plan-catalog/src/.