Back to home

Purposeful Duplicates 2.0: preventing churn, winning new business

Some of Outreach's biggest customers deliberately keep many records for one person, an anti-pattern the business could not afford to refuse. I designed a way to support it safely, and to let a rep tell otherwise-identical records apart.

TL;DR

An anti-pattern we could not afford to refuse.

Some of Outreach's biggest customers deliberately keep many records for one person, which is technically wrong but critical to how they sell, and the "clean" fix of merging them was not safe for us to do. So I supported the anti-pattern with guardrails while keeping the path open to a cleaner model, and let each customer configure the fields that tell otherwise-identical records apart. It removed a real reason for at-risk customers to churn, and became a differentiator in new-business deals, since few competitors support this workflow at all. Globally available since August 2024.

TL;DR

An anti-pattern we could not afford to refuse.

Some of Outreach's biggest customers deliberately keep many records for one person, which is technically wrong but critical to how they sell, and the "clean" fix of merging them was not safe for us to do. So I supported the anti-pattern with guardrails while keeping the path open to a cleaner model, and let each customer configure the fields that tell otherwise-identical records apart. It removed a real reason for at-risk customers to churn, and became a differentiator in new-business deals, since few competitors support this workflow at all. Globally available since August 2024.

TL;DR

An anti-pattern we could not afford to refuse.

Some of Outreach's biggest customers deliberately keep many records for one person, which is technically wrong but critical to how they sell, and the "clean" fix of merging them was not safe for us to do. So I supported the anti-pattern with guardrails while keeping the path open to a cleaner model, and let each customer configure the fields that tell otherwise-identical records apart. It removed a real reason for at-risk customers to churn, and became a differentiator in new-business deals, since few competitors support this workflow at all. Globally available since August 2024.

Context

Enterprises treat their CRM as the source of truth. Some deliberately keep several records for the same person: one per product line.

We talked to ten customers to understand the workflows and use cases that lead to purposeful duplicates, and we collected direct feedback from accounts that were already running v1. The goal was to separate "this is an accident" from "this is how we sell on purpose", because the two need opposite responses.

Problem

The duplicates were on purpose, but they looked identical, so a rep could not tell which to act on.

The pattern was consistent. Every time a seller wants to sell something new, they create a new record. The most extreme version combines a multi-product motion with an agency model, where several agencies sell the same company's products. This is where it gets really hard. Agency A and Agency B may target the same buyer, but for governance and data privacy reasons, Agency A must never see Agency B's activity, even inside the same organization.

Process

It was a known anti-pattern, but refusing it was not an option. The question was how to support it without polluting anyone's data.

Support it, not fight it.

Outreach lives downstream of the CRM, so duplicates are here to stay. Support the anti-pattern, and fix every touchpoint where it could break the experience.

Let each customer define "distinct."

Make the differentiating fields configurable, so reps tell duplicates apart by how they actually sell.

Make enabling it deliberate.

Gate it behind Support, so no one turns it on by accident and pollutes their data.

Solution

A record that tells you what it is for at a glance, everywhere you pick a prospect, using the fields each customer chose.

A visual identifier for duplicates.

A consistent visual element so users can see at a glance that a record is one of several.

Details on hover.

Showing just enough extra context on a prospect to confirm whether it is the right one, without leaving the flow.

A unified prospect picker.

Solving this revealed real design debt. We had four separate prospect pickers, built by different teams, and each one was slightly different. I combined them into one, so the way you tell duplicates apart works the same everywhere you pick a prospect.

Impact

Churn prevented, new business won

Several of our largest customers treated Purposeful Duplicates as a critical requirement. Shipping it removed a real reason for them to leave, protecting revenue that was genuinely at risk of churning. It also became a differentiator in new-business conversations: few competitors support this workflow at all, so being able to say yes to it directly helped win deals that depended on it.

Looking for a Senior Product Designer?

Looking for a Senior Product Designer?

Let's talk

Kraków · Poland · UTC+2 · Open to remote

Kraków · Poland · UTC+2 · Open to remote

15:20:44