Inspiration

What it does

How we built it

Challenges we ran into

Accomplishments that we're proud of

Inspiration

Benefit Card Navigator started at home. <!-- Replace with your story: who it was (you, a parent, a grandparent?), which card they had (Medicare, Medicaid, insurance), and the moment it went wrong. For example: they paid out of pocket for something their plan covered, or gave up after calling Member Services. -->

People get a health insurance card but no clear answer to a simple question: what does this card actually cover? The answer exists, but it's buried in 200-page member handbooks, government spreadsheets and PDFs. Allowances for over-the-counter items, eyewear, hearing aids and dental go unused because nobody can find them. We wanted someone to be able to pick the card in their wallet and see, item by item, what's covered, with proof.

## What it does

You pick your card type (an insurance card or a Medicaid card), the name on the card, and your exact plan. The app then shows a marketplace of products, services and benefits, each marked Covered, Conditional, Not covered or Not yet verified. Every claim opens a drawer with the verbatim quote from the official document, the page it's on, and a link to the source.

A built-in "Ask my plan" assistant answers questions like "Does my plan cover hearing aids?" using only that plan's verified rules, and cites them.

A doctor, dentist and eye-doctor finder covers more than 115,000 New York clinicians and shows whether each one is currently enrolled in NY Medicaid.

## How we built it

This was a solo build with AI tools:

  • Base44 for the app itself: entities (Plan, CoverageRule, CatalogItem, Provider), the pages, data imports, and the built-in LLM behind "Ask my plan".
  • Claude Code to help write the data pipeline in Python and Node.js. The pipeline turns official government files into clean, importable data.

The pipeline pulls from official sources only:

  • the CMS 2026 Medicare Advantage / Part D Landscape and Plan Benefit Package files
  • the CMS 2026 New York State-Based Exchange public use file and the Unified Rate Review file
  • the NYS Department of Health Medicaid Managed Care Enrollment Report (September 2026)
  • the CMS Doctors & Clinicians national file, joined with the NYS Medicaid Enrolled Provider Listing

For New York, the result is $2{,}314$ plans, about $25{,}000$ coverage rules, $71$ catalog items, and $213{,}518$ provider-location rows.

### The core rule: no proof, no claim

Every coverage rule must carry a verbatim excerpt from a source document $d$ whose fingerprint is recorded as hash $h$. The build accepts rule $r$ with quote $q$ only if

$$ \text{accept}(r) \iff \operatorname{SHA256}(d) = h \;\land\; \operatorname{norm}(q) \subseteq \operatorname{norm}(d) $$

where $\operatorname{norm}$ collapses whitespace. If the quote isn't really in the document, the build fails. A plan without verified rules is shown as "benefits under review". It is never shown as covered.

## Challenges we ran into

Data scraping was the hardest part by far.

  • Messy official files. The national clinician file is about $800$ MB and the NY Medicaid provider listing is about $190$ MB.
    • The Medicaid plan report is a PDF whose county tables break across pages, so a naive parser assigned plans to the wrong counties.
    • The exchange file has two different deductible layouts (integrated vs. separate medical and drug).
    • One column is literally misspelled COINSURNACE.
    • Values like "Not Applicable" had to be turned into honest wording rather than "Not Applicable deductible."
  • No single source of truth. Plans, benefits, doctors and Medicaid enrollment live in at least seven separate government sources with different IDs.
    • We joined clinicians to Medicaid enrollment by NPI, and exchange plans to insurer names by HIOS issuer ID.
    • We matched Medicare plans by contract, plan and segment ID: the H1234-001 printed on the card.
  • Accuracy vs. scraping. Scraping gets you data. It doesn't get you truth. It would have been easy to fill gaps with "typical" coverage, but on a health app a wrong "covered" can cost someone real money. Holding every rule to a verbatim, hash-checked quote meant throwing away anything we couldn't prove, and labeling it honestly instead.
  • Size. The New York provider data alone was $72$ MB as JSON. We shrank it to $45$ MB with a columnar format and default values, and loaded plan data lazily, only when a user picks New York or a plan.

## What we learned

  • Healthcare data is deeply fragmented. Medicare, Medicaid and marketplace plans each follow different rules and publish data in different places. Some of it surprised us. Since April 1, 2023, New York Medicaid pharmacy benefits (prescriptions, covered OTC drugs, diabetic supplies) have been covered by the state's NYRx program, not by the Medicaid health plans themselves. A "complete" answer has to know that.
  • Building with Base44. An AI app builder let us spend our time on the hard part, which was the data and its accuracy, and go from entities and imports to a working app quickly.
  • Trustworthy AI needs grounding. A chatbot that "knows about insurance" will confidently make things up. Grounding "Ask my plan" in a single plan's cited rules, and telling it to say "I couldn't find that" otherwise, makes it something you can trust.

## What's next

  • Plan-by-plan Medicaid member handbooks
  • Provider network data per plan, so we can say whether a doctor is in your plan's network
  • Expanding beyond New York and Rhode Island

What we learned

That its hard to do scraping

What's next for Medicard

Talking to more doct

Built With

Share this project:

Updates

Submission history