01
Thermo Fisher Scientific · mySupply Digital Supply Chain · 2021

The supply chain
six partners never had.

The world’s largest pharma manufacturer ran six major partnerships on spreadsheets and phone calls. A batch could go wrong, and the partner found out at the delivery gate — when it was already too late to fix. I designed the platform that ended that: one shared system, nine manufacturing sites, real-time visibility for every partner. Zero to live in twelve months.

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
mysupply Platform
notifications
JC
Internal
Orders
Exceptions4
Open15
Closed6
Filter Orders
Committed (Start)
Committed (End)
Customer
All OrdersLast Updated: 11-MAR-2021 09:34:16 PST
Order #Order Status Order SubmittedCommitted Delivery /
Completed Date
SiteCategoryCustomerProduct NameProduct NumberOrder QuantityActual /
Delivered Qty
MNZ-0442Late06-MAR-202115-MAR-2021MonzaSterile InjGSKCetraxal Inj 10mg/mL6953759112,00010,844
FER-0298Late01-MAR-202120-MAR-2021FerentinoLyovacMediCoPharmaLyovac Powder 500mg695375928,4007,812
GVL-0157Delayed15-FEB-202128-FEB-2021GreenvilleSterile InjAmgenSteriVial 250mL695375936,2005,980
MNZ-0438Delayed20-MAR-202105-APR-2021MonzaBiologicsBioHorizoCoOncovex-B Biologic695375942,0001,876
MNZ-0441Received01-MAR-202122-MAR-2021MonzaSterile InjGSKCetraxal Inj 10mg/mL695375918,000
FER-0301Received05-MAR-202110-APR-2021FerentinoOral SolidsPMJBebbra 20mg Caps6953759515,000
GVL-0160Confirmed10-MAR-202118-APR-2021GreenvilleBiologicsAmgenOncovex-B Biologic695375964,500
FER-0303Confirmed18-MAR-202102-MAY-2021FerentinoSterile InjBioHorizoCoMedamex Inj 150mg/mL695375973,200
MNZ-0435On track12-MAR-202125-APR-2021MonzaSterile InjGSKLyovac Powder 500mg695375985,500
GVL-0162Completed01-FEB-202101-MAR-2021GreenvilleOral SolidsPMJNovaSol Infusion 500mL6953759910,0009,980
FER-0295Completed22-JAN-202118-FEB-2021FerentinoLyovacMediCoPharmaLyovac Powder 200mg6953760020,00019,686
By Site Monza 2 Ferentino 1 Greenville 1 4 exceptions require action • next commit: 28-FEB-2021 (GVL-0157)
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 (e.g. DEV-2021-0342) 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
mysupply Platform
notifications
JC
Internal
Batch Tracker
Total18
At Risk1
Filter Batches Sites Ferentino Monza Greenville Select All
By Product Type ▼ By Release Month and Year ▼ Customer ▼
Last Updated: 11-MAR-2021 09:34:16 PST
Select a batch for details
Readiness
45 days (average)
52
Waiting on Documents & Materials (8)
AB1234
MediCoPharma
ABECADE 60MG/ML
Planned Release: 20-DEC-2020
  • ✕ Documents Ready
  • ✓ Materials Ordered
  • ✕ Materials In-House
PTA2350
PMJ
MEDAMEX INJECTION 100MG/ML
Planned Release: 20-DEC-2020
Waiting on Materials (21) +
Ready for Manufacturing (19) +
Production
15 days (average)
7
PB350At Risk ↻
PMJ
BEBBEB 20 MG CAPSULES
Planned Release: 20-DEC-2020
PTA2352
PMJ
MEDAMEX INJECTION 100MG/ML
Planned Release: 03 DEC 2020
AB1234
MediCoPharma
MEDAMEX INJECTION 100MG/ML
Planned Release: 03 DEC 2020
PT0905
MediCoPharma
ABECADE 60MG/ML
Planned Release: 20-DEC-2020
Release
20 days (average)
6
Waiting on Quality and Packaging
PTA2350A
BioHorizoCo
MEDAMEX INJECTION 150MG/ML
Planned Release: 28-DEC-2020
  • ✕ Packaging
  • ✕ Analytical testing
  • ✕ QA Release
PA2350
ABC
BEBBEB 20 MG CAPSULES
Planned Release: 28-DEC-2020
Waiting on Quality
Delivery
20 days (average)
9
Waiting for Release
PT0905
MediCoPharma
BEBBEB 40 MG CAPSULES
Planned Release: 28-DEC-2020
PT0905
MediCoPharma
ABECADE 100MG/ML
Planned Release: 28-DEC-2020
PT0905
MediCoPharma
ABECADE 60MG/ML
Planned Release: 28-DEC-2020
Waiting for Shipment
PTA2350
PMJ
MEDAMEX INJECTION 100MG/ML
Planned Release: 28-DEC-2020
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
mysupply Platform
notifications
JC
Internal
Dashboard
Last Updated: 01-DEC-2020 15:00:00 EST
Filter Orders Clear All
Category
Site
Date from
Date to
Customer
Partner Updated 01-MAR-2021
Internal
OTD (On Time Delivery)
YTD
97%
OCT–DEC 2020
98%
Internal
RFT (Right First Time)
YTD
95%
OCT–DEC 2020
94%
Internal
OTIF (On Time in Full)
YTD
85%
OCT–DEC 2020
82%
Internal
Deviation Closure Cycle Time
YTD
97%
OCT–DEC 2020
98%
Internal
Actual vs Commit
YTD
95%
OCT–DEC 2020
94%
External
Client Orders Below Standard Lead Time
YTD
36%
OCT–DEC 2020
48%
External
Total Dollar Amount of Orders
YTD
$1.2M
OCT–DEC 2020
$500K
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
mysupply Platform
notifications
JC
ForecastsLast Updated: 01-MAR-2021  —  5 active forecasts
#CustomerSiteProduct FamilyDurationSubmittedStatus
0001473MediCoPharmaFerentinoBEBBEB + Sterile Inj18 mo01-DEC-2020Under Review
0001472GSKMonzaCetraxal Inj12 mo15-NOV-2020Approved
0001471AmgenGreenvilleSteriVial18 mo22-NOV-2020Draft
0001470PMJFerentinoBebbra 20mg12 mo28-NOV-2020Under Review
0001469BioHorizoCoGreenvilleOncovex-B24 mo01-DEC-2020Draft
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
mysupply Platform
JC
Internal — Network View
Capacity
Rolling 18 months · 3 sites · All lines
Over Capacity
4
At Capacity
6
Available
12
Sites Ferentino Monza Greenville Select All Capacity % calculated based on
Machine cycle time × Shift pattern
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%
Over Capacity9
Utilization over 100%
ST2 Liq & Lyo — Ferentino
Month/YearUtil.Type of Alert
07-2020107%True Constraint
08-2020102%Manageable
09-2020112%True Constraint
At Capacity12
Utilization between 85–100%
ST1 Liq & Lyo — Ferentino
Month/YearUtil.Type of Alert
05-202086%
06-202092%
07-202088%
Under Capacity6
Utilization below 50%
Lyophilization — Greenville
Month/YearUtil.Opportunity
02-202035%Available
03-202042%Available
08-202044%Available
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