01
Thermo Fisher Scientific · mySupply Digital Supply Chain · 2021

The supply chain
six partners never had.

The world’s largest CDMO ran six pharma partnerships on spreadsheets and phone calls. I designed the platform that changed that — a 0→1 build giving every partner real-time visibility across nine manufacturing sites.

01ClientThermo Fisher Scientific
02ProjectmySupply digital supply chain
03RoleProduct Design Director
04Team1 designer · 2 engineers (BCG DV)
05Scale12 months · 6 partners · 9 sites · EU + NA + AU
$20M+
Margin recovered annually
83%
IRR — business case
6/6
Pharma partners committed
42%
Overhead reduction
01
01Problem

The world’s largest CDMO,
running on spreadsheets.

32 interviews traced it to one root cause: no shared source of truth. Each side tracked performance independently — different KPIs, no common view. Exceptions surfaced 2–4 days after commit dates, when rescheduling cost 3–5× more than prevention. The data existed. The visibility didn’t.

Short-notice orders
50%
Placed <90 days before commit
Status chasing per batch
5–10h
Phone calls & emails over weeks
No shared KPIs
0
Partners had no view of Thermo Fisher performance
OTD gap by site
63–99%
36pt spread, no visibility of why
Data outside PRISM
45%
Locked in Excel and PDFs
Thermo Fisher — CDMO
Manufacturing data siloed across SAP, LIMS, and MES. A third of coordination time went to manual status calls. No way to give partners visibility without exposing operational detail they couldn’t act on anyway.
vs
Pharma Partners
Planning drug launches against batch timelines they couldn’t see. Finding out about exceptions at the delivery gate, when rescheduling cost 3–5× more than if they’d known a week earlier.
02
02Solution

Five modules.
One shared reality.

Each failure mode from research became a design brief. Five modules, each solving one problem — together replacing the web of spreadsheets, phone calls, and email chains that connected Thermo Fisher to its partners.

The failure
The module
Problem 01
197 orders in a flat list — exceptions buried, managers had to hunt
Module-01 — Orders
Exception-first view — only what needs action surfaces
Problem 02
Batch status required 5–10h of phone calls per batch, per week
Module-02 — Batches
Live kanban with readiness checklists — blockers visible days early
Problem 03
Thermo Fisher and partners each measured OTD differently — gaps invisible
Module-03 — Dashboard
Bidirectional KPIs per partner — internal vs. customer numbers side by side
Problem 04
Forecasts emailed as xlsx, versioned by filename, loaded manually at 30 min each
Module-04 — Forecasts
Structured submission + version control + SAP auto-load on approval
Problem 05
Capacity constraints discovered only after orders were committed and rescheduling was costly
Module-05 — Capacity
18-month utilization heatmap — constraints visible before commitments
Module·01Exception-first order management
The old model showed 197 orders in a flat list — everything weighted equally. Research told us managers only ever needed to act on three. I designed the platform so exceptions surface automatically. The “All” tab holds 197 orders. Managers default to Exceptions.
mySupply — Orders — Exceptions tab
mysupply.thermofisher.com / orders
4 Exceptions |16 Open |5 Closed
Exceptions4 orders requiring action — 193 confirmed on track
Order #CustomerProductSiteQtyCommit DateStatusDeviation
MNZ-0442GSKCetraxal Inj 10mg/mLMonza12,000 u15-MAR-2021LateTW-3812 — HIGH
FER-0298MediCoPharmaLyovac Powder 500mgFerentino8,400 u20-MAR-2021DelayedTW-3798 — MED
GVL-0157AmgenSteriVial 250mLGreenville6,200 u28-FEB-2021LateTW-3791 — HIGH
MNZ-0438BioHorizoCoOncovex-B BiologicMonza2,000 u05-APR-2021DelayedTW-3787 — MED
MNZ-0441GSKCetraxal Inj 10mg/mLMonza8,000 u22-MAR-2021On Track
FER-0301PMJBebbra 20mg CapsFerentino15,000 u10-APR-2021Confirmed
1Exception tab surfaces only orders needing action. The “All” tab holds 197 orders; managers default to Exceptions.
2Late (red) = commit date missed. Delayed (orange) = at risk but still recoverable with action.
3Deviation reference (TW-XXXX) links to full audit trail, root cause classification, and closure timeline.
Module·02Batch-level transparency
Partners only learned of problems at the delivery gate — when it was already too late and rescheduling was costly. I gave each pharma partner a live kanban: every batch in flight, visible across Readiness, Production, QA Review, and Released stages. An “At Risk” flag appears the moment any criterion falls behind — days before the gate, not hours.
mySupply — Batch Tracker — Kanban + batch detail panel (PB350 selected)
mysupply.thermofisher.com / batches
Total in flight: 18At Risk: 1Updated: 11-MAR-2021 09:34
Readiness
45d avg
7
AB1234
MediCoPharma
ABECADE 60MG/ML
Rel: 20-DEC-2020
  • radio_button_unchecked Documents Ready
  • check_circle Materials Ordered
  • radio_button_unchecked Materials In-House
GX4410
GSM
CETRAXAL INJ 10MG/ML
Rel: 28-NOV-2020
  • check_circle Documents Ready
  • check_circle Materials Ordered
  • check_circle Materials In-House
Production
21d avg
4
PB350At Risk
PMJ
BEBBRA 20MG CAPSULES
Rel: 15-JAN-2021
  • check_circle Batch Record Ready
  • radio_button_unchecked QC Samples Taken
  • radio_button_unchecked In-Process Controls
MX7201
Zenith Pharma
NOVOSIL INFUSION 500ML
Rel: 28-JAN-2021
  • check_circle Batch Record Ready
  • check_circle QC Samples Taken
  • radio_button_unchecked In-Process Controls
QA Review
7d avg
3
FER-0339
BioHorizoCo
MEDAMEX INJ 150MG/ML
Rel: 05-FEB-2021
  • check_circle QC Release Done
  • check_circle Batch Record Approved
  • check_circle Certificate Ready
PB350
warningAT RISK — 2 criteria incomplete
Customer
PMJ
Product
Bebbra 20mg Caps
Site
Ferentino
Release Target
15-JAN-2021
Production readiness: 1 of 3 criteria met
Batch Timeline
check
Readiness
Completed 24-NOV-2020
hourglass_empty
Production
In progress — due 08-JAN-2021
QC samples not yet received by lab
radio_button_unchecked
QA Review
Pending
radio_button_unchecked
Released
Target: 15-JAN-2021
Readiness Criteria
check_circle
Batch Record Ready
radio_button_unchecked
QC Samples Taken
Pending lab receipt — due 05-JAN
radio_button_unchecked
In-Process Controls
Blocked on QC samples
1Kanban columns = batch lifecycle stages. Every batch in flight is visible simultaneously across Readiness, Production, QA Review, Released.
2PB350 selected — clicking a card opens the detail panel. Timeline + progress bar + per-criterion blockers with notes. No status call needed.
3QC Samples Taken is the current blocker. Partner sees this 10 days before release gate — time to intervene vs. discover at delivery.
Module·03Dashboard for strategic review
Leadership needed one place to answer: how is this partnership actually performing? Thermo Fisher and partners each measured OTD differently — the gap between those numbers was invisible, and it kept showing up as surprises in quarterly reviews. I surfaced both numbers, side by side, per partner. A 3-point OTD discrepancy that used to require a reconciliation call became the opening question of every strategic review instead.
mySupply — Dashboard — Per-partner bidirectional KPIs
mysupply.thermofisher.com / dashboard
Partner Updated 01-MAR-2021  •  ■ TF Internal  •  ■ Customer-Reported
Internal
OTD — On Time Delivery
% shipped on or before commit date
YTD 2020
97%
Q4’20
98%
Internal
RFT — Right First Time
% batches released without rework
YTD 2020
95%
Q4’20
94%
Internal
OTIF — On Time in Full
% orders delivered on time & complete
YTD 2020
85%
Q4’20
82%
External — Customer
Customer OTD
Partner’s own reported delivery rate
YTD 2020
94%
Gap vs Internal
−3pt
Internal
Actual vs Commit
Order volume vs committed plan
YTD 2020
95%
Q4’20
93%
Internal
Deviation Closure
Average cycle time to close a deviation
YTD 2020
12d
Q4’20
10d
Order Lead Time
Days from order receipt to delivery (by customer)
GSM
MediCoPharma
PMJ
BioHorizoCo
Zenith Pharma
Order Volume
By customer — current period
GSM
MediCoPharma
PMJ
BioHorizoCo
Zenith Pharma
1Per-partner tabs — each pharma partner gets their own Dashboard view. Thermo Fisher sees all partners; partners see only themselves.
2Customer OTD 94% vs TF OTD 97% — the 3-point gap was previously invisible. It’s now the opening of every quarterly review.
3Lead time chart shows BioHorizoCo at 21 days vs 14d target — a strategic risk surfaced without a single status call.
Module·04Forecast collaboration portal
Forecasts arrived as email attachments, versioned by filename — “Lyovac_H1_v3_FINAL_revised.xlsx” — and loaded into SAP manually at 30 minutes per file. I replaced this with structured submission, built-in version control, and a direct SAP auto-load on approval. The 30-minute manual entry process became a single click.
mySupply — Forecasts — Approval workflow + volume breakdown
mysupply.thermofisher.com / forecasts
All Forecasts8 forecasts · 3 pending action
Forecast NameCustomerPeriodVersionStatusLast UpdatedAction
ACetraxal Inj — Q2 2020GSMApr–Jun 2020v3Approved10-MAR-2020
ULyovac Powder — H1 2020MediCoPharmaJan–Jun 2020v2Under Review08-MAR-2020
UCetraxal Inj — Q3 2020GSMJul–Sep 2020v1Under Review28-FEB-2020
DSteriVial Saline — Annual 2020PMJJan–Dec 2020v1Draft05-MAR-2020Awaiting submission
ANovaSol Infusion — Q2 2020Zenith PharmaApr–Jun 2020v2Approved01-MAR-2020
U Lyovac Powder — H1 2020 Volume by product · v2 vs v1 changes highlighted
ProductJan ’20Feb ’20Mar ’20Apr ’20May ’20Jun ’20
LYOVAC
Lyovac Powder 500mg8,2007,8009,100▲+12%8,4007,600▼−9%8,900
Lyovac Powder 250mg4,1003,9004,4004,200▲+8%3,8004,600▲+15%
STERILE INJECTABLES
Cetraxal Inj 10mg/mL22,00018,50024,000▲+18%21,00019,00023,500
SteriVial 250mL6,8006,200▼−6%7,1006,5006,000▼−8%7,400
1Status badges replace email chains. Approved (teal) = SAP auto-load triggered. Under Review = awaiting TF sign-off. Draft = partner editing.
2Volume breakdown shows product-level change vs prior version. Red ▲ = increase, teal ▼ = decrease — reviewers see exactly what shifted.
3Approve button triggers SAP auto-load directly. The 30 min/forecast manual entry process is eliminated at click.
Module·05Capacity planning & constraint visibility
Capacity constraints surfaced only after commitments were made — when the cheapest fix had already passed. I gave the planning team an 18-month utilization heatmap across all sites and lines. Partners could plan orders against real headroom, not assumptions. Grey cells — planned shutdowns — were visible before anyone committed to a conflicting date.
mySupply — Capacity Planning — 18-month utilization heatmap
mysupply.thermofisher.com / capacity
≥100% ≥85% At Risk ≥70% High ≥50% Normal <50% Available Rolling 18 months · 3 sites · All lines
Line / MonthFebMarAprMayJunJulAugSepOctNovDec
Ferentino
ST 1 Liq & Lyo 42% 58% 72% 78% 86% 92% 88% 76% 70% 74% 80%
ST 2 Liq & Lyo 55% 68% 75% 70% 107% 102% 112% 95% 90% 86%
ST 3 Liq & Lyo 38% 44% 52% 60% 72% 78% 74% 62% 48% 56% 70%
Monza
Fill Line 1 72% 78% 85% 92% 102% 96% 90% 85% 76% 88% 105%
Visual Inspection 58% 66% 74% 85% 90% 86% 78% 72% 64% 76% 80%
Greenville
Fill & Finish 1 60% 70% 78% 102% 92% 80% 68% 74% 80% 86%
Lyophilization 35% 42% 50% 56% 62% 70% 58% 44% 50% 54% 62%
Capacity Alerts — Over Capacity
FerentinoST 2 Liq & Lyo · 07-2020107%True Constraint
FerentinoST 2 Liq & Lyo · 09-2020 (peak)112%True Constraint
MonzaFill Line 1 · 06-2020102%True Constraint
GreenvilleFill & Finish 1 · 05-2020102%Manageable
1Color-coded heatmap shows utilization across 7 lines, 3 sites, 11 months. Greenville Lyophilization (green) = available capacity partners can target.
2True Constraint vs Manageable tells planners which over-capacity months require rescheduling vs. which can be absorbed with overtime or buffer.
3Grey cells (—) = planned shutdowns. Partners see these before committing orders to those months — preventing the conflict before it exists.
03
03If I were building this today

Same problems.
Different architecture.

mySupply was pull-based by necessity — someone still had to open it to see what was wrong. The five modules are now five agents running continuously: exceptions classified and routed before a manager logs in, document gaps flagged 9 days before the release gate, forecast drift caught weeks before the S&OP meeting. One human gate stays — batch QA release, where a regulatory signature is irreplaceable.

Agentic supply coordinator — live activity
Monza site — Mar 2021
3 agents active
Scanning 195 orders
195 processed
09:14
Human gate — MNZ-0441 batch release. Agent verified all 5 criteria (99% confidence). QA approval required.GATE
09:11
Exception Monitor: MNZ-0442 crossed commit threshold — TW-3812 classified HIGH, GSK notified, TF QA alerted.AUTO
09:02
Document Compliance: FER-0339 missing QA certificate — partner notified 9 days before release gate.AUTO
08:30
Forecast Deviation: Partner A 4-week variance −22%. Lyovac Powder H1 flagged — S&OP nudge queued 14:00.REVIEW
08:05
Exception Monitor: 195 orders scanned · 192 on track · 3 exceptions classified and routed.AUTO
Agent notification feed — Monza site
■ Human Gate · Regulatory Action Required 09:14
MNZ-0441 · Batch QA Release
Sterile injectable · GSK · 8,000 units · Monza
✓ 99% confidence · All 5 release criteria verified · Documents complete · TW-3799 closed
Approve ReleaseView Batch Record
■ S&OP Review Queued 08:30
Forecast drift detected — Lyovac H1
Partner A · −22% 4-week variance · Ferentino
Review scheduled 14:00 S&OP · No immediate action required
✓ Auto-resolved · No action needed 09:11
MNZ-0442 exception routed
GSK · HIGH priority · TW-3812 · QA + partner notified
Audit trail logged · SLA clock started · 72h to resolve
△ Early Warning · 9 days to gate 09:02
FER-0339 · QA certificate gap
BioHorizoCo · Medamex Inj · Release gate 14-FEB-2021
Partner notified · 9 days to resolve before release gate