← All posts

What it took to ship AMRnet

The paper went live in Nucleic Acids Research on January 6, 2026. A few people emailed to say congratulations. A larger number emailed to ask whether their country's data was in there yet, and how soon we could add it. That is, I have come to believe, the right ratio.

This is a short post about what it actually took to get AMRnet from a vague idea ("there should be one place to see AMR genomic data, ideally one that loads in under three seconds") to a platform that gets used by surveillance teams, ministries, and researchers across multiple continents.

What AMRnet is

AMRnet is an open, interactive dashboard for exploring antimicrobial-resistance variation across the WHO priority pathogens — Klebsiella pneumoniae, Salmonella Typhi, non-typhoidal Salmonella, E. coli, Pseudomonas aeruginosa, Acinetobacter baumannii, Mycobacterium tuberculosis. You pick a pathogen, a country, a date range; you see what's circulating, what's resistant, what the genomic markers look like. You can drill down to specific genes, plasmids, lineages.

It's built on top of the genomic-typing tools the community already trusts — Kleborate, Pathogenwatch, the Global Typhoid Genomics Consortium pipelines — plus a bespoke ingest layer that takes their outputs and turns them into the dashboards you see on the site.

Three things that turned out to matter more than I expected

1. Internationalisation, before features

Most genomic-surveillance dashboards I've seen are English-first. AMRnet is used heavily in Brazil, India, sub-Saharan Africa, and Southeast Asia. If your interface doesn't speak the language of the person trying to use it on a Tuesday afternoon in a regional reference lab, the data doesn't reach them. We wired in react-i18next from the second sprint, and I have not regretted it once. The cost is small. The reach is large.

2. Data plumbing is the product

People talk about dashboards in terms of charts. The actual work, the work that took two years, is the plumbing behind the charts: getting clean, standardised, dated, geocoded, typed, sometimes-corrected genomic metadata into one place. Most of the engineering complexity of AMRnet is not the React; it's the ingest. If you want a useful surveillance product, plan for that. Budget for it. Hire for it.

3. The dashboard is not the thing. The conversation is the thing.

Every chart on AMRnet has been changed at least once because a microbiologist or epidemiologist looked at it and said something like, "that legend is misleading" or "why is the y-axis log-scale by default?" or, more often, "I think this number is actually wrong, let me show you why." Build the cycle. Make it short. Take the criticism seriously. The version of the platform that exists today is several worlds away from the version we showed the first user group in 2023.

What I'd do differently

Two things, mostly.

I'd invest earlier in observability. We spent the first year flying blind on real-world usage and missed several quietly-broken filters because nobody happened to email about them. Modest analytics — privacy-respecting, aggregated — would have saved months of speculation.

And I'd separate the data layer from the dashboard layer harder, sooner. AMRnet's data is useful to people who don't want our charts; they want our normalised, deduplicated AMR-typing outputs in their own pipelines. That's now a roadmap item. It should have been an architectural principle on day one.

Who actually did this

I'm the lead software engineer; the platform isn't mine. It is Kat Holt's vision, Zoe Dyson's and Megan Carey's epidemiology brain, Vandana Sharma's data work, Mary Maranga and Ebenezer Foster-Nyarko's ingest work, and the typhoid and Klebsiella genomics communities' decade of upstream pipeline-building. Naming everyone properly is in the paper. The thing I want to say here is: research software is not a solo achievement. The reason this one shipped is that the team is unusually good at giving and receiving feedback, and unusually patient with each other.

If you want to use AMRnet

More posts coming on the technical side — how we model genotype-to-AMR-prediction relationships, why we picked MongoDB (for now), how the language pipeline works, why we haven't moved off MERN even though everyone keeps asking. Subscribe to nothing, just check back.

— Louise