I found one decision
worth slowing down.

What I did

Product design + front-end build

Built with

Figma, React, Next.js, TypeScript

Quick link

Interactive prototype

Campaign preflight showing 340 proposed shoppers, 38 excluded by confirmed journeys, 3 awaiting protection confirmation, and 299 currently eligible

How did it start?

I found Mate through the Design Engineer role. One approval decision kept pulling me deeper.

So I traced it from audience to approval—and built the interaction I wanted to discuss.

The problem

What happens when a Checkmate campaign and a brand journey both want the same shopper?

Mate documents stand-down setup inside Klaviyo or Attentive. The campaign decision happens in Mate. That makes approval a cross-system moment.

Who is making the call?

A performance operator approves the campaign. A lifecycle marketer owns journey protection in Klaviyo. The decision sits between them.

Primary user

Performance or growth operator

Owns the campaign decision in Mate.

Collaborator

Lifecycle or CRM marketer

Owns journey protection in Klaviyo.

A simple scenario

Checkmate proposes 340 shoppers. 41 overlap with active journeys: 38 are protected and 3 are still unclear.

Proposed340
Protected38
Unclear3
Eligible299

Illustrative scenario · fictional data

Where the handoff gets fuzzy

The operator reaches approval while the protection evidence lives in another system. If the answer is unclear, ownership moves between teams.

Current handoff · inferred from public documentation

Illustrative current cross-system handoffA brand journey is active in Klaviyo, Checkmate proposes an audience, and the operator reaches approval. If the systems agree, protected shoppers are excluded. If the answer is unclear, protection needs confirmation through a manual cross-team handoff.Brand journeyactive in KlaviyoCheckmate proposesan audienceOperator reachesApproveDo bothsystems agree?YESUNCLEARProtected shoppersalready excludedProtection needsconfirmation across teams

My hypothesis

Bring journey protection to the approval moment, so the operator can decide without rebuilding Klaviyo context from memory.

Proposed preflight loop

Proposed campaign preflight loopMate checks journey coverage before approval. Confirmed coverage leads to approval. Unclear coverage pauses the decision, lets the owner inspect and resolve the journey in Klaviyo, then rechecks the evidence in Mate.AudienceproposedPreflight checkscoverageCoverageconfirmed?YESNOApprove 299Pause + inspectthe journeyResolve inKlaviyoRecheckin Mate

What I designed

One preflight, inside the existing approval moment. It shows what is protected, what is unclear, and who owns the next step.

Journey coverage: 340 proposed, 38 excluded, 3 awaiting confirmation, 299 eligible, with Browse Abandon flagged as needing confirmation
The unresolved journey becomes the next actionable object.

The fix stays where it belongs

Mate explains the uncertainty. The owner resolves it in Klaviyo. Mate rechecks. The operator decides.

Campaign ready-to-approve state: coverage confirmed, all 41 overlapping shoppers protected, 0 awaiting confirmation, 299 eligible
After confirmation, 41 overlaps stand down and 299 shoppers remain eligible.

I designed the uncomfortable states too

Missing confirmation, journey detail, recheck, unable to verify, ready, and receipt. Missing evidence never gets a green state.

Product-policy assumption: eligibility stays live until delivery. If Mate freezes the audience at approval, hold the 3 unclear shoppers and let 299 proceed.

Prototype in React

The decision surface, built in Mate’s product language.

Live prototype. Review coverage, resolve the unconfirmed journey, then approve. Open full screen ↗

Why Mate got me curious

Mate is working on a part of AI product design I keep thinking about.

The agents can spot opportunities and suggest what to do next. But the marketer still has to understand the decision, trust it, and feel comfortable owning what reaches the customer.

That mix of AI, judgment, and interface design is interesting to me.

Then I noticed how the role is set up. It brings product thinking, visual design, and front-end work together across Mate and Checkmate. I like staying close to the whole thing, from the first question to the working product.

A little about what I bring

I’ve spent the last seven years designing products across enterprise software, AI, and small businesses.

I usually do my best work when the problem is still a little fuzzy. I like learning the system, finding the decision that matters, making the information easier to understand, and building the interface so we can try it for real.

Recently, I shipped a live AI booking assistant and admin app. A native booking app is now on the App Store.

This Mate concept came from the same habit. I followed one question until it became a working React and TypeScript prototype.

Where I think I could help

I see myself being useful wherever an agent’s output has to become a clear decision for a person.

Maybe the system found an opportunity. Maybe it has a recommendation. Maybe something needs approval. The interface should make the next step feel obvious.

I’d need the real product, customer conversations, and team context to know which opportunity matters most.

That is the part I’d be excited to figure out with the team.