Enrichment Configuration
Fine-tune every aspect of the enrichment pipeline. Configure data sources, AI models, confidence thresholds, and processing behavior.
Configuration Options
Pass these options in your enrichment request to customize behavior:
| Option | Type | Default | Description |
|---|---|---|---|
sources | string[] | ["linkedin", "hunter", "perplexity", "tavily"] | Which data sources to query during enrichment |
require_linkedin | boolean | false | Fail enrichment if LinkedIn data is unavailable |
enable_auditor | boolean | true | Enable AI auditor to verify enrichment quality |
min_confidence_to_proceed | number | 0.5 | Minimum confidence score (0-1) to continue enrichment |
auto_proceed | boolean | true | Automatically proceed with CRM writeback after enrichment |
preflight_only | boolean | false | Only run preflight checks, don't execute enrichment |
enable_hubspot_writeback | boolean | true | Write enriched data back to HubSpot automatically |
Full Configuration Example
// Full configuration for enrichment request
const result = await abmdev.enrich({
// Input data
email: "[email protected]",
linkedin_url: "linkedin.com/in/janesmith",
// Source configuration
sources: ["linkedin", "hunter", "perplexity"],
require_linkedin: true,
// AI configuration
enable_auditor: true,
models: {
writer: {
provider: "anthropic",
model: "claude-sonnet-4-20250514"
},
auditor: {
provider: "anthropic",
model: "claude-3-5-haiku-20241022"
}
},
// Custom prompts (optional)
person_system_prompt: `You are enriching a B2B contact.
Focus on professional background, decision-making authority,
and technology interests. Be concise.`,
// Quality controls
min_confidence_to_proceed: 0.7,
auto_proceed: false, // Review before CRM writeback
// CRM integration
enable_hubspot_writeback: true,
hubspot_contact_id: "12345" // Optional: update specific contact
});AI Model Configuration
ABM.dev uses AI models for two key tasks during enrichment:
Writer Model
Synthesizes evidence from multiple sources into narrative fields like summaries, highlights, and outreach angles.
Auditor Model
Reviews synthesized output for accuracy, consistency, and quality. Catches hallucinations and improves reliability.
Available Models
Claude Sonnet 4
claude-sonnet-4-20250514Fast, high-quality synthesis for generating narrative fields and summaries
Claude Opus 4
claude-opus-4-20250514Highest quality output for complex synthesis tasks
Claude Haiku 3.5
claude-3-5-haiku-20241022Fast, efficient verification and quality checks
Model Selection Guidance
- High volume: Sonnet writer + Haiku auditor (default)
- Premium quality: Opus writer + Sonnet auditor
- Cost optimization: Haiku writer + no auditor
Source Configuration
Control which data sources are queried during enrichment:
// Use only specific sources
const result = await abmdev.enrich({
email: "[email protected]",
sources: ["linkedin", "hunter"] // Skip Perplexity and Tavily
});
// Require LinkedIn (fail if unavailable)
const result = await abmdev.enrich({
email: "[email protected]",
require_linkedin: true // Returns error if LinkedIn fails
});
// Company enrichment with web sources only
const result = await abmdev.enrich({
domain: "acme.com",
entity_type: "company",
sources: ["perplexity", "tavily"] // Skip LinkedIn for companies
});| Source | Best For | Notes |
|---|---|---|
| Person enrichment | Highest accuracy for job titles, history. Requires Browserbase. | |
| hunter | Email verification | Email deliverability, domain patterns. Included in all plans. |
| perplexity | Company research | AI-powered research for company intel, news, funding. |
| tavily | Web presence | Web search aggregation, social profiles, press mentions. |
Confidence Thresholds
Use confidence thresholds to control enrichment quality gates:
// Conservative: high confidence required
const result = await abmdev.enrich({
email: "[email protected]",
min_confidence_to_proceed: 0.85, // Only proceed if 85%+ confident
auto_proceed: true // Auto-write to CRM
});
// Review workflow: medium threshold, manual approval
const result = await abmdev.enrich({
email: "[email protected]",
min_confidence_to_proceed: 0.5, // Accept moderate confidence
auto_proceed: false // Require manual review
});
// Check result confidence
if (result.metadata.confidence_score >= 0.9) {
console.log("High confidence - safe for automation");
} else if (result.metadata.confidence_score >= 0.7) {
console.log("Good confidence - review recommended");
} else {
console.log("Low confidence - manual verification needed");
}Threshold Recommendations
- 0.85+: Safe for automated CRM updates
- 0.70+: Good for enrichment, consider review for critical fields
- 0.50+: Display only, human verification required
- <0.50: May indicate insufficient data sources
Custom System Prompts
Customize the AI synthesis behavior with custom system prompts:
// Sales-focused enrichment
const salesResult = await abmdev.enrich({
email: "[email protected]",
person_system_prompt: `You are enriching a B2B prospect for sales outreach.
Focus on:
- Buying signals and authority level
- Technology stack and current solutions
- Pain points relevant to our product
- Recent company changes or initiatives
Keep summaries action-oriented for sales reps.`
});
// Marketing-focused enrichment
const marketingResult = await abmdev.enrich({
domain: "acme.com",
entity_type: "company",
company_system_prompt: `You are researching a company for marketing segmentation.
Focus on:
- Industry vertical and company size
- Growth trajectory and funding status
- Content topics and channels they engage with
- Competitive landscape position
Output should support personalized campaign targeting.`
});Prompt Best Practices
- Be specific about the use case and audience
- List the key attributes you want emphasized
- Specify output format preferences (concise, detailed, bullet points)
- Include any domain-specific terminology to use or avoid
Preflight Mode
Test enrichment configuration without consuming credits:
// Run preflight checks only
const preflight = await abmdev.enrich({
email: "[email protected]",
preflight_only: true // Don't execute, just validate
});
// Preflight returns:
// - Source availability (which sources can provide data)
// - Portfolio score (predicted enrichment quality)
// - Estimated fields (what data will be populated)
// - Configuration validation (any issues with your config)
console.log(preflight.preflight);
// {
// portfolio_score: 0.85,
// available_sources: ["linkedin", "hunter", "perplexity"],
// estimated_fields: 34,
// warnings: [],
// ready: true
// }
// If ready, proceed with actual enrichment
if (preflight.preflight.ready) {
const result = await abmdev.enrich({
email: "[email protected]",
preflight_only: false
});
}