Broken enrichment
Enrichment jobs fail or waste credits when the domain is missing, stale, or copied from the wrong brand.
Backfill and standardize missing company domains across Salesforce, HubSpot, and internal cleanup workflows with confidence-scored results and explainable match reasons.
CRM cleanup snapshot
Before and after one API run
Before
Broken records(empty)
acme.co
(empty)
After
Verified writesstripe.com
acme.com
notion.so
// POST /api/prospecting/company
{"company_name":"Stripe","additional_context":"US payments infrastructure"} => {"domain":"stripe.com","confidence":95,"is_live":true,"found":true}
A blank or incorrect website field is not cosmetic. It weakens enrichment, routing, dedupe, and reporting everywhere company identity is used as a key.
Enrichment jobs fail or waste credits when the domain is missing, stale, or copied from the wrong brand.
The same company forks into multiple records when domain logic cannot normalize parent, brand, or legal-name variants.
Lead assignment and ownership rules drift when company identity is derived from free text instead of a verified domain.
Operational guidance
The API should not only fix today's empty fields. It should sit in the path of future record creation so the CRM stops drifting back into the same state.
Use the same resolution layer for real-time record hygiene and bulk historical backfills.
Trigger from Salesforce Flow, HubSpot workflow, CSV import, or an internal batch job.
Return the best domain candidate, confidence score, and match reasons in one response.
Auto-write high-confidence matches and queue ambiguous rows for review before they hit the CRM.
Enrichment, routing, dedupe, and reporting all run on a stronger account identity key.
Keep the implementation surface small: one request, stable fields, and confidence-based write logic.
POST /api/prospecting/company
Requestcurl -X POST https://prospecting.elvesora.com/api/prospecting/company \ -H "Authorization: Bearer $ELVESORA_API_KEY" \ -H "Accept: application/json" \ -H "Content-Type: application/json" \ -d '{ "company_name": "Stripe", "additional_context": "US payments infrastructure company" }'
200 OK application/json
Response{
"success": true,
"message": "Company lookup completed successfully",
"company_name": "Stripe",
"normalized_company_name": "stripe",
"domain": "stripe.com",
"confidence": 95,
"is_live": true,
"reasons": [
"Official brand match",
"Root domain resolves to the company website"
],
"lower_reasons": [],
"found": true,
"remaining": 99,
"limit": 100
}
domain
confidence
is_live
reasons / lower_reasons
Use a threshold such as 85 when the target field is empty or clearly invalid.
Preserve the existing CRM value when the match is uncertain and route the row to a cleanup queue.
Write reasons and lower_reasons into notes, logs, or an audit field so ops teams can trace why a domain changed.
The API page should help implementation teams move from idea to deployment without a sales step.
Resolve domains on Account or Lead create, update, or import before enrichment and assignment logic runs.
Populate the company domain property and trigger downstream cleanup or enrichment from one response.
Backfill historical records from CSVs, dbt models, or internal data pipelines without changing the response contract.
Use this page when implementation is the blocker. The linked product and use-case pages give the surrounding workflow context.
Business-facing positioning for RevOps teams cleaning incomplete account records.
Open CRM cleanup pageCore product surface for direct company-to-domain resolution, pricing, and capabilities.
Explore productSee how domain resolution, enrichment, and validation fit together in one workflow.
View use caseGenerate a key, run a test request, and ship the cleanup job into Salesforce, HubSpot, or your internal data pipeline.
Need the business-facing overview first? Open the CRM cleanup solution