Enrichment waterfall — stops at the first confident answer
Heads of Talent at 200–1,000 person US companies hiring recruiters
| Person | Title | Company | Location | Tenure | |
|---|---|---|---|---|---|
| Amara Okafor | Head of Talent Acquisition | Patagonia | Ventura, US | a.okafor@patagonia.com | 3 yr 2 mo |
| João Almeida | Head of People | Grupo Piracanjuba | Bela Vista, BR | j.almeida@piracanjuba.com.br | 5 yr 3 mo |
| Elena Vasquez | Senior Recruiting Manager | AI at Meta | Menlo Park, US | e.vasquez@ai.meta.com | 2 yr 0 mo |
One system, end to end
An index we own, a twelve-provider waterfall behind it, and a sequencer on the end. The search that finds the account is the thing that sends the email.
90-second walkthrough — search, resolve, send
Every filter tells you how much of the corpus actually has that field before it quietly removes anyone. Then twelve providers fill the gaps behind one call, and the record keeps a note of which one answered.
The list becomes a sequence in one action — no export, no re-upload — and sending, warmup and replies cost no credits. The same audience pushes to paid, so air cover and outbound point at one list instead of two.
One record from first touch to closed. The thing you searched for, enriched and sequenced is the same object your pipeline reports on.
Endpoints the general-purpose vendors don't expose, callable from your own code or directly by an agent — the whole engine without the interface.
Enrichment waterfall — stops at the first confident answer
POST /resolve/email { "email": "j.almeida@piracanjuba.com.br" } 200 { "name": "João Almeida", "title": "Head of People", "company": "Grupo Piracanjuba" }
Benchmarks
Best-in-class accuracy for every search vertical, and across the benchmarks that actually stress a retrieval engine.
Accuracy (%)
Reverse lookup
Partial match
Live profile
The index is queryable as an API and as an MCP server, with endpoints the general-purpose data vendors don't expose — reverse lookup, partial-match resolution, and live profile fetches.
Enriching accounts that sign up with a personal address, and filling in work history behind old CRM records.
A name and a company, a domain and a title — enough fragments to identify a record without an exact key.
Specialties, technology, headcount bands and hiring posture, combined in one query.
Title, seniority, tenure and skills together, with coverage shown per field.
One MCP call fans out across the index, the waterfall and the signal scrapers, and returns rows.
Validation runs the same providers as enrichment, so a verified address is verified the same way twice.
REQUEST curl https://api.datasource.io/v1/email-to-person \ --request POST \ --header 'Content-Type: application/json' \ --data '{ "apiKey": "YOUR_API_KEY", "email": "john@company.com" }' RESPONSE { "data": [ { "name": "John Smith", "headline": "Software Engineer at Tech Corp", "locality": "San Francisco, CA", "current_job": { "company_name": "Tech Corp", "title": "Software Engineer", "is_current": true, "start_date": "2022-01", "seniority": "Mid-Senior level" }, "provider": "waterfall:step-2", "credits_charged": 1 } ] }
Two places, and the difference matters. There is a licensed core index of people and company records that we hold and refresh on a schedule — that's what search runs against, and querying it costs nothing. On top sits a live waterfall across twelve providers, used only when you ask for something the index doesn't hold. Every enriched value keeps the provider that produced it.
Enrichment tools own no data of their own — they orchestrate providers you bring, and you build the table before you get an answer. We kept the good part: the waterfall, the provenance, the per-row control. What we add underneath is an index, so you can find the people in the first place, and a sequencer on top, so you don't hand off to a fourth tool to send.
A database gives you coverage and one fixed opinion about how each field gets resolved. When its answer is missing or wrong you have no second option and usually no way to see where the value came from. We run a multi-provider waterfall over our own index instead, bill per resolved row, and publish the coverage of every field before you filter on it.
Yes — connect existing mailboxes, or buy domains and mailboxes inside the app and have them warming the same day. Sending windows, throttles and warmup are configured per mailbox, because that's the level deliverability actually operates at.
Records are business-contact data, sourced under licence, with suppression and deletion handled at the org level. Opt-outs propagate across lists, sequences and the CRM at once rather than per-tool.
Start free with 500 credits. Build an audience, resolve a few contacts, and watch the whole path work before you pay for anything.