Skip to content

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.

Tags

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.
ayush00git/stanza★ 20 forksGoApache-2.0Created Jul 7, 2026 · last push Jul 18, 2026

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

Team