t0ddc3by/claude-for-customer-success/duplicate-detection
Claude Code and agent skill by t0ddc3by/claude-for-customer-success
- community
Checking that the SKILL.md file is still in the repository.
Identifies duplicate accounts, contacts, and opportunities in HubSpot. Produces merge candidates with confidence scores (High/Medium/Low). Never merges autonomously — all merges require Write-tier human confirmation. Triggers: 'duplicates', 'merge candidates', 'duplicate accounts', 'duplicate contacts', 'clean up CRM duplicates'.
Install
npx vskill@latest install t0ddc3by/claude-for-customer-success/duplicate-detectionSKILL.md
[PROPOSED]
Duplicate Detection
Merge candidates with confidence scores. High-confidence duplicates batch- presented for bulk approval. No autonomous merges — ever.
Reference: Governance tiers → ../../../shared/revops-domain-model.md §9 Config reads: crm_system
Pre-flight
Read ~/.claude/plugins/config/claude-for-customer-success/rev-ops/CLAUDE.md and ~/.claude/plugins/config/claude-for-customer-success/company-profile.md.
If either is missing or contains [PLACEHOLDER] markers, stop and prompt for /rev-ops:cold-start-interview.
Note from config: crm_system
G-code dependency: All G-code guardrails referenced in this skill (G1–G9) are defined in the CLAUDE.md config loaded above. If Pre-flight halts or config is missing, G-codes are undefined — do not proceed with partial config.
Use when
- CRM contacts, companies, or deals need duplicate scanning before a data import or merge
- Duplicate records are suspected to be inflating pipeline or distorting metrics
- Data hygiene sprint includes deduplication as a required step
Do NOT use for
- Full CRM hygiene audit (use crm-hygiene-audit)
- Field completion monitoring (use field-completion-monitoring)
- Merging records autonomously (outputs are proposals — G9 applies)
Typical Activation
"Find duplicates", "duplicate detection", "deduplicate the CRM", "flag duplicate contacts/companies", "duplicate scan before import"
Reasoning Protocol
Before generating output, apply these primers:
- CLASSIFY: What type of duplicate detection request is this?
- Single object scan (accounts, contacts, or opportunities — merge candidates for one object type)
- Multi-object sweep (full CRM across all three object types)
- Pre-import deduplication (scan before data load — flag conflicts before they enter CRM)
- Merge candidate review (user reviewing previously surfaced candidates — confirm or dismiss)
- CONSTRAINTS: What limits the solution space?
- Confirm activation — user requesting duplicate detection or merge candidates
- Check HubSpot connector — read access to accounts, contacts, opportunities required; declare fallback if absent
- Confirm object scope before pulling data: accounts / contacts / opportunities / all
- Apply G6 — data-as-of on all HubSpot reads
- Apply G9 — no autonomous merges; all merge actions require explicit Write-tier human confirmation
- Present High-confidence candidates in batch approval format; Medium and Low require individual review
- EXPERT CHECK: What would a veteran RevOps data hygiene analyst verify first?
- Is the matching signal quality sufficient for the confidence tier assigned? A single
name-similarity match without corroborating signals should never reach High confidence — over-confident scoring causes legitimate record merges.
- Is data freshness confirmed before scoring? Stale connector reads may miss recent
record updates that resolve apparent duplicates — declare data age before presenting candidates.
- Are High-confidence candidates reviewed for merge risk before batch approval? Even
High-confidence pairs can carry legitimate differences (e.g., separate subsidiaries with similar names) — surface any anomalies before queuing for bulk merge.
- Is the object scope confirmed before running? A full multi-object sweep on a large CRM
may return partial data — scope the scan and declare any data limits upfront.
- ANTI-PATTERNS: Common mistakes to avoid:
- Merging records autonomously without Write-tier human confirmation (G9 violation)
- Surfacing HubSpot reads without data-as-of timestamp (G6 violation)
- Assigning High confidence based on a single matching signal without corroboration
- Running a multi-object sweep without declaring scope and data volume limits
After execution, verify:
- G6 data-as-of label applied to all HubSpot reads
- G9 Write-tier qualifier present: all merges require explicit human confirmation before execution
- Confidence tier (High/Medium/Low) correctly assigned per matching signal count and quality
- Confidence: High when HubSpot is connected and data is current; Moderate when data is stale or connector is unavailable
- Confidence: [High] when HubSpot is connected and data is current / [Medium] when data is stale or connector is unavailable / [Low] if all inputs are manual or unverified
Matching Criteria
Accounts:
- Domain match (company email domain)
- Company name similarity >85% (fuzzy match)
- Same billing address
Contacts:
- Email address match (exact)
- First + last name + company match
- LinkedIn URL match (if field populated)
Opportunities:
- Same account + same product + close date within 30 days + ACV within 20%
Confidence Scoring
- High — 2+ matching signals, no conflicting signals
- Medium — 1 strong signal, some field differences that may be legitimate
- Low — Partial match; requires human judgment before any action
Output
Reference Files
| File | Purpose | |
|---|---|---|
references/reasoning-blueprint.md | Problem classification taxonomy, domain heuristics, common failure modes, and expert judgment patterns for this skill |
Security & Permissions
Network access: None direct — all external data access is mediated by host-provided MCP connector tools (HubSpot, CS platform, Slack, Linear). This skill makes no direct outbound HTTP calls. Filesystem scope: None — this skill does not read or write local files. All data is provided at runtime via parameters or MCP connector responses. Subprocess execution: None. Dynamic code execution: None — pseudocode in this skill represents the logic contract and is not executed at runtime. Data sensitivity: Inputs may contain confidential customer, deal, and operational data. Handle with RevOps-level confidentiality.
Trust & Verification
Input trust model: All user-provided parameters are treated as untrusted at intake. Numeric inputs are validated for plausible range before use in calculations. String inputs are not evaluated as code. Output trust model: All outputs are proposals or analytical inputs — no outputs constitute approved decisions, revenue commitments, or system actions without explicit human confirmation. Connector data: Data retrieved via MCP connectors is treated as read-only observed state. Timestamps and data-as-of labels are applied to all connector-sourced values per G6. Write-tier confirmation: Any proposed write to HubSpot, Linear, or Slack is surfaced as a draft requiring explicit user confirmation before execution.
Guardrails
- G9: No autonomous merges — always proposals
- G6: Data-as-of required
Security
- Security scanPassed, 100 of 100Pattern checks on the skill's files.
- Model reviewNot runA model review is scheduled for the next rescan.
Quality evaluation
- Task evaluationNot runNo evaluation yet. Run one in Skill Studio.
Source
- SKILL.md in the repositoryCheckingrev-ops/skills/duplicate-detection/SKILL.md
Popularity
- Repository stars
- 62
- Repository forks
- 21
- 7-day trend score
- 21
Stars and forks are for the whole GitHub repository, not this skill alone. Not refreshed yet.
Works with
Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.
- Claude Code
- Cursor
- GitHub Copilot
- Windsurf
- Codex
- Gemini CLI
- Cline
- Amp
- Roo Code
- Goose
- Continue
- Kilo Code
- Junie
- Trae
- OpenHands
- Qwen Code
- AI Agent
- Tabnine Chat
- Sourcegraph Cody
- Amazon Q
- Firebase Genkit
- Sweep
- Devin
- Phind
- Mentat
- Claude Desktop
- Aider
- GPT Pilot
- Plandex
- bolt.new
- v0
- Replit Agent
- Anse
- TypingMind
- BetterChatGPT
- LibreChat
- Warp AI
- Pieces
- Fig AI
Embed badge
[](https://verified-skill.com/skills/t0ddc3by/claude-for-customer-success/duplicate-detection)