Policy Lens
Inspiration
Market access analysts waste hundreds of hours a year doing the same thing: opening payer websites, downloading PDFs, and manually copying coverage data into spreadsheets. One question like "What does Cigna require for Humira?" can eat an entire afternoon. That inefficiency felt like a solvable engineering problem, not an industry norm to accept.
What We Learned
Payer policy documents are intentionally inconsistent. UHC publishes single-drug PDFs. UPMC buries everything in 200-page mega-documents. BCBS sometimes has no downloadable PDF at all. Normalizing coverage data across these formats taught us that the hardest part of market access intelligence is not the analysis, it is the ingestion.
We also learned that "covered" is not a binary. A drug technically covered with a 10-step prior auth ladder is functionally inaccessible. That insight shaped the PA Friction Score.
How We Built It
We built Policy Lens as a full-stack web application with a document ingestion pipeline at its core. PDFs are processed through OCR and entity extraction, then vectorized for semantic search. The structured output feeds a normalized data model that powers the cross-payer comparison grid, change detection diffs, and the AI Ask interface. The frontend surfaces everything through a single search-first entry point.
Challenges
Getting consistent structured output from wildly inconsistent source documents was the hardest problem. A clinical criteria section looks completely different across payers, and even across documents from the same payer. We had to build extraction logic robust enough to handle partial data without silently dropping coverage conditions that matter clinically.
Change detection was the other major challenge. Most policy updates are formatting or administrative. Flagging every diff as clinically significant would create noise that analysts would learn to ignore. Teaching the system to distinguish a Clinical Major change from a Cosmetic one required building a classification layer on top of raw diffs.
Built With
- claude-sonnet
- fastapi
- material
- pdfplumber
- playwright
- pymupdf
- python-3.11
- react-18
- sqlite
- tailwind-css
- vite
Log in or sign up for Devpost to join the conversation.