Bio-medical & pharmaceutical
Dose-response simulation the biostatisticians still own
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
Stack
- R
- NONMEM
- Docker
- 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. Wrapping rather than rewriting was the whole point: these were models the biostatistics team had already validated, and redoing that work would have bought nobody anything.
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 question spanning two compounds can be answered in an afternoon instead of reconciled by hand over weeks.
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, how they were measured, and put you in touch with a reference, 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 studyEnergy analytics across 14 buildings and four BMS vendors
One data plane over BACnet, Modbus and a proprietary head-end, with fault detection that tells a facilities manager which asset to look at before the complaint arrives.
Read the case studyTurning 40,000 support calls a month into a product backlog
Diarised transcription, an LLM extraction pipeline with a graded evaluation set, and a review console where quality leads correct the model in place.
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.