PharmaGuide
Supplement intelligence, built with pharmaceutical discipline.
A connected platform: a Flutter app that scans and explains supplements, a Python pipeline that scores products on a six-pillar, 100-point model, a Next.js website, and an assistant where known high-risk interactions are answered by deterministic rules, never by a model.
What we delivered: Product, data engineering, mobile, web and AI safety architecture
Magnesium Glycinate
Example brand · 120 capsules
Product quality
81/100 Very good
Score breakdown
- Formulation17/20
- Dose16/20
- Evidence14/20
- Transparency13/15
- Verification12/15
- Safety & hygiene9/10
Verdict precedence
- BLOCKED>
- UNSAFE>
- NOT_SCORED>
- CAUTION>
- POOR>
- SAFE
No amount of quality points overrides a safety verdict.
Assistant · known high-risk pair
Can I take ginkgo with warfarin?
This combination can increase bleeding risk. Please talk to your pharmacist or prescriber before taking them together.
Interactive preview rebuilt from the real PharmaGuide screen, with sample data. Not connected to production.
- products in the catalog
- 180,000+
- products in the catalog
- scoring pillars, 100 points
- 6
- scoring pillars, 100 points
- deterministic response routes
- 41
- deterministic response routes
- declarative safety gates
- 12
- declarative safety gates
Figures from the PharmaGuide website, pipeline and assistant READMEs.
The problem
Supplement labels don't say whether a form is bioavailable, whether an ingredient was recalled, or whether the evidence holds up. And a general-purpose chatbot is the wrong tool when someone asks about warfarin and ginkgo.
What we built
A staged scoring pipeline
Clean, enrich and score NIH label records. Ingredients are resolved to UMLS, PubChem, FDA UNII and RxNorm identifiers, and every stage is resumable with its own output contract.
A six-pillar, 100-point score
Formulation 20, Dose 20, Evidence 20, Transparency 15, Verification 15, Safety and hygiene 10. A banned substance always blocks a product, whatever its quality points.
Deterministic before generative
Emergency detection runs before the rate limiter. Known high-risk combinations resolve through 41 reviewed routes and 12 data-driven safety gates, and a validator checks every reply.
Designed for failure
Primary model, second tier, cross-vendor fallback and per-provider circuit breakers. When every provider fails, a deterministic safe reply is returned instead of an error.
An app that shows, not recomputes
The Flutter app displays pipeline scores as published, from an over-the-air catalog database, with a checksum-pinned interaction database and a separate local user store.
Governed claims
Clinical claims carry review dates and sources. A release gate in CI and on every deploy blocks a release when a claim is overdue.
Architecture
How it fits together
Sources
- NIH DSLD labels
- FDA recalls + CAERS
- PubMed evidence
Pipeline
- Clean
- Enrich (UMLS, PubChem, UNII, RxNorm)
- Score v4 · six pillars
- Safety verdict
Data
- Supabase
- OTA catalog SQLite
- Checksum-pinned interaction DB
Assistant
- Emergency detection
- Deterministic routes + gates
- Grounded generation
- Reply validator
Surfaces
- Flutter app
- pharmaguide.io
- Chat widget
Quality scores describe the product, not whether it is right for a specific person. PharmaGuide does not replace advice from a pharmacist or prescriber.
Want something like this?
Next project
FieldOps AI
Field workforce platform
The system that proves work happened.