Build a Payments domain pattern layer on top of the core design system—so designers can assemble complex flows faster, stay consistent across initiatives, and reduce design-to-dev drift.
Design Engineer

As the platform grew, teams needed UI that was consistent within their domain, not just at the primitive component level. Payments was especially complex—multiple user roles (payers, CBOs, network leads) and many edge states—so designs drifted easily across initiatives.

I created reusable Payments page templates by composing domain patterns from existing design system primitives. These templates gave the team a fast starting point for new work and ensured that repeated sections (headers, action areas, details panels, validation states) stayed consistent across initiatives—especially as requirements changed frequently.

One key pattern was Invoice Details, designed as a reusable composite with clear variants by user role and invoice state. For example, a Disputed Invoice variant includes an additional dispute summary section above the standard invoice fields.By standardizing these variants in one place, we reduced the risk of small spec differences (like a missing field or mismatched label) that can create confusion in implementation and QA.
Beyond documentation, the goal was to improve handoff quality by making the pattern library map more directly to how the UI is built in code. With patterns defined as stable, named building blocks, designers and engineers can discuss changes at the pattern level (not per-screen), making reviews faster and reducing ambiguity.Longer-term, this structure sets us up to leverage tools like Code Connect and Figma MCP to tighten design-to-code traceability.