Resolving a prospect to an existing relationship
Before a discovered organisation becomes a prospect, prospect_identity_resolution asks whether the workspace already knows it. A match means the record is attached to the existing Person or Company instead of starting a cold life of its own. This is the check that stops a customer receiving an introduction to a company that has been invoicing them for a year.
Why this check exists at all#
Discovery finds organisations that fit a description. It has no opinion about whether you already know them, and a description of an ideal customer naturally describes your actual customers too — that is what makes it a good description. Without resolution, the better your discovery brief, the more of your own client list it would hand back to you as strangers.
The damage is not a wasted send. It is the message itself: an introduction, a fit reason explaining why this company might benefit, an opening built from public research about a business whose account manager you already are. One of those does more harm than a hundred unanswered cold emails.
What it matches on#
| Signal | Compared against | Strength |
|---|---|---|
| An address on a channel | A contact that has already exchanged messages with you outside cold outreach, or a Person found through an Identity normalised by value_key(kind, value) who is at the opportunity stage or later | Strongest — applied |
| An organisation's web domain | Company records and their domains, where the company or one of its people is at the opportunity stage or later | Strong — applied, and the organisation's site is not read |
| Organisation name | Company records in the same workspace that are at the opportunity stage or later | Weak — proposed on the discovered organisation for a person to confirm, never applied |
Normalisation is what makes address matching work at all. An address that differs by case, by punctuation the provider ignores, or by the display name wrapped around it is the same identity, and value_key is where that decision is made once for the whole product rather than re-implemented per feature.
What happens when it fires#
A strong match resolves. The candidate is recorded as an existing relationship, not as a cold prospect.
Result Its contact keeps its score and history, nothing is researched or drafted for it, and the discovered organisation and its prospect record both say which relationship it matched and why, so the useful response — a call, a renewal, an upsell — starts from the relationship rather than from a duplicate record.
A weak or ambiguous match is proposed rather than applied.
Result Connect follows the same rule it follows everywhere two records might be one:
merge_peopleis a human decision, and so is this. A guessed merge is far harder to undo than a duplicate.No match: the candidate proceeds to research as normal.
Result Nothing is recorded about the check having run, beyond the fact that the prospect exists.
Before a first message is prepared, the check runs again.
Result A prospect can become a relationship through another door — a call, an enquiry, a deal — between being found and being written to. If it has, the introduction is not prepared and the reason is written to the activity trail.
An import applies the address half of this check: an address in the list that already holds a conversation with you is updated but kept out of the cold-outreach lifecycle, and the import summary counts it, so a spreadsheet containing your own clients' addresses does not quietly turn them into prospects.
When it is wrong#
- A genuine new prospect was matched to a customer
- Two organisations share a name, or one address was attached to the wrong Person earlier. Correct the identity on the Person record; the prospect can then be created.
- A known customer was prospected anyway
- The organisation was reached under an address, domain or name that is not on any record you hold. Adding that identity to the Person prevents a repeat.
- The same company exists twice in relationships
- Resolution matched one of the two. Merge them — the merge preserves identities, stages, follow-ups, deals, demos, cases and onboarding from both sides — and future resolution has one target.
- A supplier or partner was treated as a customer
- Resolution answers 'do you already know them', not 'are they a customer'. Anyone in your relationships counts, which is usually what you want.
Questions#
Can I turn the check off?
It is not offered as a switch, and the reason is asymmetry: a missed prospect costs you one opportunity you can recover next month, while an introduction sent to a current client costs standing you cannot recover at all. Correcting a wrong match is the supported route.
Does it match against people I have only emailed once?
Yes, when that exchange is on record as a conversation with the address — one message in either direction outside cold outreach is enough. A Person known only by an Identity, who has never exchanged a message with you and is not yet at the opportunity stage, is not treated as a relationship; that is also what stops a prospect Connect found itself from being mistaken for one.
Where is a match recorded?
On the discovered organisation itself, with the reason, and in the activity trail alongside every other refusal. A refusal is a decision, and a prospecting run that returned fewer rows than you expected is usually explained there rather than in the list itself.