---
name: moltsets-hubspot-duplicate-contact-tiebreaker
description: Use this skill when HubSpot flags possible duplicate contacts with no shared email or domain - resolve each one through MoltSets and confirm they're the same person before merging, so two different people aren't collapsed into one record.
---

# HubSpot Duplicate Contact Tiebreaker

Review HubSpot's possible-duplicate contact pairs and decide which ones are genuinely the same person before anyone hits merge. Where the two records share no email or domain, resolve each one independently through MoltSets and compare the results - so a merge only happens when the underlying identity actually matches, not just the name.

## Triggers

"Check these possible duplicate contacts in HubSpot before I merge them", "confirm whether these two HubSpot records are the same person". Use when HubSpot surfaces possible-duplicate pairs (or the user supplies a pair) and the shared-email/domain signal is missing.

## Requirements

- HubSpot remote MCP (mcp.hubspot.com) and the MoltSets MCP connected in the same client
- Custom objects are not reachable through HubSpot's remote MCP - this applies to standard contact records

## Chain

```
HubSpot possible-duplicate contact pairs
  -> hubspot/get-object                 (both records: name, company, title, LinkedIn if present)
  -> MoltSets, per record where identity is unclear:
       reverse_linkedin_lookup          (LinkedIn URL -> current company, title)
       search_business_profile_by_name  (name + company -> LinkedIn, title)
  -> compare LinkedIn URL, current company, and title across the pair
  -> classify: same person / different person / inconclusive
  -> hubspot/merge-objects              (same-person pairs only, after confirmation)
```

## Inputs

- **Duplicate pairs** - the set of possible-duplicate contacts flagged by HubSpot, or a manually supplied pair
- **Confidence threshold** - how strong a match must be to auto-classify as same person versus flag for manual review
- **Merge action** - auto-merge confirmed pairs, or return the classification only and let a person merge manually

## Steps

1. Pull each contact in the duplicate pair, including any LinkedIn URL, company, and title already on file.
2. For pairs with no shared email or domain, resolve each contact independently: `reverse_linkedin_lookup` if a LinkedIn URL is present on either record, `search_business_profile_by_name` otherwise.
3. Compare the LinkedIn URL, current company, and title returned for each side of the pair.
4. Classify the pair as same person (LinkedIn URL matches, or company and title align closely), different person (clear mismatch), or inconclusive (not enough to resolve either side).
5. Only proceed to `hubspot/merge-objects` on same-person pairs, and only after the user confirms.

## Output

| Contact A | Contact B | A: Company/Title | B: Company/Title | LinkedIn Match | Classification | Action |
| --- | --- | --- | --- | --- | --- | --- |

```
Pairs reviewed:              X
Same person confirmed:       X
Different person:            X
Inconclusive:                X
Merges completed:            X
MoltSets tokens used:        X
```

## Tips

- A shared LinkedIn URL is the strongest single signal available - treat a match there as decisive and everything else as supporting evidence.
- Merging is irreversible in practice, so always confirm before running `merge-objects`, even on high-confidence pairs.
- Leave inconclusive pairs unmerged rather than guessing - a wrongful merge is more costly to unwind than a lingering duplicate.
