Everycontact.One record.
Epafi imports contacts from anywhere, hunts down every duplicate with ML precision, and enriches whatever survives. Your CRM — minus the mess.
CSV + vCard
Import formats
CSV · JSON · vCard
Export formats
Clerk + API keys
Authentication
Celery
Job processing
Built to killthe duplicate.
Match
Exact identifiers, normalized names, email, phone, company, and phonetic signals contribute to duplicate scoring. Proposed pairs carry a confidence score, and automatic merges are recorded.
POST /v1/matching/find-duplicates
{ "threshold": 0.85 }Import
Import CSV and vCard files, including Google Contacts and LinkedIn exports, or create contacts through the API. Preview and mapping steps let you confirm how source columns will be handled.
contacts.csv → mapped · 14 fields
google-contacts.csv → mapped · 12 fields
linkedin.csv → queued
Enrich
Run enrichment for selected contacts. Epafi uses the configured MillionVerifier or NinjaPear provider, applies plan limits, records provider evidence, and preserves fields you locked.
Relate
Link contacts to account-owned companies, organize them with tags and segments, and review their activity timeline.
Acme Corp ├─ J. Smith · CTO └─ M. Garcia · VP Eng
Watch itthink.
The review console: every duplicate, every signal, every confidence score — before anything merges.
Duplicate review
23 pairs pending
John Smith
john@company.com
+1 555-0123
J. Smith
jsmith@company.com
+1 555-0123
Maria Garcia
maria.g@email.com
+1 555-0456
Maria G.
mariag@email.com
+1 555-0456
1,247
Duplicates
892
Auto-merged
23
Pending
Match weights
Three steps.Zero drag.
Import everything
Point Epafi at a CSV, Google Contacts, LinkedIn — or push over the API. Field mapping is automatic.
Analyze & match
The engine scores every pair: fuzzy names, phonetics, emails, phones. Each match gets an auditable confidence.
Review & merge
Auto-merge above 95%, review the rest in one queue. One click turns a pile of near-records into one golden record.
# upload a CSV with an API key (imports:create) $ curl -H "X-API-Key: $EPAFI_KEY" \ -F file=@contacts.csv \ api.epafi.app/api/v1/imports/csv/upload → preview + auto-detected column mapping # confirm the mapping and run the import $ curl -H "X-API-Key: $EPAFI_KEY" --json @mapping.json \ api.epafi.app/api/v1/imports/csv/process → queued · track it at /imports/status/{id} # review duplicates in the app, then read clean records $ curl -H "X-API-Key: $EPAFI_KEY" \ api.epafi.app/api/v1/contacts
Full REST API + webhooks, if you’d rather not leave your editor.
Plugs intoyour stack.
Import from any source, enrich with leading providers, sync back to the tools you already run on.
“Every saved contact must have a name, an email address, or a phone number.
Contact identity invariant
Enforced by request validation, the contact service, and the database schema
“Contact, company, task, workflow, import, and export reads are scoped to their owner.”
Account boundary
Applied to web sessions and scoped API keys
“A merge stores a snapshot of the participating records before it changes them.”
Merge recovery
Used by the unmerge path
“Workflow actions are claimed, persisted, and guarded against duplicate execution.”
Durable automation
Backed by workflow execution records
Pay for clean.Nothing else.
For individuals and side projects.
- +100 contacts · 10 companies
- +5 imports / month
- +50 enrichment credits / month
- +1,000 API calls / month
For larger contact lists.
- +1,000 contacts · 50 companies
- +25 imports / month
- +500 enrichment credits / month
- +10,000 API calls / month
Includes the limits available during the trial.
- +10,000 contacts · 500 companies
- +100 imports / month
- +5,000 enrichment credits / month
- +100,000 API calls / month
For high-volume accounts.
- +50,000 contacts · 2,000 companies
- +500 imports / month
- +25,000 enrichment credits / month
- +500,000 API calls / month
Limits are configured as unlimited.
- +Unlimited contacts and companies
- +Unlimited imports
- +Unlimited enrichment credits
- +Unlimited API calls
No card to start. Cancel anytime. Your data exports clean — always.
Full comparison, VAT & billing FAQ