← All data workflows
COMPANY ENRICHMENT · WORKFLOW GUIDE

Turn supplied domains into reviewable CRM company records

ProxyLane can scope a pilot to enrich company records from domains you supply, with a source URL and observation time attached to each proposed record. A human reviews feasibility, scope, price and acceptance criteria before any work or purchase terms are agreed.

Workflow at a glance

  1. Supply the source list

    Share the domains, geography, required fields, refresh interval, expected volume and output format you want assessed

  2. Review evidence and ambiguity

    Check record sources, parent or subsidiary relationships, and records that should remain null or enter a review queue

  3. Accept the output

    Agree the acceptance worksheet; if the pilot is feasible, the scoped output format and exception list can then be defined for CRM review

SYNTHETIC SCHEMA EXAMPLE

Sample data

The downloadable synthetic sample shows one accepted domain record and one record held for review because the organization relationship is ambiguous. These fictional records demonstrate the format, not measured service output.

{
    "input_domain": "example.com",
    "company_name": "Example Harbor Labs",
    "source_url": "https://example.com/company",
    "observed_at": "2026-09-17T00:00:00Z",
    "field_status": "accepted"
}

Who this fits

This is for a RevOps team that already has company domains and needs a reviewable enrichment file before CRM updates, or for a builder testing a domain-to-record workflow. It fits teams that care about record-level provenance and want uncertain parent, subsidiary or trading-name relationships kept visible.

It does not fit a request for a ready-made customer dataset, a guaranteed coverage percentage, guessed headcounts, contact emails, or a bulk CRM overwrite without review. It is also not a replacement for your CRM's matching policy. Unobserved fields stay null; a plausible value is not evidence.

What the pilot proposes

The current public offer is a pilot scoping conversation and illustrative downloads. No managed service or delivery result is being claimed. Select Request access to open a draft addressed to [email protected], then review it with your vertical, source list, required fields, geography, refresh interval, output format, expected volume and acceptance rules. Opening the button sends nothing; ProxyLane confirms feasibility, scope, price and acceptance criteria before work begins.

Field Proposed rule Acceptance check
input_domain Preserve the supplied domain exactly Every output row maps to one supplied domain
company_name Include only a name supported by the cited source Name is readable at source_url and ambiguity is flagged
source_url Keep the public page supporting the proposed record URL is present for each non-null record
observed_at Record when the observation was made Timestamp is present and explained as an observation time
field_status Use accepted, review, or unknown Only accepted rows may be proposed for CRM overwrite

The sample uses example.com and example.org with fictional names. It is a synthetic schema example, not measured output or a source verification. The example.org row remains in review because its name could describe a subsidiary or parent relationship; it does not assert either one.

Try the sample locally

Download /use-cases/company-enrichment/sample.json, save it beside this short script as sample.json, and run it with Python. The script checks completeness, timestamps and the synthetic example hosts, then routes incomplete records to review.

import json
from datetime import datetime
from pathlib import Path
from urllib.parse import urlparse

data = json.loads(Path("sample.json").read_text(encoding="utf8"))
assert data.get("sample_type") == "synthetic"
records = data.get("records", [])
assert records, "sample must contain records"

required = {"input_domain", "company_name", "source_url", "observed_at", "field_status"}
accepted = []
for record in records:
    issues = [f"missing {field}" for field in required if not record.get(field)]
    try:
        timestamp = datetime.fromisoformat(str(record.get("observed_at", "")).replace("Z", "+00:00"))
        if timestamp.tzinfo is None:
            issues.append("observed_at needs a timezone")
    except ValueError:
        issues.append("observed_at is not an ISO timestamp")
    parsed = urlparse(str(record.get("source_url", "")))
    if parsed.scheme != "https" or parsed.hostname not in {"example.com", "example.org"}:
        issues.append("source_url is outside the synthetic example hosts")
    if record.get("field_status") not in {"accepted", "review", "unknown"}:
        issues.append("field_status is invalid")
    if issues or record.get("field_status") != "accepted":
        print("review required:", record.get("input_domain", "(missing domain)"), issues)
    else:
        accepted.append(record)

print(f"{len(accepted)} record(s) eligible for proposed review, {len(records) - len(accepted)} held back")

This validates the local synthetic schema only. It does not establish that a company exists, verify a source page, or call a ProxyLane API.

Data requirements and economics

Before delivery, agree the exact domain list, required fields, geography, refresh interval, expected volume, output format, source rules and acceptance worksheet. A useful pilot output is a file containing the proposed fields above, record-level source URLs and observation times, plus a review queue for ambiguous relationships and unknown values. CRM overwrite remains your team's decision.

The economic case can be stated without inventing a result: pilot value = (records accepted for review × value of one reviewed record) − pilot cost. Supply your own record value and acceptance threshold; ProxyLane should not fill them with a benchmark it has not verified.

Questions buyers usually ask

Can you guarantee every domain?

The pilot does not guarantee every domain. It can define what counts as an accepted record and how unknown or ambiguous records are returned.

Will this guess missing company details?

A field without supporting evidence stays null or enters review. Headcount and contact emails are outside this proposed field set.

Can it write directly into our CRM?

The proposed output supports review before overwrite. Direct write access, permissions and any integration behavior must be scoped separately and agreed before work.

What happens next?

Select Request access to open a reviewable email draft. Include the source list plus the fields, geography, refresh interval, output format, expected volume and acceptance rules.

Request access

Tell us which sources and fields you need, and how often the data should refresh. We’ll confirm feasibility, scope, pricing and acceptance criteria with you.

Request access ↗

Opens an email draft to [email protected] for you to review and send.

Keep reading

Give your research agent source-linked records it can check

Scope source-linked retrieval records for research and RAG agents with explicit fields, review rules, and a synthetic local sample

Read guide →

Compare competitor prices and stock with the fields your repricing review needs

Define a careful e-commerce monitoring pilot for competitor prices and stock, with variant matching, region-aware fields, acceptance rules and a synthetic local sample.

Read guide →

Find reviewable professional profiles from defined public evidence

Scope a people sourcing pilot that returns public professional evidence with dates and an explicit identity review queue

Read guide →