10 years in product design and UX. Built and scaled design systems at Aegon NL (5M+ customers), unifying 60+ products under one shared component library.
Indonesian by birth, Dutch because worstenbroodjes.




Three case studies. Common thread: adoption.
22,000 advisors.
One interface for all of them.
Multi-BU portal redesign for independent insurance advisors.
Built for everyone. Designed for no one.
AIP exposed every business unit to every advisor, regardless of WFT license(!)WFT is the Dutch financial advisory qualification. It determines which product categories an advisor is legally allowed to advise on., active portfolio, or daily workflow.
The interface wasn't broken. It was role-blind.
Three months triangulating analytics, session recordings, and advisor interviews surfaced a structural insight, not a visual one.
One portal. Three ways it failed advisors.
The role-blind architecture wasn't a hypothesis. It showed up in every layer of the data.
Three design decisions, mapped to three advisor pain points.
We explored routes, prototyped the risky parts, then kept the decisions that changed what advisors could find, decide, and do.
What shipped. What I killed in testing.
18-month deadline. Four validation gates.
Each phase shipped only after the previous one validated against advisors and stakeholders.
Gate passed
Gate passed
Shipped
Load time down 46%.
Advisors on task up 60%.
What worked. What I noticed too late.
Aeon Design System.
60+ products, one system.
Shared component architecture across Aegon NL products.
Every team had a button. None of them had the same button.
Each platform built independently. No shared components, no token language, no documentation. Every team solving the same problems in isolation.


| Polisnummer | Product | Status |
|---|---|---|
| P-00234718 | Pensioen | Actief |
| P-00198443 | Lijfrente | In behandeling |
| P-00312050 | ORV | Wachten |
Three platforms. One component.
Platform-specific Field variants were replaced with a single component driven by context flags. Reduced build surface, eliminated drift, and cut load times by 25%.



Docs nobody read. Then docs they pointed to.
Scattered, inconsistent, rarely referenced. I restructured the system documentation: usage guidelines, do/don't examples, token mapping, team contribution notes.
89% of adopting teams pointed to documentation as the reason they could switch without slowing down.
Dev time down 40%.
Component adoption above 90%.
The Data Table they wouldn’t adopt.
Shared structure, local complexity.
Turning a resistant revenue team into design-system partners without flattening their domain complexity.
Largest revenue team. Openly resistant.


70–80% was standard. Just wasn't packaged for them.

Clear ownership. Neither team steps on the other's toes.
layer
boundary
System
Composable, not rigid.
I designed the composable model and its components: a shared core with explicit extension points. Structure, behaviour, and accessibility shared; cell rendering, expansion slots, and conditional columns owned by Hypotheek.
Their edge cases stayed. No fork required.




Right: rebuilt on Aeon components.


The biggest fear wasn't standards. It was waiting.
A11y defects down 62%.
Data Table coverage 90%.
What earned trust. What I should have prevented.
Zero accessibility regressions. Two consecutive quarters.
Audited all components against WCAG 2.2 AA: focus indicators (2.4.11), target sizes (2.5.8), dragging alternatives (2.5.7). Updated contrast tokens for every semantic state.

Things I build when nobody asked.
The craft side matters to me: I still want to be close to the work, doing the research, making the calls, pushing the visual quality. What also genuinely excites me is directing LLM agents as part of that workflow. I set the brief, the system executes, I review and steer. That's the kind of leverage I'm after.