Bio-medical & pharmaceutical
Turning exposure-response scripts into a platform three teams could trust
A shared, versioned home for dose-response and exposure-response modelling — so a clinician can run a validated "what if" in minutes, and a question from a regulator can be answered from a run ID.
- Turnaround for a new dose scenario
- 2–3 days → same session
- Simulation runs reproducible from ID alone
- 100%
- Active compounds on shared, comparable infrastructure
- 0 → all
- Sector
- Bio-medical & pharmaceutical R&D
- Scope
- Exposure-response & dose-response modelling, multiple compounds
- Engagement
- Delivery pod with the biostatistics team
- Duration
- 8 months
Stack
- R
- NONMEM
- Python
- Shiny
- PostgreSQL
- Docker
- FastAPI
- React
- MLflow
Practices involved
Discuss a similar problemThe situation
Every biostatistician had their own set of R and NONMEM scripts for exposure-response and dose-response modelling, individually correct and individually unrepeatable by anyone else without a conversation. A clinician who wanted to see a new dose scenario simulated waited days for whichever analyst had bandwidth, and comparing results across two compounds meant reconciling two people's private conventions by hand.
The constraint
This could not become a black box that generates an answer. The statistical methodology had to stay owned by the biostatistics team — their validated non-linear mixed-effects and dose-response models, runnable and shareable, not replaced by something that looks similar and is not accountable the same way. Regulatory submissions also mean a result may be questioned a year later and has to be exactly reproducible, patient-level trial data carries access and de-identification requirements from day one, and clinicians needed a genuinely safe way to explore "what if" scenarios without being able to silently change a validated model's assumptions.
What we built
Models as versioned, runnable artefacts
Existing validated R and NONMEM models were wrapped, not rewritten, into a common interface with pinned environments and versions — the same "wrap, do not rewrite" principle we used for a diagnostics lab's analysis pipeline, applied here to statistical models the team had already validated and had no reason to redo.
A simulation console for what if, with guardrails
Clinicians and pharmacologists can vary dose, population covariates and endpoints within ranges the biostatistics team has pre-approved. A scenario outside the validated range is blocked with an explanation rather than silently extrapolated past where the model is known to hold.
Reproducibility as the default
Every simulation run records its model version, dataset version, parameters and requester, so it can be regenerated exactly from its identifier. That record is the audit trail a regulatory query actually asks for.
Statistics the biostatistics team still owns
New or updated models go through the team's existing validation process before publishing to the platform. The platform is a distribution and execution layer for work they have already signed off, not a shortcut around it.
Access and de-identification built into the data layer
Role-based access scoped to the individual study, de-identified-by-default views for anyone outside the core biostatistics group, and access logging on every query — designed in rather than added after a review flagged it.
What changed
A new dose scenario now runs in the same session a clinician asks for it instead of a two- or three-day wait, and models across active compounds finally run on comparable, versioned infrastructure, so a cross-study question is a query rather than a reconciliation project.
What we would do differently
We let the pilot group start running scenarios before run-level versioning was finished, on the reasoning that it was an internal pilot with no regulatory weight yet. Three of those early scenarios were later cited in an internal report, and we had to reconstruct their exact inputs from chat logs. Versioning should have gated the first run, not the fiftieth.
Outcomes
- Turnaround for a new dose scenario
- 2–3 days → same session
- Simulation runs reproducible from ID alone
- 100%
- Active compounds on shared, comparable infrastructure
- 0 → all
Client identity withheld under a mutual NDA. Figures are illustrative — rounded and directional, meant to show the shape of the change rather than an audited result. We will walk through the real numbers, and how they were measured, under NDA on a call.
More work
Other engagements.
Case studiesCutting stockouts across 240 stores with a forecast the buyers trust
A hierarchical demand forecast, a promo-aware feature store and a replenishment workflow the category team can override — because a model nobody overrides is a model nobody uses.
Read the case studyShipping firmware to 6,000 imaging consoles without a truck roll
A signed, resumable, rollback-safe update channel for regulated ultrasound hardware sitting on hospital networks that block almost everything.
Read the case studyA reproducible pipeline for a diagnostics lab that had outgrown its scripts
Genomic and assay data moving from instruments to reportable results, with provenance for every derived value and a turnaround clock the lab director can see.
Read the case studyNext step
Tell us what you're trying to ship.
Send the brief, the RFP, or three messy sentences about the problem. You get a written point of view from an architect within two working days — not a sales deck.