// Lead repair
Turn messy lead lists into CRM-ready records.
Send Zapinner a messy export of leads. Get back standardized, deduplicated records your CRM and automation can actually use.
Who this is for
- RevOps and sales-ops teams who own CRM data hygiene
- Growth and demand-gen teams importing event and webinar lists
- Agencies onboarding client lead lists from mixed sources
- Developers wiring form and vendor data into a CRM or warehouse
The problem
Lead lists arrive from forms, events, spreadsheets, and vendors — full of inconsistent casing, malformed emails, unformatted phone numbers, and duplicates. Pushed straight into a CRM, they create duplicate contacts, broken automations, and wasted rep time.
Where it goes wrong
Badge-scanner and event exports
Conference capture tools export names in ALL CAPS, emails with trailing spaces, and phone numbers in whatever the attendee typed. Imported as-is they create duplicate contacts and undeliverable emails that quietly suppress your follow-up sequence.
Vendor and list-buy files
Purchased lists arrive with inconsistent column names (Company vs. Account vs. Org), partial records, and the same person listed twice under slightly different spellings. Deduping after import means every downstream system already saw the duplicates.
Free-text web forms
Without inline validation, users submit typo domains (gmial.com), fake numbers, and copy-paste artifacts. The record is written, the confirmation email bounces, and the lead is gone with no error in your funnel dashboard.
How it works
Send your messy leads
POST a batch of raw lead records — from a form, CSV, or vendor export — to the Repair endpoint. No pre-cleaning required.
Zapinner repairs each record
Names are cased, emails normalized and validated, phone numbers formatted to E.164, and empty or junk fields flagged — deterministically, with the same input always producing the same output.
Duplicates are removed
Matching identifies duplicate and near-duplicate contacts so a single clean record survives instead of three conflicting ones.
CRM-ready output comes back
You get standardized records plus a per-field summary of what changed, ready to write straight into your CRM or automation.
How Zapinner solves it
One call, deterministic by default
Repair is a convenience layer over Zapinner's deterministic engines — normalize, dedupe, and anomaly detection. You send raw records and get back clean records plus a per-change audit trail. The same input always produces the same output, so a record repaired today repairs identically next week.
Field reconciliation, then normalization
Repair first reconciles equivalent field names (Company Name, company, Account) into canonical fields, infers a typed schema (email, phone, currency, date), then normalizes values: names cased, emails trimmed and lowercased, phones formatted to E.164. Every change comes back in the changes array with from, to, reason, and confidence.
High-confidence merges only
Duplicate detection merges only high-confidence matches; ambiguous pairs are surfaced in review_required rather than merged silently, so you never lose a real contact to an overeager merge.
Repair a batch of raw leads
curl -X POST https://zapinner.com/api/v1/repair \
-H "Authorization: Bearer $ZAPINNER_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"records": [
{ "name": "MIKE PERKINS ", "email": "Mike@Example.COM ", "phone": "(704) 555-1234" }
],
"options": { "normalize": true, "dedupe": true, "merge_duplicates": true }
}'
# data: [{ "name": "Mike Perkins", "email": "mike@example.com", "phone": "+17045551234" }]
# summary: { records_received: 1, issues_fixed: 3, duplicates_merged: 0 }Repair from an AI agent over MCP
User: "Clean this lead list and drop duplicates before I import it."
Agent: calls zapinner.repair { records: [...], options: { dedupe: true } }
-> clean records + a summary of every change
Agent: "Repaired 1,000 leads: 312 formatting fixes, 96 duplicates merged.
Here's the CRM-ready file."Event lead list, cleaned for import
A representative batch of trade-show leads exported from a badge scanner, run through Repair before import. Numbers illustrate the kind of output Repair produces; swap in real results once available.
Before
{
"name": "MIKE PERKINS ",
"email": "Mike@Example.COM ",
"phone": "(704) 555-1234"
}After
{
"name": "Mike Perkins",
"email": "mike@example.com",
"phone": "+17045551234"
}- Records processed
- 1,000
- Problems found
- Inconsistent name casing and stray whitespace
- Mixed-case and untrimmed email addresses
- Phone numbers in non-standard local formats
- Duplicate contacts from repeat badge scans
Repairs made
- Names normalized to consistent casing
- Emails lowercased, trimmed, and validated
- Phone numbers formatted to E.164
- Duplicate contacts collapsed to one surviving record
Outcome
A CRM-ready file with standardized fields and duplicates removed, plus a per-field summary of every change for review.
Reliability & security
Auditable, never destructive
Anomalous records are flagged, never deleted, and every value change is returned with a reason and confidence. Use options.dry_run to preview a repair without changing the returned dataset.
Metered per input record
Repair is billed once per input record regardless of how many internal operations run — normalize, dedupe, and anomaly work is never billed separately. Requests that fail validation are never charged.
The outcome
Cleaner pipelines, fewer duplicate contacts, and automations that fire on data they can trust.
Frequently asked
- Do I need to pre-clean my data before sending it?
- No. Repair is built for messy input — inconsistent field names, mixed casing, malformed values. Send it raw and Repair reconciles, normalizes, and returns a per-field audit of what it changed.
- Will it merge two real people by mistake?
- Only high-confidence duplicates are merged. Ambiguous matches are surfaced in review_required for a human, and you can raise the threshold with strict mode.
- Is the repair reproducible?
- Yes. The core repair operations are deterministic — the same input yields the same output every time — so a record repaired today repairs identically later.
- How is it billed?
- One credit per input record, no matter how many internal operations run. Failed-validation requests are never charged.
