Rey MungaiProduct Designer & AI Design Engineer
← My Work

Maridadi: one system for KOKO's operations and products

KOKO Networks · Senior Product Designer · Clean cooking · 2023–2026

Maridadi gave KOKO's product squads one standard to ship against and cut design-to-development rework by roughly 30%.

The Maridadi design system board: 84 colour tokens, 120 button variants, 16 modules, about 30% less rework, shown over the Add Agent form.
~30%less design-to-dev rework
16operations modules on one system
84colours: seven ramps of twelve
120button variants

Maridadi powers KOKO’s products on both sides of the business. Inside, it runs the operations platform staff use across 16 modules, from customers and promotions to agents, inventory, fuel and orders. Outside, it shapes the customer-facing products used by 1M+ households. We rolled it out on the internal tools first, then extended it to customers. I led the design of it, managing four designers, and we ran it like a product.

The problem: four squads, four versions of KOKO

KOKO’s operations platform grew one module at a time, each shipped by one of four squads. Without a shared foundation, the same button, form field or alert was rebuilt slightly differently in each module, and the inconsistencies usually surfaced after engineering had already built them. For operations teams moving between modules all day, it felt like several products. For the business, it meant rework.

We started with internal tools because they had the most modules, the most drift and users we could reach directly. Once components held up across 16 modules, we extended Maridadi to the customer-facing products, where mistakes are more visible and harder to undo.

The system: every colour has a job, every state is covered

The palette has seven ramps of 12 steps, 84 colours in total, and five of those steps carry a semantic role that every component draws on. Hover, pressed and disabled states come from the same ramp rather than new colours.

PrimaryKOKO Teal 6 · #09DCFC
SecondaryKOKO Blue 10 · #012FA2
SuccessKOKO Green 5 · #90C969
WarningKOKO Yellow 6 · #FFA800
ErrorRed 6 · #D42A2A
The five semantic roles.

Components cover every state an operations user can hit, not just the default. Buttons alone come to 120 variants: four styles in three sizes and five interaction states. Templates and dialogs use swap slots, so designers drop in content without detaching the component. Each component’s documentation says when to use it, when not to, and what its matching component in code is.

The Maridadi button specification: large, medium and small primary buttons with their type size, padding and icon size, shown in default, hover, pressed and disabled states, with and without icons.

The button matrix: four styles, three sizes, five interaction states.

Two views of the same shop details page in the operations platform, side by side: with kit replacements set to No, and set to Yes with a Refurbished Kits Available badge beside the shop name.

The same shop page with kit replacements set to No (left) and Yes (right): the status badge appears beside the shop name.

A destructive action in the operations platform: a dialog asking whether to reset the canister, stating the action cannot be reversed, with Cancel and a red Reset button.

A destructive action: the dialog says what will happen and that it cannot be undone, and keeps the red Reset button apart from Cancel.

Team and governance

My job was to keep the whole team’s work feeling like one system. I set the principles, naming conventions and quality bar, and each foundation and component area had a named owner. Designers worked inside the squads and built components through live features, so the system grew from real needs and became part of delivery rather than extra work.

We released the library like a product. Every change was made on a Figma branch, reviewed for consistency, accessibility and technical feasibility, and published on a predictable cadence with a changelog. Breaking changes were announced in advance with migration notes. Components were never deleted outright: they were flagged, linked to their replacement, and removed only after a sunset window, once library analytics showed who still used them.

Adoption: the easiest way to ship

I built adoption into how work got done. Maridadi was linked to our DesignOps practice, design system fluency is part of onboarding, and Design QA reviews every feature before handoff, tied to a Jira ticket and a Figma file. Component names, props and tokens match between Figma and code, and engineers joined component reviews.

DesignFigma library analytics for inserts, detach rates and which files used the library. A spike in detaches usually meant a missing variant, so it went on the roadmap.
EngineeringThe share of UI built from coded components rather than one-off implementations, tracked through QA findings and code review.
DeliveryRoughly 30% less design-to-development rework across four squads.
How adoption was measured.

The Add Agent flow shows it in use. Almost every element comes straight from the system, so building the screen was mostly assembly rather than designing from scratch. The same components then carried over to the customer side. The cooker and canister swap process shows the agent side of the same network.

Step 1 of the Add Agent flow: agent name, application form upload, contact and payment phone numbers, a toggle to link the agent’s customer account, national ID and KRA PIN fields, all built from Maridadi components.

Outcomes and what I learned

  • Roughly 30% less design-to-development rework across KOKO's four product squads.
  • One shared standard across 16 operations modules and the customer-facing products, still in use after I left.
  • A system that outlasted its builders: governance, documentation and onboarding meant new designers could pick it up without the people who built it.

What I took away: adoption follows usefulness, not mandates, and building components through live features did more than any rollout announcement. Detaches are feedback, because when designers broke away from a component it usually meant the system was missing something. And governance is what makes a system last. Branches, changelogs and deprecation windows matter less on day one, but they kept Maridadi trusted as it grew.

This builds on earlier system work: Ajua’s first design system, and design system governance across Safaricom’s distributed, multi-team organisation.

Want to talk about this project, or work together?

Book a call