Enrich records with AI-powered lookups and transforms

Look up company data, score leads, normalize fields, and validate emails in a single workflow. Batch support for bulk enrichment with webhook triggers.

Company LookupLead ScoringData NormalizationBatch Enrichment
import { Stack0 } from '@stack0/sdk'
const stack0 = new Stack0({ apiKey: process.env.STACK0_API_KEY })
// Enrich a lead with company data, scoring, and validation
const result = await stack0.workflows.run({
steps: [
{
id: 'lookup',
type: 'tool',
tool: 'data.companyLookup',
input: {
domain: '{{input.company.domain}}',
fields: ['industry', 'size', 'revenue', 'location', 'techStack'],
},
},
{
id: 'normalize',
type: 'llm',
model: 'gpt-4o-mini',
prompt: `Normalize this contact data. Fix formatting, standardize job titles, and fill missing fields where possible.
Contact: {{input.contact}}
Company: {{steps.lookup.output}}`,
outputSchema: {
name: 'string',
title: 'string',
seniority: '"executive" | "director" | "manager" | "individual"',
department: 'string',
email: 'string',
phone: 'string | null',
},
dependsOn: ['lookup'],
},
{
id: 'score',
type: 'llm',
model: 'gpt-4o-mini',
prompt: `Score this lead 1-100 based on fit with our ICP (B2B SaaS, 50-500 employees, North America).
Contact: {{steps.normalize.output}}
Company: {{steps.lookup.output}}`,
outputSchema: {
score: 'number',
reasons: 'string[]',
recommendation: '"hot" | "warm" | "cold"',
},
dependsOn: ['lookup', 'normalize'],
},
{
id: 'validate',
type: 'tool',
tool: 'data.validateEmail',
input: { email: '{{steps.normalize.output.email}}' },
dependsOn: ['normalize'],
},
],
input: {
contact: {
name: 'Jane Smith',
email: 'jane@acmecorp.com',
title: 'VP eng',
},
company: {
domain: 'acmecorp.com',
},
},
})
console.log(result.steps.score.output) // { score: 87, reasons: [...], recommendation: 'hot' }
console.log(result.steps.validate.output) // { valid: true, deliverable: true }

What's included

Company Data Lookup

Resolve domains to industry, size, revenue, tech stack, and funding data from public sources.

Lead Scoring

Score leads against your ICP with AI reasoning. Numeric scores with explanations and recommendations.

Data Normalization

Standardize job titles, departments, and contact fields. AI handles abbreviations and formatting inconsistencies.

Deduplication

Detect and merge duplicate records using fuzzy matching on names, emails, and company data.

Batch Enrichment

Submit up to 1,000 records per request. Parallel processing with results via webhook or polling.

Webhook Triggers

Automatically enrich new records when they arrive in your CRM or database via webhook.


Built for production

Company data lookup

Resolve a domain to industry, employee count, revenue, tech stack, and more. One API call replaces multiple data vendors.

AI-powered lead scoring

Score leads against your ICP using LLM reasoning. Get a numeric score, explanation, and hot/warm/cold recommendation.

Data normalization

Standardize job titles, fix formatting, and fill missing fields. AI handles messy real-world data gracefully.

Batch processing

Enrich thousands of records at once. Parallel execution with webhook delivery when results are ready.

TypeScript SDK

Typed inputs and outputs for every enrichment step. Schema validation catches issues before they reach your database.

Simple pricing

$0.001 per step execution. Enrich a full lead record with lookup, scoring, and validation for under a cent.


Common implementations

CRM Data Quality

Clean and enrich existing CRM records with missing company data, standardized titles, and lead scores.

Inbound Lead Qualification

Automatically score and enrich form submissions to prioritize high-value leads for the sales team.

List Cleaning

Validate emails, remove duplicates, and normalize data in marketing lists before campaign sends.

Account-Based Marketing

Enrich target account lists with firmographic data to personalize outreach and prioritize engagement.


FAQ

Frequently asked questions

Company lookups return industry, employee count, revenue range, headquarters location, tech stack, social profiles, funding history, and recent news. Not all fields are available for every company. Confidence scores indicate data freshness.

Yes. Submit up to 1,000 records per batch request. Records are processed in parallel and results are delivered via webhook or polling. Batch enrichment is ideal for CRM imports and list cleaning.

Company data is refreshed weekly from public sources. Tech stack detection runs monthly. Each field includes a lastUpdated timestamp so you can decide whether to use cached data or request a fresh lookup.

Lead scoring uses an LLM step that evaluates contacts against your ideal customer profile (ICP). You define the ICP criteria in the prompt. The model returns a score, reasons, and a recommendation. Scores are deterministic for the same input when using temperature 0.

Yes. Set up webhook triggers to run enrichment workflows when new records are created in your CRM or database. Webhooks accept standard JSON payloads and pass data directly to your workflow input.


Ready to build?

Get started in minutes.

Get Started