Awesome-omni-skill data-governance-enrichment
Enrich CRM data: tools, waterfall approach, automation, quality control. Use when designing or improving data enrichment in rev ops.
install
source · Clone the upstream repo
git clone https://github.com/diegosouzapw/awesome-omni-skill
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/diegosouzapw/awesome-omni-skill "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/data-ai/data-governance-enrichment" ~/.claude/skills/diegosouzapw-awesome-omni-skill-data-governance-enrichment-53aba1 && rm -rf "$T"
manifest:
skills/data-ai/data-governance-enrichment/SKILL.mdsource content
Data Governance — Enrichment Strategies
How to enrich CRM data: tools, waterfall approach, automation, and quality control.
Why Enrichment Matters
B2B data decays at 2.1% per month (22.5% annually). Without enrichment:
- Job titles are 50-65% outdated within a year
- Email addresses decay 37% annually
- Phone numbers decay 43% annually
Enrichment keeps your CRM current and your outreach effective.
Enrichment Hierarchy
Not all enrichment sources are equal. Prioritize by accuracy:
| Source | Accuracy | Coverage | Cost | Best For |
|---|---|---|---|---|
| Manual research | 95%+ | Low | High (time) | High-value accounts, executives |
| LinkedIn Sales Navigator | 90%+ | High | $$$ | Job titles, company info |
| Clay | 85-90% | High | $$ | Bulk enrichment, waterfall approach |
| ZoomInfo | 80-85% | Very High | $$$$ | Enterprise, comprehensive data |
| Apollo | 75-80% | High | $ | Cost-effective bulk enrichment |
| Clearbit | 80-85% | Medium | $$$ | Tech stack, firmographics |
| Lusha | 75-85% | Medium | $$ | Phone numbers, emails |
| Hunter | 70-75% | Medium | $ | Email finding only |
Waterfall Enrichment Strategy
Don't rely on one source. Use a waterfall approach where each step fills gaps from the previous:
Step 1: Check existing CRM data (free) ↓ If missing fields Step 2: Clay enrichment (uses multiple sources) ↓ If still missing Step 3: ZoomInfo/Apollo lookup ↓ If still missing Step 4: LinkedIn Sales Navigator ↓ If still missing Step 5: Manual research ↓ If still missing Step 6: Flag for human verification
Clay Waterfall Example
Clay Column Configuration: 1. Find Email (Waterfall) → Apollo → ZoomInfo → Lusha → Hunter → Takes first valid result 2. Find Phone (Waterfall) → ZoomInfo → Apollo → Lusha → Takes first valid result 3. Enrich Company (Waterfall) → Clearbit → ZoomInfo → Apollo → Takes first valid result 4. Find LinkedIn URL → Apollo → ZoomInfo → Validate with LinkedIn profile lookup
Enrichment Triggers
Real-Time Enrichment
| Trigger | Fields to Enrich | Priority |
|---|---|---|
| New lead created | Email verification, phone, job title, company size, industry | High — do immediately |
| Lead becomes MQL | Full firmographics, tech stack, LinkedIn URL | High — before sales touches |
| Deal created | Decision-makers, org chart, recent news | Medium |
| Form submission | Verify and complete missing fields | High |
| Website visit (known) | Refresh stale data if >90 days old | Medium |
Batch Enrichment
| Trigger | Scope | Frequency |
|---|---|---|
| Scheduled refresh | Active contacts/companies | Weekly/Monthly |
| Before campaign | Email verification, phone validation | Before each campaign |
| Quarterly refresh | Job title verification, company size update | Quarterly |
| Annual audit | Full database enrichment | Annually |
Enrichment by Field Type
Contact-Level Enrichment
| Field | Enrichment Source | Frequency |
|---|---|---|
| ZoomInfo, Apollo, Hunter | On creation + verify before campaigns | |
| Phone | ZoomInfo, Lusha, Apollo | On creation + verify before call campaigns |
| Job Title | LinkedIn, ZoomInfo, Apollo | On creation + every 6 months |
| LinkedIn URL | Apollo, ZoomInfo | On creation only |
| Personal Bio | LinkedIn Sales Navigator | For high-value contacts |
Company-Level Enrichment
| Field | Enrichment Source | Frequency |
|---|---|---|
| Industry | Clearbit, ZoomInfo | On creation + annually |
| Employee Count | ZoomInfo, Clearbit, Apollo | On creation + annually |
| Revenue | ZoomInfo, Clearbit | On creation + annually |
| Tech Stack | BuiltWith, Clearbit, Wappalyzer | On creation + every 6 months |
| Funding Info | Crunchbase, PitchBook | On creation + quarterly |
| News/Signals | Bombora, G2, News APIs | Real-time or weekly |
HubSpot Enrichment Configuration
Workflow: Auto-Enrich New Leads
Trigger: Contact created with Email filled Actions: 1. Delay 5 minutes (allow HubSpot native enrichment) 2. Branch: If Company Name blank → Use Clay webhook to find company from email domain → Update Company Name, Industry, Employee Count 3. Branch: If Phone blank → Use Clay webhook to find phone → Update Phone property 4. Branch: If Job Title blank → Use Clay webhook to find title → Update Job Title and Seniority Level 5. Set "Enrichment Status" = "Completed" 6. Set "Enrichment Date" = Today
Workflow: Pre-Campaign Enrichment
Trigger: Added to list "Campaign - [Name] - Outreach" Actions: 1. Branch: If "Email Verified" != "Valid" → Use NeverBounce webhook to verify → Update "Email Verified" status 2. Branch: If "Last Enriched" > 90 days ago → Trigger full enrichment workflow → Update all stale fields 3. Branch: If "Email Verified" = "Invalid" → Remove from list → Add to "Bad Emails" list 4. Set "Ready for Campaign" = Yes
Workflow: Scheduled Refresh
Trigger: Scheduled daily at 2:00 AM Enrollment: Contacts where: - Last Enriched > 180 days ago - Lifecycle Stage = [MQL, SQL, Opportunity] - Limit: 500 contacts per day (cost management) Actions: 1. Use Clay webhook for full enrichment 2. Update enriched fields 3. Set "Last Enriched" = Today 4. Log activity "Enrichment refresh completed"
Enrichment Quality Control
Validation After Enrichment
| Field | Validation Check | Action if Failed |
|---|---|---|
| Valid format, verified deliverable | Flag, don't use in campaigns | |
| Phone | Valid format, 7-15 digits | Flag for manual review |
| Job Title | In approved list OR reasonable | Flag if nonsensical |
| Company Size | Within expected range for industry | Flag if outlier |
| Industry | From standardized list | Map or flag |
| Revenue | Positive number, reasonable for size | Flag if outlier |
Quality Metrics to Track
| Metric | Formula | Target |
|---|---|---|
| Enrichment coverage | Records enriched / Total records | >80% |
| Field fill rate post-enrichment | Filled fields / Target fields | >90% |
| Email verification rate | Valid emails / Total emails | >85% |
| Enrichment accuracy | Spot-check sample for correctness | >90% |
| Cost per enriched record | Total enrichment cost / Records enriched | Track trend |
Cost Management
Credit Allocation Strategy
| Priority | Segment | Enrichment Level | Budget % |
|---|---|---|---|
| 1 | MQLs and SQLs | Full enrichment | 40% |
| 2 | Target accounts (ABM) | Full enrichment | 30% |
| 3 | New leads | Essential fields only | 20% |
| 4 | Database refresh | Verification only | 10% |
Credit Optimization Tips
1. Don't re-enrich unnecessarily - Check existing data first - Set minimum time between enrichments (90 days) 2. Prioritize high-value records - Enrich MQLs before raw leads - Enrich target accounts first 3. Use appropriate sources - Free sources first (LinkedIn public data) - Cheap sources for low-value records - Premium sources for high-value only 4. Batch for efficiency - Batch requests where possible - Off-peak pricing if available
Cost Tracking Dashboard
| Metric | Calculation | Benchmark |
|---|---|---|
| Cost per enriched contact | Enrichment spend / Contacts enriched | $0.10-0.50 |
| Cost per verified email | Verification spend / Emails verified | $0.01-0.05 |
| Enrichment ROI | (Pipeline from enriched contacts - Cost) / Cost | >5x |
| Budget pacing | Month-to-date spend / Monthly budget | <100% |
Multi-Source Integration
API Integration Pattern
For each enrichment request: 1. Check cache (Clay, CRM) IF found AND fresh (< 90 days) → Return cached data 2. Waterfall through providers FOR each provider in priority order: → Make API request → IF valid data returned → Save to cache → Return data → Exit loop → ELSE continue to next provider 3. If no provider returns data → Flag for manual research → Return partial data with flag
Provider Selection Matrix
| Use Case | Primary | Secondary | Tertiary |
|---|---|---|---|
| Email discovery | Apollo | ZoomInfo | Hunter |
| Phone discovery | ZoomInfo | Lusha | Apollo |
| Job title verification | ZoomInfo | Apollo | |
| Company firmographics | Clearbit | ZoomInfo | Apollo |
| Tech stack | BuiltWith | Clearbit | Wappalyzer |
| Intent signals | Bombora | G2 | ZoomInfo |
Common Enrichment Mistakes
| Mistake | Impact | Fix |
|---|---|---|
| Single source reliance | Low coverage, single point of failure | Waterfall approach |
| No validation | Bad data enters CRM | Validate after enrichment |
| Over-enriching | Wasted budget | Prioritize by value, set limits |
| Under-enriching | Stale data, missed opportunities | Regular refresh schedule |
| Ignoring cost | Budget overrun | Daily/weekly cost monitoring |
| No tracking | Can't measure ROI | Enrichment source tracking |
Implementation Checklist
Phase 1: Setup (Week 1)
- Audit current data gaps
- Select enrichment providers
- Set up API integrations
- Configure Clay tables (if using)
- Create enrichment tracking properties
Phase 2: Automation (Week 2)
- Build real-time enrichment workflows
- Build batch enrichment workflows
- Set up validation rules
- Configure error handling
- Test with sample records
Phase 3: Launch (Week 3)
- Start with low-priority records
- Monitor accuracy and costs
- Adjust waterfall order based on results
- Roll out to all segments
Phase 4: Optimization (Ongoing)
- Weekly cost review
- Monthly accuracy audit
- Quarterly provider evaluation
- Annual strategy review
Cross-References
- Data Governance Framework: See
data-governance-framework.md - Validation Rules: See
data-governance-validation.md - Quality Metrics: See
data-governance-framework.md#data-quality-kpis-and-targets
Built by ColdIQ & Ivan Falco. For questions on implementation or anything not covered here, reach out to Ivan directly on LinkedIn.