Skip to main content

AstraZenecaPart 4 of 5

One prototyper, about ten engineering teams

AstraZeneca

About ten engineering teams rebuilt my prototypes in their own environments. Small changes kept coming back to me.

Retrospective reconstructionView original
Component library sheet in three groups: brand primitives (buttons, badges, eyebrow with stat callout, stat spotlight), product utilities (alerts, cards, form fields, status chips, header bar, shimmer, code block), and evidence and agent patterns (citation chip with unsourced badge, confirmation cards, task pills, agent avatars, message bubbles).

Retrospective reconstruction of the shared component reference, with illustrative content. The original program record supports the system work and limited use described here.

Source: Retrospective design exploration; newly authored portfolio rendering of a design-system reconstruction based on the public AstraZeneca brand guidelines

My decision

Give engineers a shared starting point, with clear rules for when a product pattern or the brand guide takes priority.

The design change
Tokens, components, and a standalone reference made the patterns available for other teams to build with.
What happened
One engineer reported package integration; another used the component reference. Wider adoption was not established.
Role
My contract title was Senior UI/UX Business Analyst; I also worked as a UX designer and AI engineer. I designed and built across compliance, internal products, forecasting and medical AI, with business owners and engineering teams.
Facts
Engagement
August 2025 to August 2026
Contract title
Senior UI/UX Business Analyst
Business units
US Oncology, then Global Medical Affairs from May 2026
Released
Risk register, March 2026. Spec by me, built by ECS.
PinkPulse
Working resource hub for the breast franchise; I designed its discovery and interface directions.
AI Workbench
Working Global Medical Affairs product; my interface and workflow prototypes shaped the shared experience.
Worked with
A Compliance business owner and reviewers, AstraZeneca's delivery team ECS in India, medical specialists, engineers and a leadership sponsor

Why a shared system was worth building

The bottleneck was me

Across the Workbench program I prototyped for about ten engineering teams. Each team rebuilt my screens in its own environment. When a button or a status label had to change, the request came back to me. One prototyper can't keep up with ten teams, and the engineers were the ones left waiting.

In July a platform lead asked for a UI library in its own repository. I treated the ask as a reuse problem. The components already existed. What engineers lacked was a standard way to pull them into their own builds. I scoped the first version to one pilot team and left new visual components and a low-code bridge out of scope.

The program's architecture proposal went further. It would have required every module joining the Workbench to use a shared UI package. The workshop that discussed it recorded no outcome, so I don't count that requirement as adopted.

One prototyper, many builds

View originalTwo panels. Before, a prototyper labelled me sits in the middle of ten teams, each joined to him by a two-way arrow. After, shared tokens and components sit in the middle. One pilot team pulls from them with a solid arrow, eight teams have dashed arrows, and a low-code team is dashed and marked out of scope.

Redrawn for this page from project records. Before, every change went back through one person. The pilot gave one team the tokens and components to build from. The dashed lines are the path for other teams, and none of them is on record.

Source: Retrospective diagram drawn for the portfolio from the July 2026 pilot scoping notes and use-case tracker; team count approximate; team names left out

See how I compared the tools

Compare the options before building

In February I wrote a research brief on keeping AI-generated work on brand. It compared five approaches we controlled and eight outside tools, grouped by how each one hands brand rules to an AI tool. Of the approaches we controlled, a live lookup against the design file was the most precise. Only developers could set it up, though, and by my own estimate it cost about 75 times more per page than a written brand instruction file read once. Most people generating screens weren't developers. I recommended written brand instructions for every output type, Figma Make for prototypes, and automated checks behind both. The system I built later followed that order: guidelines, then tokens, then a linter, then instructions for coding agents.

Scope

The cost and precision figures are my estimates from the brief, not measurements. I have no record of a formal decision on the recommendation.

The options, compared

View originalTable of six rows. Live lookup in the design file: developers, 3 of 8 outputs, about 150,000 tokens a page, optional. Written brand instructions: anyone, 7 of 8, about 2,000 tokens, recommended. Prototyping tool with the system preloaded: anyone, 3 of 8, none at run time, recommended for prototypes. Design-tool variables: source of truth. Linters and visual checks: verification layer. Eight outside tools, grouped by mechanism: channel-specific.

Redrawn for this page from my February brief. The cost figures are my estimates. Outside tools are grouped by how they work, not named.

Source: Retrospective table drawn for the portfolio from Stephen Bowman's February 2026 research brief; estimates, not measurements

Set the rules for trade-offs

The audit kept asking the same question

In May, a brand audit kept flagging tinted badges, uppercase labels, and color pairs the guide did not list. The product styles translated a print brand into dense software. The audit needed to distinguish a deliberate product pattern from a mistake.

I weighed three rules. Letting the guide win everywhere would turn each existing component into a pending exception. Splitting by audience did not help: most screens served both stakeholders and people doing the work.

Product code wins unless it's silent

On 20 May I set the default: where product code and the guide conflict, product code wins. Where the code says nothing, the guide wins. Reviews could stop reopening settled patterns and still catch real faults, such as colors from outside the palette.

Then tighten the rules that mattered

A default rule is where review starts. In July I reversed three things it had let through. Labels went back to sentence case. A gradient loading effect became a solid pulse. Every text size below 10 pixels moved up to a 10-pixel floor. Each change was small, and in each one the brand rule or legibility was right and the code was wrong.

The rule, on one card

View originalThree option cards. A, the guide wins everywhere, not chosen because every component would become a pending exception. B, split by audience, not chosen because most screens were both. C, product code wins unless it's silent, chosen on 20 May 2026. A strip below lists three July reversals: sentence case, a solid pulse in place of a gradient, and a 10px text floor.

Redrawn for this page from project records. The three rules I weighed, the one I chose on 20 May, and the three cases I reversed in July.

Source: Retrospective card drawn for the portfolio, paraphrased from the 20 May 2026 decision and the July 2026 design-debt register; the original record is not shown

Give engineers something to build on

The first app on the tokens was a regulated review

Before a speaker is paid to present, someone has to check their specialty and tier, because those set the fee. In April an engineer building a fair-market-value review tool asked me for a front end. The tool used an AI agent to classify a speaker's specialty and tier from their CV, and reviewers needed to see the evidence behind each call before a fee was set.

I built the front end on the shared tokens through a generated theme file, with no styles of its own. It ran as eight review steps from upload to recommendation, later grouped into four stages around the reviewer's decisions. I prepared the handoff: a written developer package and a verification script. The old prototype stayed as a reference only, and the app ran on one checked-in sample record. Connecting production data was the build team's next step.

Contribution

I built the front-end baseline and the handoff. Another engineer owned the build. The agent and the backend were other people's work.

Evidence before the decision

View originalReview screen for an invented speaker at the specialty evidence stage. Four stages across the top, the third current and the fourth locked. A strip shows the agent's calls, medical oncology and tier 2, moderate confidence, and a Needs reviewer state. Three CV lines are cited beside a callout with Confirm specialty and Change specialty buttons.

Redrawn for this page with invented data. The reviewer sees the agent's call, the evidence for it, and what still needs a person before sign-off.

Source: Retrospective redraw of the April 2026 review app's layout; speaker, institution, CV lines and confidence invented; no screenshot of the original

A reference by the next morning

In early July engineers needed a component reference by the next morning so they could build their own workflow screens without asking me to adjust each element. I made a standalone HTML reference that opened directly and printed to PDF, with labels, states and style references beside each component.

On 2 July one engineer reported integrating my shared UI package into the budgeting work. Another confirmed receiving the reference and using it in his own environment. Backend connections were separate from this UI work.

What the system held at handover

In mid-July I merged three sources into one repository: the brand guideline extraction, the Workbench components and an older component bundle. It held 294 design tokens and 127 React components, 26 of them core controls such as buttons, fields and badges.

Brand rules ran as checks. A linter, a test that failed the build when generated tokens drifted from their source, and a documentation coverage check all ran in one verify command. Most people producing screens with AI tools would never read a guideline, so the checks had to catch drift for them.

The system kept a design-debt register, and a row closed on evidence, not a tick. Dark-theme colours stayed hand-maintained, so a test was added that fails when one drifts from its token, and a value was changed on purpose to prove the test caught it. Text smaller than a 10-pixel floor counted as a defect and moved up to it. At the last count 60 of the register's 65 rows were resolved. One open row noted that the verify command still ran no accessibility tests.

Inspect the shared reference

Brand rulesView original
Brand foundations sheet with a colour-balance chart, a table of approved contrast pairs, seven icons, voice do-and-don't lists with a sample sentence, three expressive type techniques, three panel-grid examples, and four elevation steps.

Reconstruction for this page. Color, contrast, type and layout rules as reference cards. Reconstructed from the public brand guidelines, not engagement files.

Source: Retrospective design exploration; newly authored portfolio rendering of a design-system reconstruction based on the public AstraZeneca brand guidelines

Decide who decides, then report what happened

One approver per decision, and a record of who was missing

I drafted a governance charter for the system. It gave every decision type one accountable approver. Committees could advise, but one role signed. The charter named eight roles. I was the only named holder, and I wrote that down as a staffing gap, not as proof the other roles were unnecessary.

Inspect the governance conflict and adoption timeline

Settle which rule governs before moving code

On 20 July I found two of the system's own documents pointing opposite ways. The promotion rule said Workbench code couldn't be bulk-copied into the shared package. Each component needed an owner, a token mapping, an accessibility review, documentation and evidence. An inventory written the next day recommended bulk-promoting the Workbench's data, state and deck code as top priority. The register's one open technical item, 502 type errors from code that was never copied, depended on which document won. I wrote the conflict down and set an order: settle which rule governs in a new decision record, define the package's public entry point, then fix the errors. I rated the missing entry point a bigger blocker for ten teams than the errors.

Scope

The reconciling record wasn't written before my work ended, so the question stayed open.

Adoption on record

  1. February 2026

    Options brief. A recommendation, with no build yet.

  2. April 2026

    The fair-market-value review app runs on the shared tokens. I prepare the handoff to its engineer.

  3. 20 May 2026

    Product code wins unless it's silent.

  4. 2 July 2026

    One engineer integrates the shared UI package. A second confirms using the component reference.

  5. 16 July 2026

    A platform lead asks for a UI library. I scope one pilot team.

  6. 19 July 2026

    I tighten three brand rules and redefine adoption as something the repository can count.

  7. August 2026

    I prepare two developer packages. No receipt is on record.

What engineers used, and what remains unknown

In July the adoption dashboard had nothing to read, because no analytics source sat behind it. I redefined adoption as something the repository could count: places in the code that used the shared tokens. The count was two, both inside the repository. I'd rather show that number than a funnel.

Outside the repository the record holds one app in April and two engineers in July. I have no usage data after July, and nothing on record shows the August packages arrived.

Check the file someone receives

My July handoffs taught me to write down which behaviors worked, which were simulated, and which connections were missing. Stakeholders had seen a version without the source-review controls I had built, and we traced the gap to version integration. An export check taught the same lesson from the other side. Three checks passed while the downloaded slide file was missing its images and logo, because none of them opened the file.

Inspect the export check

View original
Three columns beneath a quotation that the downloaded presentation was nowhere near an AstraZeneca slide next to the prototype it came from. Left, what the checks reported, in green ticks: export unit tests passing against a mocked library, a browser preview at full brand fidelity, and an export button that produced a file, closing with the line nothing flagged a problem. Middle, what the file contained, in red crosses: no image drawn anywhere, cover, divider and closing slides falling back to flat colour, no logo on the cover, and a hardcoded closing title, closing with two differences visible at a glance. Right, what actually caught it: building a deck through the real interface and opening the download in PowerPoint, making that an acceptance criterion, and inspecting the package rather than the picture.

Reconstruction of one documented defect. Three checks reported success while the exported file was still missing its photography and its logo, because each ran on something other than the file. The reporter is unnamed and the quotation abridged.

Source: Retrospective design exploration; newly authored portfolio reconstruction of a single documented defect and its recorded resolution, rendered with the reconstructed design-system components

Handoff details

The August package separated core controls, product examples, slide components, supporting code and design guidance. It supplied source for integration, not a runnable app. Engineers still had to set up tooling and restore tests tied to the original environment.

Compare the handoff versions

View original
A handoff table with eight behaviours as rows and three columns: my working prototype, the version shown to stakeholders, and what is still to connect. Each cell carries a status chip such as works, simulated, missing, not verified or not needed.

Reconstruction, invented records. The handoff format that separated the interface I had built from the version stakeholders saw and the services still to connect. Rows are illustrative.

Source: Retrospective design exploration; newly authored portfolio reconstruction with invented records, rendered with the reconstructed design-system components

Results

  • In April a fair-market-value review app ran on the shared tokens, and I prepared its handoff to the engineer who owned the build.
  • On 2 July one engineer reported integrating my shared UI package, and a second confirmed using the component reference.
  • Brand conflicts had a default rule: product code wins unless it's silent. In July I tightened it where the brand guide or legibility was right.
  • At handover the repository held 294 tokens and 127 React components, 26 of them core controls, with brand rules run as checks.

Evidence limit

Inside the repository, adoption counted two consumers, both internal. I have no usage data after July, nothing on record shows the August packages arrived, and accessibility conformance is unverified.

Resume and contact