PantheonGet Early Access

What is Identity Resolution?

TL;DR

Identity resolution is the process of deciding whether two or more records refer to the same real person, then joining them into one view. Inside a single system this is trivial — there is a primary key. Across systems that were never designed to interoperate, there is no shared key at all, and the job becomes an inference problem with asymmetric costs: a missed match leaves a duplicate, but a wrong match silently blends two people into one.

On this page

Defining the term

Identity resolution is the process of determining that two or more records describe the same real-world entity — usually a person — and joining them into a single view.

Within one application this is not a problem. Every row carries a foreign key to a user, the user has an ID, and the join is exact. The problem appears the moment records come from independent systems that never coordinated on identifiers. Each one issued its own, in its own namespace, with its own rules about whether it lasts. Nothing in the data says these two rows are the same human. That fact has to be inferred, and every inference has an error rate.

Messaging is the hardest common case: the identifier space is fragmented by design, and the most visible fields are the least reliable ones.

Why messaging makes it hard

The same person reaches you as an account on one messenger, a phone number on another, an email address in a third, and a handle they can change this afternoon in a fourth. None of those namespaces overlap. No authority maps between them, and there is no field that is reliably present, stable, and unique everywhere at once.

Identity is anchored differently on every platform, and the durable anchor is rarely the one a person sees on screen. The fields a human would reach for first — display name, profile photo, handle — are exactly the fields the platform lets the user rewrite whenever they like. So the visible surface of a contact is the part most likely to move, and the parts that hold still are not shown to anyone.

On top of that, people are legitimately plural. One human has a work line and a personal line, two mailboxes, occasionally two accounts on one platform for two parts of their life. None of that is an error to be cleaned up. It is what a real contact looks like.

Some of the joins that result are simply certain. Most are judgment calls, and a system that cannot tell the two apart is going to be confidently wrong somewhere.

There is a real difference between merging two records into one and linking them while both survive.

A merge collapses two records into a single identity: one record owns both histories. A link asserts a relationship between two records that stay distinct — useful when the evidence is good but not conclusive, or when the two identities are separate roles of one person you want to keep separable.

Whichever you choose, the operation must be reversible. That is a data-model requirement, not a UI nicety. It means keeping the contributing records intact underneath the unified view and being able to unwind exactly one join without disturbing the others. A merge implemented as a destructive rewrite — copy the fields over, delete the loser — cannot be undone once another record joins on top of it. By the time a bad join is noticed, the information needed to reverse it is gone.

Precision beats recall: the asymmetric cost

Identity resolution is one of the rare problems where the two error types are nowhere near equal in cost.

A missed match leaves a duplicate. The user sees the same person twice, notices, and fixes it. The history is split but nothing is wrong — every message is still attached to a record that legitimately owns it. The failure is visible and cheap.

A false merge blends two real people into one record. Now one person's history appears under another person's name. Nothing in the interface signals an error, because a merged record looks exactly like a correct one. The user reads a summary of a relationship that never happened, and — the part that actually matters — private context from one person becomes visible in the other person's view.

So the tuning is not symmetric. Systems that handle real relationship data should be biased toward leaving duplicates rather than risking a blend, hold a high bar for joining anything on their own, and route everything in the ambiguous middle to a human. Aggressive merging looks better in a demo and is the more dangerous direction in production.

Propose, do not act

Follow the asymmetry through and it settles the interaction model.

Where the evidence is unambiguous, resolving automatically is correct, and asking the user would be noise — nobody wants to confirm the obvious. Where it is ambiguous, the honest move is to surface the proposed join and let a person confirm it.

That prompt is not a missing feature or an automation someone did not finish. It is the system correctly declining to make an irreversible, invisible decision on evidence that does not support one. The alternative is a product that is quietly wrong about who someone is and never tells you, which is worse than one that occasionally asks.

Pantheon is built this way: it resolves the same person across channels automatically where the evidence is unambiguous, asks where it is not, and keeps joins reversible so a mistake stays a mistake instead of becoming the record.

Frequently asked questions

What is identity resolution in simple terms?

It is deciding whether two records describe the same person, then joining them into one view. Easy inside one system, where a primary key already answers the question. Hard across systems that issued their own identifiers and share no common key — there the answer has to be inferred from evidence.

Why is it so hard across messaging apps?

Because each app anchors identity in its own way and none of them agree. The same person is an account in one place, a phone number in another, an email address in a third. Nothing joins those automatically, and the fields that are easiest to see are the ones people change most often.

Why is a false merge worse than a duplicate?

A duplicate is visible and cheap: the user sees one person twice and fixes it, and no message is attached to the wrong human. A false merge is invisible and expensive: two real people become one record, one person’s history is read as the other’s, and nothing in the interface indicates an error. That asymmetry is why identity systems should be biased toward under-merging.

Can you use someone’s username as their identifier?

It is a bad idea. People rename themselves, plenty never set a username at all, and platforms recycle abandoned ones to new accounts. A CRM that treats the username as the person will split one contact in two after a rename, and can file a stranger under an existing relationship after a reuse. A username is evidence about a person, not the person.

Should identity resolution be fully automatic?

Not everywhere. Automatic is right where the evidence is unambiguous — asking there is just friction. Where it is not, a confirmation step is the correct behavior, because the error it prevents is silent: a merged record looks identical to a correct one, so nobody catches it by reading the screen.

Related

Cross-Channel Contact Deduplication

Cross-channel contact deduplication is collapsing the several records that different channels created for one person into a single contact — without collapsing two different people by accident. The naive version ("merge on exact match") fails in two directions: the fields that match exactly are often the unreliable ones, and merges chain, so a single bad join does not produce one bad record. It produces many.

Read →

What is Relationship Memory?

Relationship memory is the layer that holds context about a person — who they are, how you know them, what you have agreed to, what is still outstanding — as opposed to merely storing the messages you exchanged. A message store answers "where did we discuss this?". Memory answers "what is true about this relationship right now?". The second question is not a search problem, and it depends entirely on the identity layer underneath being correct.

Read →

What is a Relationship Operating System (Relationship OS)?

A Relationship OS (relationship operating system) is software that treats your network of relationships as the core data layer of your work — consolidating messages, contacts, context, and history from every channel into one continuously updated record per person, rather than per deal or per ticket.

Read →

Chat Aggregator vs Relationship OS

A chat aggregator merges multiple messengers into one inbox — Beeper, Texts, and Franz do this well, and for reading every chat in one window it’s exactly right. But an aggregator unifies messages, not people: the same person on two channels stays two threads. A relationship OS adds the missing layer — it resolves that person across channels into one self-building contact record and keeps the history. Same starting point, one more layer.

Read →

Share this page

Last updated