Stanza
I built Stanza to chase a frustrating question: when a resistance mutation kills a cancer drug, can you get to a redesigned molecule in minutes instead of years?
Core trick
Claude extracts a design brief from a paper PDF with each field linked to its source sentence, then designs covalent molecules that are docked and ranked in a loop.
Description
I built Stanza to chase a frustrating question: when a resistance mutation kills a cancer drug, can you get to a redesigned molecule in minutes instead of years?
You give it a target and a mutation, or you just hand it a research paper. Claude reads the whole PDF and pulls out the design brief, and the part I care about most is that it shows you the exact sentence behind every field and leaves things blank instead of making them up. On an EGFR resistance paper it correctly worked out that the warhead shouldn't hit the mutated residue at all, it should hit a different cysteine deeper in the pocket. That is a genuinely non-obvious call, and watching Claude reason its way there in real time was the moment the whole thing clicked for me. From there Stanza builds the wild-type and mutant structures, has Claude design covalent molecules for that pocket, docks them, ranks them, and feeds the results back so each round is smarter than the last.
What I did not expect was how much of the work turned out to be catching myself being wrong. A selectivity number that looked impressive was an artifact. A confidence score disagreed with the harder structural check on four molecules out of five. I found four separate places where my own headline numbers were misleading, and I fixed or surfaced every one. So Stanza does not pretend to be an oracle. It is a triage filter that shows its work, puts an error bar on every score, and says "not resolved" when a result sits inside the noise. To check the engine wasn't fooling itself, I ran it on a case with a known answer, BCR-ABL T315I, and it scored the defeated drug as defeated and the surviving drug as surviving.
Why it matters: resistance quietly retires real, approved drugs, and the first pass of designing around it is slow and expensive. Stanza compresses that pass into minutes. And in a field where one confident hallucination can send a lab down a dead end for months, a tool that is honest about what it knows and what it doesn't is worth more than one that just sounds sure.
README excerpt
<img width="2160" height="2160" alt="Hero Image _ Built with Claude_ Life Sciences" src="https://github.com/user-attachments/assets/63785ce8-e60d-4e50-9b2c-210a56fa6833" /> <p align="center"> <img src="app/public/stanza.svg" alt="Stanza" width="140" /> </p> <h1 align="center">Stanza</h1> <p align="center"> A structure-based, resistance-aware pipeline that designs and screens small molecules against covalent and steric resistance mutations. </p> --- ## What it is Stanza is a drug-design loop that treats a **resistance mutation** as a first-class input. You give it a protein target (by UniProt accession) and a point mutation, typed directly or **lifted from a paper**: upload a PDF and Claude reads it into a curated site you confirm field by field, every field shown beside the sentence it came from (see [Curating a site from a paper](#curating-a-site-from-a-paper)). It rebuilds the mutant pocket from an experimental structure, asks Claude for candidate molecules conditioned on that pocket, docks each candidate into a **matched wild-type / mutant structure pair**, and ranks the results. The backend is Go (Gin, `:8080`). Cheminformatics and structural biology run in Python helpers (`scripts/`) that the Go services shell out to: RDKit, PDBFixer/OpenMM, OpenBabel, fpocket, and AutoDock Vina. The frontend is React + TypeScript + Vite with Mol\* structure viewers (`app/`). Persistence is Postgres via embedded, ordered SQL migrations (`store/migrations/`); without a databa