The 60/300 story
I rebuilt how design and engineering shipped together at Oona: 60% less engineering overhead, 300% more feature deployment velocity — with a lean team serving two countries. It's the work I'm most proud of, and it barely has a screenshot to its name, which is exactly the point.
Read the full case study
The mess I inherited
Our design system lived in more than fourteen Figma files, each publishing its own slice — logos in one, colors in another, fonts, effects, grids, forms, each in their own. Changing something in file 01 cascaded into 02, 03, 04, and 14; each had to receive the update, then re-publish to every working file. A criss-cross of dependencies that turned a logo tweak into an afternoon. For a lean team shipping fast across Indonesia and the Philippines, this was an architecture designed to slow us down.
Change one: architecture
I restructured the entire system around Atomic Design, with one direction of flow: the MUI base publishes atoms, molecules, and organisms into a Components file, and Components publishes into working files. Updates trickle down, and nothing criss-crosses. Then the second layer: Common files — DTC Common and Kahoona Common house everything market-agnostic, documented once rather than re-drawn by different designers and slowly drifting apart.
Change two: a shared language
I brought MUI into every revamp and new build, and this was the game-changing leverage. Design and frontend suddenly spoke the same words — a component spec could be one sentence, "This is an MUI Autocomplete field with multi-select and search", and nothing more. My favorite proof: one of our Product Managers used to write component interaction behavior into every user story. After MUI came in, she stopped — simply because she didn't need to anymore.
Change three: never design one extra pixel
Figma files exist for developers, not for decoration — so we drew unique states only. Error states drawn once; a twenty-field form gets one full-frame reference, and every variant after that is just the form. The same rule ended wireflows: our Philippines motor Policyholder form explodes combinatorially — Individual or Corporate, documents now or later, leased, assigned — and no arrangement of arrows survives that. So instead, a matrix: one reference frame, then a table of scenario deltas. Logic goes into user stories, flows into flow diagrams, and Figma is design specification reference.
Change four: content sheets
Designers fill Figma with placeholder copy, stakeholders review it as if it's real, and the churn hits three times: review, QA, UAT. So we stopped pretending. Once a flow locks, the designer prepares a content sheet — a plain spreadsheet the copy owners fill in, with two small columns doing the real work: char count and char limit. Copywriters write long because more words sell; legal writes long because more words cover risk; the designer sets the limit, and the limit is part of the brief.
The payoff I'm proudest of: two landing-page templates with content sheets let Marketing spin out 23+ SEO pages across two countries with zero design involvement. And near the end of my time there, I built a Claude project connected to Figma over MCP that generates these sheets at roughly 95% accuracy — a one-to-two-day designer task became nearly free.
What the numbers mean
Less duplicate design work, no re-publish cascades, no interaction guesswork, files that explain themselves, and copy churn designed out of review, QA, and UAT — each change removing a different kind of friction between a design decision and shipped code.