Design Systems · Cargill

Sprout

Cargill's enterprise design system, built from scratch

RoleLead Designer
TimelineJun 2024 – Present
Team3 designers, 2 developers
ToolsFigma, GitHub

Cargill is a global food and agriculture company with a fragmented digital ecosystem when I joined. As a design systems lead I built out the foundational layer of our design system, worked directly with teams to drive adoption, and am currently working on making it agent ready.

Problem

Prior design systems at Cargill failed because teams abandoned them

Cargill's predecessor system failed because teams detached components to work around its limitations. Once a team detached, the system lost them. There was no shared visual language across Cargill's digital ecosystem — and when teams arrived at similar designs anyway, each built them separately — redundant work with no shared foundation beneath it.

Sprout had to solve a technical problem, an organizational one, and a trust problem — with a three-person team and no existing playbook.

Similar design. Different code.
Slide showing multiple Cargill product UIs with similar visual design but built on separate codebases

Foundation

Sprout needed a foundation that could hold at enterprise scale

All we had to start were Cargill's 2022 brand identity guidelines — print and marketing-focused guidance that didn't translate directly to digital. Building on them for a digital system meant making calls the brand team hadn't made.

Color was the hardest part. The brand palette had no neutral range, so I built one from scratch. Figma had just introduced appearance modes, so we committed to dark mode from day one rather than retrofitting it later. Every color pairing had to pass accessibility checks, and the token structure had to hold across mode switches without breaking components.

Most of these decisions came down to accessibility and the discipline to make calls the brand guidelines left open.

Semantic token structure — Light, Dark, and Wireframe modes
Figma variables panel showing Sprout's semantic token structure across Light, Dark, and Wireframe themes
Light / dark mode — Order Management
Sprout's Order Management interface shown side-by-side in light and dark mode

Components

Consistency without rigidity: designing components teams would actually use

One of the biggest symptoms of DXO/DXP's failure was a high component detachment rate. Teams detached because the system couldn't accommodate what they needed to build. Every Sprout component had to be constrained enough to enforce consistency — and flexible enough that detaching was never the easier option.

The card component is the clearest example. The predecessor system had one rigid variant. I built four:

Sprout card variants
Variant
Basic
Use case
General-purpose content surfaces
Variant
Rich Media
Use case
Marketing and editorial surfaces with featured imagery
Variant
Metric
Use case
Data applications and dashboards
Variant
List
Use case
Structured content with scannable rows

Each included layout options for image placement, show/hide properties, and responsive behavior. These came from looking at what other systems got right and mapping what Cargill's teams actually needed to build.

Those decisions were validated by a 99.7% component retention rate and direct feedback from designers on how flexible the cards are to use.

Before / after — DXO card vs. Sprout card
Predecessor system card component — single rigid variant
Sprout rich media card component
DXO required detaching for customizationSprout allows full customization via the properties panel
Figma property panel — show/hide and layout options
Figma properties panel for the Sprout card component showing show/hide toggles and layout options

Adoption

Building Sprout was only half the job

The easy part was building the system. The hard part was supporting teams through adoption.

When a developer from an internal document management team needed to make the case for a Sprout migration to her stakeholders, I took her existing screens, mocked up a Sprout implementation, and gave her something concrete to bring into that conversation. She said it was extremely helpful for getting buy-in.

One designer was working within a ServiceNow-based platform where customization capabilities only stretch so far. I worked with her regularly to figure out what Sprout adoption was feasible within those limits.

Adoption wasn't a one-size-fits-all thing. I figured it out with each team as it came.

ExportDocs — before and after Sprout adoption
ExportDocs queue interface in the original DXO/DXP designExportDocs queue interface redesigned with Sprout components

Scale

Sprout had to work without us in the room

Getting Sprout to a point where teams could use it without hand-holding meant thinking beyond the components themselves.

Code Connect

I advocated for it early and helped spec it out. First I mapped the gaps between how Figma and code represent components — in Figma, States are an explicit property; in code, that's CSS. I set up a recurring sync where design and dev met to align on properties and catch intentional drifts before they became permanent. That ran until Code Connect launched.

Code Connect — Sprout button component
Figma panel showing Sprout's Button component connected to its React implementation via Code Connect

AI context files

Tool-agnostic documents covering foundational guidelines and component-level usage — color, typography, token usage, buttons, cards — that can be fed into Claude or ChatGPT to get output that respects the system. I contributed heavily to the Themes context file and Button and Card usage guidelines.

AI context files in use — Sprout theme documentation
Claude session using Sprout's AI context files to generate design token documentation

The work never ends, but that's okay. Sprout is meant to be a system that grows with Cargill.

Outcomes

Sprout shipped

20+Enterprise groups adopted within first year
99.7%Component retention
10xCost savings on Cargill.com vs. agency delivery

The cost savings came from delivering the Cargill.com brand refresh — About pages, Our Stories, and global landing pages — in-house on Sprout rather than through an external agency.

Reflection

What I'd do differently

Sprout is the first design system I've ever built. A senior UX coach who reviewed it described it as one of the most comprehensive design systems she had encountered. I'm so proud of how far the team and I have come having started from the ground up.

If I could go back, I'd rethink the token architecture and color scales early on. We kept values deliberately minimal, and as the system grew, that restraint worked against us. That restraint eventually backed us into corners a wider starting range would have avoided. I'd rather start wide and pare down than start narrow and run out of room.