Inspiration

Pharmacogenomic (PGx) testing is becoming more common, but the results are hard to act on. Nearly 97% of patientscarry at least one actionable variant, yet many clinicians still cannot confidently explain what something like “CYP2D6 poor metabolizer” means, or quickly determine which of a patient’s multiple medications are affected, how serious the risk is, and whether safer options are covered by insurance. The impact is real: 85% of patients discharged on multiple medications have at least one dangerous drug–drug interaction. And standard PGx checks miss an even bigger problem: genotype alone is incomplete. If a strong CYP inhibitor (for example, fluoxetine) is prescribed with a substrate (for example, metoprolol), it can functionally change the patient’s metabolizer status. This phenoconversion creates drug–drug–gene interactions that per-drug PGx tools do not catch. Cost is the other blind spot. 78% of doctors do not know what medications cost their patients, and they lack real-time visibility into insurance coverage or a way to compare affordable, safer alternatives in one workflow. CYPher solves this.

What it does

CYPher is a pharmacogenomic decision-support tool that takes a patient’s CYP2D6, CYP2C19, and CYP2C9 diplotypes, current medication list, and insurance plan, then runs a four-pass pipeline: Classify each drug as a substrate, inhibitor, or inducer across enzymes Phenoconvert by shifting effective metabolizer status based on co-prescribed inhibitors and inducers, capturing drug–drug–gene interactions standard PGx checks miss Evaluate risk using predicted AUC ratios and a Severity-Adjusted Probability (SAP) model that compares CTCAE-graded adverse events with quadratic severity weighting Rank alternatives by real CMS Medicare Part D formulary tier and coverage The output is an interactive dashboard that flags interactions, summarizes risk, compares side-effect tradeoffs between options, shows insurance affordability, and generates a structured clinician discharge summary.

How we built it

We built a Python FastAPI backend with a modular pipeline (classify to phenoconvert to evaluate to affordability) and Pydantic data models. The phenoconversion engine detects co-prescribed CYP inhibitors and inducers, applies strongest-inhibitor-wins logic aligned with CPIC-style reasoning, and recalculates functional metabolizer status across the full medication system. For side-effect comparisons, the SAP engine pulls adverse-event frequencies from openFDA labels, maps them to CTCAE v5.0 grades, and scores with probability times grade squared, filtering to clinically meaningful events (Grade 3+ or frequency at least 1%) to reduce noise and make comparisons useful. For affordability, we implemented a demo formulary plus a real CMS Medicare Part D ETL (quarterly SPUF ZIP to plan and formulary CSVs to a local SQLite index). We also added RxNorm name-to-RxCUI resolution with caching. The clinician summary is produced via Claude with structured JSON output, and the React plus TypeScript frontend supports guided workflows, enzyme activity visualizations, and an in-app help chatbot.

Challenges we ran into

We ran into significant issues while developing the logic for the side-effect severity module of the project. The severity of a side-effect depends heavily on drug dosage (the more you absorb the worse the side effects are). So, severity would appear low for drugs that weren’t metabolized well, thus returning a positive result on the dashboard (indicating that this is a drug the patient should take). However, on the phenoconversion side our foundational logic was more metabolism → better drug (better effectiveness). In other words, the phenoconversion engine and side-effect severity module were returning perfectly contradictory results that were useless in interpretation. Thus, we pivoted and instead ranked side-effect severity assuming metabolism was constant based on the National Cancer Institute's Common Terminology Criteria for Adverse Events classification system.

Accomplishments that we're proud of

We built a working end-to-end system that goes from raw genotype plus medication input to a clinician-ready discharge summary in one click. The phenoconversion engine does more than flag known pairs. It computes effective metabolizer shifts using activity scores and AUC ratio predictions. We integrated real CMS Medicare formulary data, so affordability reflects actual plan coverage. We also built OCR-based medication extraction so a clinician can photograph a handwritten list and parse it automatically. Finally, SAP v3gives a principled way to compare whether alternatives are truly safer, not just different.

What we learned

Pharmacogenomics has strong science and clear guidelines, but translating them into software that handles polypharmacy and multi-enzyme interactions is hard. We learned practical CYP pharmacology, CTCAE adverse-event grading, and how Medicare formulary data is structured and queried. Technically, we learned that modular pipeline design was the biggest accelerator. Isolating each pass made debugging faster and iteration much more reliable during the hackathon.

What's next for CYPher

Next, we want to expand beyond CYP2D6, CYP2C19, and CYP2C9 to include CYP3A4, CYP1A2, and UGT enzymes, and integrate the full CPIC allele function table for more accurate diplotype-to-phenotype mapping. We also want broader insurance support beyond Medicare Part D, real-time drug pricing, and a patient-facing handout that explains risks in plain language. Longer term, integrating with EHRs via FHIR could automate medication plus genomic intake at the point of care, and building a literature-backed interaction engine could further improve prediction quality and clinical utility.

Built With

Share this project:

Updates