Ask a general-purpose model how a CYP2C19 intermediate metabolizer responds to clopidogrel and you will get a fluent answer assembled from memory. It is frequently right, which is what makes it dangerous — there is no way to tell the right ones from the wrong ones, and no citation to check.
A lookup, not a generation
The path from diplotype to phenotype to drug guidance is a deterministic table walk. A CYP2C19 *1/*2 resolves to intermediate metabolizer, which resolves to the CPIC recommendation for clopidogrel and the SSRIs — cited to the guideline it came from. The model is not consulted at any step, so it cannot improvise a recommendation that reads like the real one.
Unknown is a first-class answer
An unrecognised allele, gene, or diplotype returns indeterminate. Not a best guess, not the nearest match, not an interpolation. Refusal paths are covered by their own tests, because the failure this design exists to prevent is a fabricated recommendation, and a system that fabricates only rarely is still a system you cannot rely on.
The prompt layer is held to the same rule from the other direction: the model is forbidden from calling star alleles, diplotypes, or carrier status from raw genotype itself, and the guidance tool's not-found path is enforced rather than advisory.
What this deliberately does not do
- A curated CPIC seed covering CYP2C19 with clopidogrel and SSRI guidance — not the full CPIC or PharmVar corpus
- Guidance is population-level and informational; dosing decisions belong to a prescriber or pharmacist
- Unknown inputs return indeterminate rather than a nearest match