Current State
First audit of the full (password-protected) Thermo Fisher mySupply case at junochen.com/cs-02. The teaser page was covered previously. Today establishes the baseline for the complete case, assessed through the lens of what a Director+ hiring panel actually evaluates during a portfolio walkthrough.
Hiring committees are off through the weekend. Most reconvene Tuesday or Wednesday after the Fourth. If you're making structural changes to this case, the next 72 hours are the window. Use them.
One thing resolved since the teaser coverage: the failure-mode-to-module mapping that the teaser only hinted at is fully explicit on the full page. That's the strongest section of the case and I'll get to it. Several things are not resolved. One is a P0 that undermines the entire gating strategy.
P0 — The Gate Is Decorative
The full case page returned HTTP 200 with the complete HTML payload on a direct fetch. No authentication. No server-side access check. Every section, every mockup, every metric arrives in the browser before anything happens.
The gating mechanism is an inline script after <body> that checks localStorage.getItem("pf_access_v1") and redirects to /login.html if the value isn't 1. It also allows localhost and 127.0.0.1 through. That's the entire security model.
A JavaScript-enabled browser probably redirects before the content visually paints, because the script appears before the visible sections in source order. But view-source shows everything. Curl shows everything. Bots index everything. A recruiter's browser with JavaScript disabled shows everything. Any technically literate buyer who right-clicks "View Page Source" reads the full case without requesting access.
This is the same class of vulnerability as the "What Do You Count" essay issue flagged previously. Client-side redirect control over presentation is not access control over delivery. Until this is server-side, you have no visibility into who's reading the full case uninvited. You can't distinguish a hiring manager who requested access from a bot, a competitor, or a curious stranger.
The teaser page, by contrast, is correctly ungated. It returned its full payload with no access-check script, which is the intended behavior for a public-facing preview. The problem is confined to the full case.
Move the access check server-side. On Vercel, this is Edge Middleware that checks a cookie or token before the page is served. The response should be a 302 redirect for unauthenticated requests, not a 200 with the full document and a hope that JavaScript will clean up. One-file change.
Secondary issue: The full page has no meta description, no Open Graph title, no OG description, no Twitter card metadata. The teaser has all of these, including a well-crafted description that says "No platform existed." If a bot indexes the full page (which it can, because the gate is client-side), it appears in search results with no controlled description. Add a noindex meta tag to the full page as an interim measure while the server-side gate is implemented. Add proper OG tags after the real gate is live.
P1 — Case Number Mismatch
The full page sidebar and hero-adjacent labels show 01. The URL is cs-02-supply-chain. The teaser correctly identifies this as 02. This is exactly the kind of preventable artifact confusion that forces you to spend verbal interview time explaining something that should never have been a question. Fix the label. Five minutes.
Six-Criteria Evaluation
Each criterion below is assessed as a hiring-panel member would encounter it during a 45–60 minute portfolio review. I quote the live copy, assess it against Director+ interview-panel standards, and recommend.
1. 0→1 Mandate Framing
What the page shows: The hero states the pharma manufacturer was "operating six partnerships through spreadsheets and phone calls" with "exceptions discovered at the delivery gate too late to fix cheaply." It says Juno "designed one shared system across nine manufacturing sites" and includes the phrase "Zero to live in twelve months."
Assessment (moderate confidence): The zero-state is implied through the spreadsheets-and-phone-calls language. "Zero to live in twelve months" signals the build timeline. But the full page never says the explicit thing the teaser's metadata says: "No platform existed." A VP Product scanning this case in the first 90 seconds could read "designed one shared system" as a redesign of an existing system rather than a ground-up build. The teaser is clearer on this point than the full case, which is backwards.
Recommendation (copy-level): Add one sentence to the hero block, before the spreadsheets line: "There was no platform. Six pharma partnerships ran on spreadsheets, phone calls, and institutional memory." The word "no" needs to appear. "Zero to live" communicates timeline. You need to communicate mandate.
2. Research-to-Diagnosis Chain
What the page shows: The case states that 32 interviews traced the problem to "no shared source of truth" and then lists five problem signals: short-notice orders, status chasing, no shared KPIs, OTD spread by site, and data outside PRISM.
Assessment (high confidence): The chain from 32 interviews to five failure modes is present but compressed. A design-leader interviewer evaluating research rigor wants to see the reasoning between the interviews and the diagnosis. How did 32 interviews become five failure modes and not seven or twelve? What was the synthesis method? The current framing makes the five failure modes look like they emerged naturally, which undersells the analytical work. At Director+ level, the synthesis is the skill being evaluated, and the current framing undersells it.
Recommendation (structural): Add a two-to-three sentence bridge between the interview count and the failure-mode list. Something like: "Across 32 interviews at nine sites, the same five breakdowns appeared regardless of geography, partner, or product line. The problems weren't local. They were structural." This frames the diagnosis as pattern recognition across a complex dataset, which is the actual skill being demonstrated. Skip the affinity mapping or synthesis methodology. Show that the five weren't arbitrary.
3. Module-to-Failure-Mode Mapping
What the page shows: A direct table mapping five failures to five modules:
| Failure Mode | Module | What Changed |
|---|---|---|
| Flat list of 197 orders, exceptions invisible | Orders | Exception-first view |
| 5–10 hrs/week of status chasing | Batches | Live kanban |
| Invisible OTD measurement differences | Dashboard | Bidirectional partner KPIs |
| Emailed xlsx files, manual SAP entry | Forecasts | Structured submission with auto-load |
| Post-commitment constraint discovery | Capacity | 18-month utilization heatmap |
Each pair is then walked through in detail.
Assessment (high confidence): This is the strongest section of the case. The one-to-one mapping is clean, legible, and rare in portfolio work at any level. Most candidates present modules as a feature tour. You've tied each module to a specific diagnosed failure. A CPO reading this sees systems thinking. Keep it.
Recommendation: None structural. One copy-level note: in the Capacity module, the phrase "post-commitment constraint discovery" is doing a lot of work. Consider expanding by one clause so the reader doesn't have to unpack it mid-scan: "Capacity constraints discovered after the commitment was already made, when the only options were expensive." The current phrasing is precise but dense for the reading speed a panel actually uses.
4. Tradeoffs with Reasoning
What the page shows: The page contains rationale about not exposing operational detail partners couldn't act on, partner-specific dashboard visibility, distinguishing true constraints from manageable capacity overload, and preserving a human QA release gate despite automation potential. These appear embedded within the module walkthroughs. The page does not present a named rejected alternative, a decision matrix, or an explicit tradeoff section. CSS classes use the internal label decision for module blocks, but those blocks render without visible differentiation from surrounding content. The intent existed in the code. It never made it to the presentation layer.
Assessment (high confidence): This is the biggest gap in the case for Director+ evaluation. Tradeoff reasoning is weighted more heavily than visual craft, research rigor, or outcome metrics at this level. It is the single strongest signal of design leadership judgment in a portfolio review.
The tradeoffs are in the case. They're just not surfaced as tradeoffs.
The human QA release gate decision is the best example. Preserving an irreplaceable regulatory signature as a human gate while automating everything around it is a genuine design judgment call with real tension. It's also the exact kind of constraint-dissolution thinking that separates Director-level work from Senior IC work: designing the regulatory constraint into the system so it accelerates the workflow rather than blocking it. But right now it reads as a feature description when it should land as a contested decision.
Recommendation (structural): Add a short section after the module walkthrough. Title it something like "Three decisions that shaped the system." Pull out the QA gate, the partner visibility boundary, and the capacity threshold logic as explicit decisions with the rejected alternative stated. Format each as: "We could have [X]. We chose [Y] because [Z]." Three of these, two sentences each. The decision CSS classes suggest you already structured for this in the code. Give them a distinct visual treatment and surface what's there.
5. Partner Adoption as Design Outcome
What the page shows: The hero presents "6/6 pharma partners committed" as one of four outcome metrics alongside $20M+ margin recovered, 83% IRR, and 42% overhead reduction. The teaser uses "adopted" and "100% partner adoption." The full page uses "committed."
Assessment (moderate confidence): "Committed" is weaker than "adopted." Committed means they said yes. Adopted means they use it. If all six partners are actually using the platform, say adopted. If they committed but some hadn't onboarded by the time the engagement ended, committed is honest but you need to frame why commitment itself was the hard outcome.
Beyond the word choice: 6/6 partner adoption is potentially the most powerful metric in this case, and it's sitting in a hero stat bar without context. A pharma company agreeing to put its supply chain data into a shared platform built by its CDMO is a trust decision. The platform earned trust from organizations that had every institutional reason to resist transparency. That framing is completely absent.
Recommendation (copy-level + minor design fix): Add one sentence immediately below the metric display, as a caption or annotation: "Each partner had to trust that shared visibility wouldn't be used against them. The system earned that trust through partner-specific views and visibility boundaries." This connects the adoption metric back to a design decision. Without it, the metric reads as a business outcome you're borrowing. The caption reframes it as evidence that the design choices were right. A small layout addition (a caption line beneath the stat bar).
Reconcile the language between teaser and full page. Pick "adopted" or "committed" and use it in both places. The inconsistency is small but a careful reader notices, and careful readers are exactly who's evaluating you.
6. Agentic Vision Placement
What the page shows: The forward-looking AI section appears after the five module walkthroughs under the heading "If I were building this today." It reframes the five modules as five continuous agents, preserves the batch QA release as the human gate, and includes a mockup showing three active agents, 195 processed orders, a 99% confidence QA release item, exception routing, document compliance alerts, forecast deviation review, and early-warning timing.
Assessment (high confidence): Placement is correct. After the evidence. "If I were building this today" is strong framing because it signals current thinking without undermining the shipped work. The human QA gate preservation is the strongest single detail in this section. It demonstrates the agent autonomy threshold judgment that AI-native companies are specifically hiring for, and it's the rarest credential at this level. The mockup with confidence percentages and exception routing shows you've thought about this as a system, not a feature skin.
Recommendation (copy-level): Two additions. First, connect back to the constraint-dissolution pattern from the shipped work: "The original system moved exception detection from the delivery gate to a week earlier. Agents move it earlier still, to the moment the data first deviates." This creates a through-line that makes the vision feel earned by the case evidence above it.
Second, the 99% confidence QA release item is doing important work. Add one sentence about what happens at 94% or 87%. The threshold is the design decision. Showing that you've thought about the gradient turns a vision mockup into a real design position on agent autonomy.
Priority Stack
Act before Tuesday:
- Server-side gate. Vercel Edge Middleware. Non-negotiable.
- Add
noindexmeta tag to the full page. Interim measure. - Fix the
01→02label. Five minutes. - Add "No platform existed" to the hero. One sentence.
- Surface three tradeoffs as an explicit section after the module walkthrough.
Prepare this week, ship by end of next:
- Bridge the research-to-diagnosis gap with two sentences about structural pattern recognition.
- Reframe 6/6 as a trust outcome with a caption line beneath the stat bar.
- Connect the agentic vision back to the exception-detection timeline.
- Reconcile "committed" vs. "adopted" across teaser and full page.
- Add meta description and OG tags to the full page after the server-side gate is live.
The case is structurally sound. The module-to-failure-mode mapping is the best version of this pattern I've seen in a Director-level portfolio. The tradeoff reasoning exists but is buried under feature descriptions, rendered identically to everything around it despite code-level intent to distinguish it. Surface it, style the decision blocks, and this case does what it needs to do in the room. Next pass: verify the server-side gate is live, then align this case's key tradeoff moments to the specific interview-rehearsal framing for whichever company is first on the outreach list.
- Headway's regulated-platform bridge: Headway's Design Director, Provider Experience posting names AI-powered clinical documentation, scheduling, and copilot features inside a regulated EHR workflow, which makes the Thermo Fisher constraint-dissolution pattern and human QA gate the natural opener for that room.
- Ramp's agentic operations language: Ramp's Director, Product Design posting describes designing memory, shipping PRs, and building tools alongside agents, and adjacent CX postings describe human-operator-plus-AI-agent workflows that map directly to the mySupply agentic vision section.
- Capital One's org-transformation angle: Capital One's Director, Product Design — AI in Experience Design role reports to the CDO and owns AI tooling, process evolution, and talent upskilling across the design org, which means the Thermo Fisher case should lead with operating-model judgment rather than product craft.
- Trust essay as connective tissue: The Trust Is the New Interface essay already ties Thermo Fisher's Decision Gate to continuous agents with a non-negotiable human QA release gate, so the agentic vision section and the essay should cross-reference each other explicitly once the server-side gate is live.

