B2B enrichment
How do I get company and contact data with citations and confidence scores?
A great rep once knew every account. Now your agents do.
But only if the data holds up. An agent acting on a fabricated job title or a stale domain at machine speed doesn't just miss — it scales the mistake across your entire target list before anyone notices.
Here's what the request/response cycle actually looks like when enrichment is done right: one seed, structured firmographics back, and every field carrying a confidence score plus a traceable source.
What does a confidence score actually mean in enrichment data?
Most enrichment APIs return a value. The good ones tell you how sure they are.
EnrichForge makes this concrete. A call to /v1/company/by-domain?domain=acme.com returns not just { "name": "React", "confidence": 0.92 } but the evidence behind it — so you know whether 0.92 came from a live crawl, a third-party signal, or an inferred match. That's the difference between data your agent can act on and data your agent has to second-guess.
Confidence scores aren't decoration. They're the decision boundary. Set a threshold and your agent promotes high-confidence fields into the outreach payload automatically. Anything below that threshold triggers a human review queue or a secondary enrichment pass. No silent fallbacks. No fabricated facts.
CUFinder's Company Enrichment API publishes 95% confidence scores across its company profiles — industry, revenue, headcount, tech stack — returned from a single domain, name, or LinkedIn URL. That's the bar worth targeting: not just a filled field, but a field you can audit.
What inputs does the API actually need?
As little as one.
The best enrichment APIs are designed for messy, real-world seeds. TAMI's data enrichment API accepts a website, an email, or a name — "even a messy one" — and matches 96% of companies by name, 100% by website, and 98% by LinkedIn handle. You only pay when it finds a result.
That matters in an agent loop. Your agent may be working from a scraped list, an inbound form submission, or a LinkedIn profile URL. It shouldn't need a clean CRM record to start. It should be able to seed with whatever it has and receive structured intelligence back.
Minimal inputs worth supporting:
- Domain —
acme.com - Email —
[email protected] - Company name —
Acme Corp(fuzzy match) - LinkedIn URL —
linkedin.com/company/acme-corp
One call. The API handles deduplication, normalization, and source reconciliation on the other side.
What does the response actually contain?
Structured firmographics. Per-field confidence scores. Source citations.
Here's a representative response shape — the kind Reverse Contact describes as "confidence-first, with transparent metadata so you know how sure we are":
{
"company": {
"name": "Acme Corp",
"domain": "acme.com",
"industry_tags": ["SaaS", "DevTools"],
"employee_range": "50-200",
"hq_city": "San Francisco",
"hq_country": "US",
"linkedin_url": "linkedin.com/company/acme-corp",
"funding_stage": "Series A",
"annual_revenue_estimate": "$5M-$10M"
},
"tech_stack": [
{ "name": "React", "confidence": 0.92, "source": "crawl:builtwith" },
{ "name": "Stripe", "confidence": 0.87, "source": "crawl:wappalyzer" },
{ "name": "Salesforce", "confidence": 0.74, "source": "inferred:job_postings" }
],
"contacts": [
{
"name": "Jane Doe",
"title": "Head of Growth",
"linkedin_url": "linkedin.com/in/janedoe",
"email": "[email protected]",
"email_confidence": 0.91,
"title_confidence": 0.88,
"source": "linkedin:profile_crawl"
}
],
"gtm_attributes": {
"buying_signals": ["recent_hire:VP_Sales", "job_posting:SDR"],
"icp_fit_score": 0.83,
"last_enriched": "2025-07-10T14:22:00Z"
}
}
Every field carries a source tag. Your agent knows whether the Salesforce entry came from a live crawl or a job-posting inference — and can weight its personalization accordingly. Mention the confirmed tech stack in outreach. Hold back on the inferred one until confidence clears the threshold.
No black-box data. No mystery provenance.
Crustdata's company identification endpoint takes the same approach at the entity-resolution layer: match a company by name, domain, profile URL, or internal ID, and receive results ranked by confidence score before enrichment even begins. Entity resolution first, enrichment second. The confidence layer runs through the entire pipeline.
Why does provenance matter more in an agent loop than in a human workflow?
A human pauses. An agent doesn't.
When a sales rep gets a bad data point, they notice something feels off — wrong industry, title that doesn't match the company size, a phone number that rings nowhere. They skip it or check. That friction is actually useful.
An autonomous agent has no such pause. It reads the field, meets the confidence threshold, and fires the action — personalized email, LinkedIn connection request, direct mail trigger, CRM write. At scale. Before anyone has reviewed a single record.
This is why enrichment built for agent-first consumption looks different from enrichment built for dashboard-watching. Every field in the response needs to be structured for programmatic decision-making: act if confidence ≥ threshold, queue for review if not, log the source for audit if the outreach later gets questioned.
The alternative — stitching together multiple enrichment tools with no unified confidence layer — means your agent is reconciling contradictory signals silently. One provider says the company has two hundred employees. Another says fifty. The agent picks one. You never know which, or why.
One call, ten data sources behind it. Aggregated, deduped, reconciled. That's the architecture worth building on.
How do citations make enrichment auditable?
Citations answer the question every compliance-conscious team eventually asks: where did this come from?
Not just for legal reasons. For operational ones. When a personalized outreach references a specific detail — a recent funding round, a technology the company uses, a hiring signal — and that detail is wrong, you need to trace it back. Which provider surfaced it? When was it last verified? What was the confidence score at send time?
Without citations, that trace doesn't exist. You have a field value and no history.
With citations, your agent can:
- Log the source and timestamp at enrichment time
- Flag records where the primary source is older than expected
- Trigger re-enrichment before a high-value send
- Surface the citation in the CRM note so the rep who follows up has context
Deterministic, auditable enrichment isn't a nice-to-have. It's what separates a GTM motion that compounds from one that quietly degrades.
What fields matter most for ABM and personalized outreach?
Not all enrichment fields carry equal weight in a GTM context. The ones that drive personalization at scale:
Company-level
- Industry tags and sub-vertical
- Employee count and growth rate
- Funding stage and most recent round
- Tech stack (confirmed, not inferred)
- Hiring signals — open roles, recent senior hires
- HQ location and subsidiary structure
Contact-level
- Verified title and seniority
- LinkedIn URL (canonical identity)
- Verified work email with confidence score
- Tenure at current company
- Past companies (for relationship mapping)
GTM attributes
- ICP fit score
- Buying signals — job postings, funding events, tech additions
- Last enrichment timestamp
The ICP fit score and buying signals are where the data layer earns its place in an agent stack. They're not raw data points — they're pre-computed GTM intelligence your agent can route on directly. High ICP fit plus a recent VP Sales hire equals immediate outreach queue. Low fit score equals suppression. The agent decides. No human in the loop for the easy cases.
The build worth shipping
Personalization, at scale.
That's the goal. Not a dashboard full of enriched records nobody acts on. A live agent loop that seeds with a domain, receives structured intelligence with confidence scores and citations, applies a threshold-based decision layer, and triggers personalized outreach — email, LinkedIn, or a physical send that breaks through inbox noise — without waiting for a human to approve each record.
The data infrastructure to do that exists. One API, citations on every field, confidence scores your agent can route on programmatically.
Try abm.dev — the enrichment API for AI agents. The playground is free. Launch credits with the code LAUNCHCODES.
Stuart McLeod · Co-founder, abm.dev