aadi malaviya
~/work/ryniant01 / 05

Ryniant

Rebuilt a synthesis-planning product so that nothing reaches a chemist unless it has been computed or found in the literature.

ROLE   Founding EngineerTYPE   AI drug-synthesis platformFROM   May 2026TO     July 2026
100%of displayed values structure-computed or literature-verified
+25%discoverable synthesis routes, no loss in chemical validity
hours → minutessynthesis planning time
  • Python
  • FastAPI
  • RDKit
  • AiZynthFinder
  • LangGraph
  • FAISS
  • React
  • TypeScript
  • Redis
  • PostgreSQL
  • Cloud Run
Retrosynthesis search from a single target. The highlighted route is the one a chemist can trace, step by step, back to published reaction data.Ryniant — schematic
01
[01]

The problem

Ryniant helps chemists find synthesis routes — the step-by-step recipe for building a target molecule. The original product used a language model to produce those routes. Language models are good at producing chemistry that reads correctly and is not real. For a chemist about to spend a week and a bench budget on a route, a plausible-looking wrong answer is worse than no answer.

02
[02]

What I built

I built a Python microservice combining AiZynthFinder's search with RDKit to plan and rank routes computationally rather than generatively. That moved planning from hours of manual chemist work down to minutes, and it made the output something you could trace rather than trust.

Then I re-architected the pipeline to be evidence-only. Every reaction is checked against PubChem and Open Reaction Database records using FAISS similarity search, enforced by an automated regression test rather than a review step someone could skip. If a reaction has no support, it does not render.

The language model did not disappear — it moved. I built an agent on Claude using LangGraph that proposes novel routes and then fact-checks each one against real reaction data before it surfaces. The model generates candidates; the verifier decides what counts.

03
[03]

The decision I would defend

Putting the model behind the verifier rather than in front of it costs you coverage. There are almost certainly real routes that exist in a chemist's head, and in the model's weights, that our evidence layer throws away because it cannot find a citation.

I took that trade because the failure modes are not symmetric. A missed route costs a chemist a suggestion. A hallucinated route costs them a week. The agent recovered a good part of the lost coverage — routes went up 25% with no validity loss — but the ordering was the point: verify first, expand second.

04
[04]

Shipping it

I built the product end to end: a React and TypeScript frontend on a distributed FastAPI, Redis, and PostgreSQL backend on Cloud Run. Results return in seconds, and a seven-day tenant cache takes repeat queries close to zero.