GTM Enrichment Platform
One-off enrichment scripts, rebuilt in three weeks as a deployed web app that is now the system of record for a 28,811-account prospect universe.
The problem
The client, a venture-backed healthcare marketplace, ran its prospecting on 14 one-off scripts. Each solved one campaign's problem: screening a list, scoring ICP fit, tiering personas, checking deliverability, deduping across lists. None of them shared code, none of them had tests, and enrichment spend had no guardrails. One ungated pipeline node once burned most of a campaign budget before anyone noticed.
First, the tested foundation
- One tested package replacing all 14 scripts: screening, ICP scoring, persona tiering, deliverability checks, cross-list dedup
- 229 tests, including a golden-CSV harness that verifies output byte for byte against known-good runs
- Pluggable provider abstraction: Apollo, ZeroBounce, and FullEnrich behind one interface, so swapping or adding a data vendor does not touch pipeline code
- Spend-safety spine: authoring-time gating (a paid step cannot be wired in without a gate), run-time preflight (the gate is replayed over live inputs before any spend), forecast ceilings (a projected overrun is un-approvable), and human approval on every paid run
Then the platform, in three weeks
The package became a deployed, Postgres-backed web app: private, on managed infrastructure, behind review-gated CI. It is now the system of record for the client's entire outbound prospect universe.
- 28,811 accounts and 1,099 contacts held as one deduped universe, consolidated from three separate source lists
- Upload, dedup, domain resolution, review, and export as a real web workflow rather than scripts a single author could run
- Universe dedup as a pre-spend gate: nothing reaches a paid provider until it is checked against the full account universe
- Durable domain resolution (company name and state to website) over a credit-free ladder, so paid lookups are the last resort rather than the first
- Contacts held with PII controls: retention, encryption, and access sign-off; contact import resolves and tags existing accounts instead of creating duplicates
- CRM-exact CSV export with a dedup worksheet, sized to load cleanly into Salesforce
The result that proves it works
The most recent batch run through the platform added 0 net-new accounts and 5,063 net-new contacts. That is the system doing its job: the dedup gate recognized every account already in the universe and refused to spend on them, so enrichment effort went only to the net-new contact layer. The cost control is the product.
What is next
Remaining work is volume rather than architecture: resolving the last several thousand accounts that arrived without domains, and running the staged enrichment batches at scale. Claims here stay scoped to what shipped.
Also for this client
A GTM AI platform that ingests deal data from Salesforce, Slack, DocuSign, email, and meeting transcripts, applies the qualification rubric via Claude with structured output, and powers a deal-pipeline dashboard and a Slack deal agent.
Stack
TypeScript, PostgreSQL, Claude API with structured outputs, provider APIs (Apollo, ZeroBounce, FullEnrich), OpenTelemetry. Deployed behind private auth on managed Postgres, with review-gated CI (tests and automated review required to merge).