Case study · Platform · Vendor migration · AI

One UX,
two possible backends

A platform-wide listings vendor migration on a fixed deadline. I could not choose the vendor. I designed the decision so that the user experience could not lose.

CompanyKeap, acquired by Thryv
RoleDesign & research lead
Team2 leads · 4 PMs · 2 designers
Timeframe2026 · In flight
FocusSystems · Research · AI
Listings Management: a table of directory platforms with Connected, Processing, Issue Found and Not Connected statuses, beside a business profile completion score

Product screens, captured from demo accounts.

01 · Context

A two-year wind-down, and a user experience to protect

The platform had to replace its listings vendor on a fixed deadline, with a new partner fully live by 2028. I led the design and research work to make sure the switch protected the experience instead of quietly degrading it.

Four problems sat inside one decision: which vendor to move to and on what integration model; how the choice lands on existing users; what becomes possible on a new backend; and how to get PMs, dev leads, marketing and support aligned on the answer.

The SMB lens

Our persona is a roofer running her own business. Every option got scored against what helps her, not what a platform can technically do.

The real capability

What the business is actually buying is AI search presence: being in the answer, not just listed in a directory.

The risk nobody had measured

None of the baseline studies covered reconnecting listings to a new vendor. That flow did not exist yet.

Four evaluation epics arranged around one persona lens
Four epics, one lens. Every vendor capability got scored against what helps a roofer run her business. That is why the highest-capability vendor did not rank first on fit.
02 · My role

Design and research lead on the evaluation

I own the design and research track on the proof of concept, working alongside one other designer to keep research and prototyping moving in parallel. The vendor decision itself is not mine. I focused on the decisions that were.

01

Consolidated the baseline

I pulled three prior usability studies, all A-grade, into a single bar any new vendor has to clear. Before this, “don’t make it worse” had no number attached to it.

02

Specified an abstraction layer

The vendor choice was not mine to make, so I made a different one: design the frontend so it does not care who wins. Our patterns on top, vendor fields underneath.

03

Put an AI criterion in the scorecard

I argued interaction model into the evaluation: does the AI hand her a decision to approve, or a blank box to fill? That became a requirement rather than a nice-to-have.

04

Built a live prototype

Wired to a real sandbox API rather than mocks, so every status and score on screen is live data, and the evaluation argues from behaviour, not comps.

The AI assistant screen with suggested prompts including What should I prioritize fixing right now, Draft a reply to my worst recent review and Which listings have issues
The criterion I argued into the scorecard, made concrete: every entry point hands the user something to approve or decline rather than an empty box to fill. Approving a drafted reply is a five-second decision; writing one from scratch is a task that never happens.
Six-step research and design plan with steps zero to four complete and step five in progress
Every step produces a decision input, not a deliverable. Steps 0 to 4 are done; validation with real users is underway to settle the usability bar, feature priority and MVP scope.
03 · The core decision

One UX, two possible backends

The integration surfaced three design problems at once: the vendor API returned fields that did not map cleanly onto our patterns; what the API could return shaped what I could show: partial states, async generation delays, variable confidence in AI output; and SMBs had to trust that AI-generated content represented them accurately.

SMB user reviews & approves Abstraction layer · my design surface Vendor A backend Vendor B backend

That abstraction layer is my call, and it is why this decision cannot produce a bad user experience. Whichever vendor wins, the frontend does not get rewritten.

04 · What research said to protect

Three findings that shaped the design

A mental-model mismatch

Users expect to mark a closed period inside their open hours, not split a day into two blocks. It showed up in two separate studies.

Terminology is fragile

Existing platform vocabulary already causes hesitation. Third-party terminology would compound it.

Consequences must be legible

Users could not reliably tell what disabling something would do versus disconnecting it, before committing.

Confirmation dialog contrasting disable and disconnect, each listing its consequences
Disable and disconnect are not the same action, and users could not tell them apart before committing. Each path now states its consequences and whether it can be undone.
05 · Where it stands

Status, honestly

The vendor decision lands at the end of 2026 and the new partner goes live in 2028, so there is no adoption outcome to show yet. Here is what is already true either way.

1 UX
Survives whichever vendor wins
3→1
Studies consolidated into one usability bar
160K
Locations in scope
CompleteProof-of-concept execution, integration setup and testing across both shortlisted vendors.
In progressScoring and internal alignment, heading into formal review.
UpcomingVendor decision gate, then migration planning and rollout.
The vendor choice was not mine to make, so I made a different one: design the frontend so it does not care who wins.On the decision I could actually own

Let’s talk about the system you’re building