ZAPINNER

// 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

  1. 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.

  2. 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.

  3. Duplicates are removed

    Matching identifies duplicate and near-duplicate contacts so a single clean record survives instead of three conflicting ones.

  4. 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

bash
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

text
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."
Example dataset

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.

Send Zapinner messy data. Get clean records back.

Repair Data Free