Practice Volume Analyzer
A market map for medical practices showing supply and access by specialty and area, with wait times and where a specialty is under-supplied.
HealthTech · Market Intelligence
At a glance
- Category
- HealthTech · Market Intelligence
- Product
- HealthTech · Market Intelligence
- Platform
- Responsive web · Next.js · MapLibre GL + MapTiler
- Our role
- Directory + map · MapLibre · Saturation / opportunity heatmap · End-to-end product UI
- Stack
- Next.js · MapLibre GL · Supabase · US Census
- Outcome
- Practice Volume Analyzer proves the directory, wait-time, and saturation layers can be assembled cleanly from public sources for a real metro and specialty: a where-to-expand view no booking directory offers, a nearby-and-how-long read for…
Booking directories list providers. None of them show the market.
Physicians deciding where to grow have no population-adjusted view of provider density, so expansion is largely guesswork. Patients can't easily see which specialists are nearby or how long the wait is; they bounce between portals. Zocdoc, Healthgrades, and Solv list individual providers to book, but never reveal supply versus demand across an area.
Practice Volume Analyzer assembles the directory, wait-time, and saturation layers from public sources for one metro and specialty set, a defensible angle the crowded 'find-a-doctor-and-book' market doesn't offer. Pilot: ENT · Facial Plastic · Plastic Surgery in Richmond, VA.
A private pilot, on entirely public data.
The pilot sits behind a simple Supabase login so it isn't fully public during testing, but everything inside is built from public sources (NPPES + US Census). No patient accounts, no PHI. Standard flow: sign-in, forgot-password by email, a check-email confirmation, and a token-gated new-password screen.
The map, the list, and the detail, always in sync.
The provider list always reflects the active filters and search, and stays in lock-step with the map: hovering a row highlights its pin, clicking opens the detail. Sort by name or by area.
A detail card carries name, specialty, practice address, and contact, public registry data only, with a small locator map and the matching pin highlighted while it is open.
Filter to what matters, and stay honest about the data.
Selecting a specialty updates the pins, the list, and the saturation shading together; clearing it restores all specialties. Search by name filters the list and highlights matching pins in real time.
Every state is designed: a clear empty state when nothing matches, loading skeletons while data resolves, and low-confidence flags on thin-population areas so noisy ratios never mislead.
Where a specialty is over- or under-supplied.
The defensible differentiator: areas shaded light to dark by providers per 10,000 residents, with a legend and a short read-out naming the most under-served areas for the current filter. Hovering an area shows its provider count, population, and ratio.
Switch the choropleth between county and ZIP granularity; the shading always respects the active specialty filter, and low-population areas are flagged so the signal stays trustworthy.
Every number traces back to a public source.
Settings covers the pilot scope, the specialty taxonomy, notification preferences, and, most importantly, data provenance: which public dataset each layer draws from, when it was last refreshed, and the citation behind every wait-time figure. A scheduled job re-pulls NPPES and recomputes saturation on a weekly cadence, and a 'data last updated' date stays visible throughout the app.
The whole market, on one honest map.
Practice Volume Analyzer proves the directory, wait-time, and saturation layers can be assembled cleanly from public sources for a real metro and specialty: a where-to-expand view no booking directory offers, a nearby-and-how-long read for patients, and zero PHI.