Context
The client, a biosciences company running clinical studies, receives samples from the clinical centers taking part in them. Tracking them by spreadsheet and email made it hard to know, at any moment, where a sample was, who had handled it and whether a shipment had really left the site. The client asked us to build a dashboard and an integration API shared by its own staff, study coordinators and the administrators of each clinical center.
More on our work in life sciencesWhat made it non-trivial
- Chain of custody: a sample's status had to follow the physical shipment, never a manual edit
- Two parties to every shipment: the site must confirm what leaves, and any later change has to void that confirmation
- Access scoped per study and per clinical center, for internal staff, coordinators, sites and third parties
- A complete, append-only history of every change, with nothing ever deleted
- Notifications that keep everyone informed without carrying any patient data
- An integration API that could never bypass the rules the web app enforces
What we did
We designed and built the whole application: the data model around studies, clinical centers and their pairings; the sample and shipment workflows with site confirmation and versioned PDF manifests; invitation-only onboarding; the role and access policies, each covered by unit tests; email notifications with automatic retries; spreadsheet import; and an authenticated API that goes through the same business rules as the web app. Before handover we audited our own code, fixed what we found, and wrote the documentation the client's team now works from.
Outcome
The client now tracks every sample from collection at the site to results in one system, with a full history of who did what and when. Sites confirm their own shipments, coordinators are notified at each step, and the client's team received a tested, documented codebase it can run and extend without us.
Results
- 1
- set of business rules shared by the web app and the integration API
- 9
- notification types, retried automatically and tracked per recipient
- 25
- architecture decisions documented for the client's team at handover



