Case study
A Unified UI System for a Sales Intelligence Platform
Leading the frontend of ZenBee: a responsive PWA, browser extensions, and the design system that let a small team ship a consistent product across all three.
- Client
- Croyten LLC — ZenBee
- Role
- Frontend Lead
- Period
- 2022 – 2024
- Angular
- Node.js
- Tailwind CSS
- Browser Extensions
- PWA
The problem
ZenBee, a sales intelligence platform, needed to meet its users where they already work: a web application for research and pipeline work, plus browser extensions that surface intelligence directly inside the pages salespeople browse. Two very different runtime environments, one small team, and a product that had grown screen-by-screen without a shared visual system — every new feature was styled from scratch, and the app and the extension were drifting into looking like different products.
The decisions
A design system before more features. I paused net-new UI work long enough to build a unified component system — tokens for color and spacing, a small set of hardened components, and layout primitives that worked in both the app and the extension popup's cramped viewport. The pitch to stakeholders was economic, not aesthetic: every screen built after the system ships faster than it would have before.
Extensions as first-class citizens. Browser extensions are a hostile UI environment — you inherit the host page's context, fight its styles, and work inside tiny popups. I architected the extension UI to share the design tokens and logic of the main app while isolating its styles completely, so injected UI never broke (or got broken by) the pages it appeared on.
PWA over app-store friction. Sales teams live on phones between meetings. Making the platform an installable, responsive PWA delivered the mobile experience without the cost and release friction of a native app — the right business call for the team's size.
API contracts before UI. I partnered with the backend team on API shapes before building against them, so frontend architecture followed agreed contracts instead of adapting to surprises.
The outcome
One product identity across the web app and browser extensions, with page loads noticeably faster after the rebuild and a component system that turned new screens into composition work rather than custom builds. The design system paid for itself in delivery speed — the metric that mattered to a small team — and the extension architecture survived host-page changes that would have broken naive style injection.