Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Optimize provider selection, routing, and credit usage across 150+ enrichment sources for company/contact intelligence.
.claude/skills/microck-data-sourcing/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-20 | ✗→✓ | ▲ Improved | 67% | 0% |
| case-15 | ✗→✓ | ▲ Improved | 73% | 0% |
| case-16 | ✗→✓ | ▲ Improved | 87% | 0% |
| case-21 | ✓→✗ | ▼ Worse | 105% | 0% |
| case-08 | ✓→✓ | = Same ✓ | 100% | 0% |
You are an expert at selecting and optimizing data providers from 150+ available options to maximize data quality while minimizing credit costs. Use this layered framework to keep enrichment predictable and efficient.
Best Input Scenarios:
Quality Tiers:
Data Type Priority:
Industry Specialization:
Tier 0 (Free): Native operations, cached data, manual inputs
Tier 1 (0.5 credits): Validation, verification, basic lookups
Tier 2 (1-2 credits): Standard enrichments (Apollo, Hunter, Clearbit)
Tier 3 (2-3 credits): Premium data (ZoomInfo, technographics, intent)
Tier 4 (3-5 credits): Enterprise intelligence (PitchBook, custom AI)
Tier 5 (5-10 credits): Specialized services (video generation, deep AI research)1. Cache Everything
2. Batch Processing
python# Process in batches for volume discounts if record_count > 1000: use_provider("apollo_bulk") # 10-30% discount elif record_count > 100: use_parallel_processing() else: use_standard_processing()
3. Smart Waterfalls
pythonwaterfall_sequence = [ {"provider": "cache", "credits": 0}, {"provider": "apollo", "credits": 1.5, "stop_if_success": True}, {"provider": "hunter", "credits": 1.2, "stop_if_success": True}, {"provider": "bettercontact", "credits": 3, "stop_if_success": True}, {"provider": "ai_research", "credits": 5, "last_resort": True} ]
yamlPriority: Success rate over cost Sequence: 1. BetterContact (aggregates 10+ sources) 2. ZoomInfo (if enterprise) 3. Apollo + Hunter + RocketReach 4. AI web research Expected Success: 95%+ Average Cost: 8-12 credits
yamlPriority: Good success with reasonable cost Sequence: 1. Apollo.io 2. Hunter (if domain match) 3. RocketReach (if name match) 4. Stop or continue based on confidence Expected Success: 80% Average Cost: 3-5 credits
yamlPriority: Minimize cost Sequence: 1. Cache check 2. Hunter (domain only) 3. Free sources (Google, LinkedIn public) 4. Stop at first result Expected Success: 60% Average Cost: 1-2 credits
pythondef calculate_data_quality_score(data, sources): score = 0 # Multi-source validation (30 points) if len(sources) > 1: score += min(len(sources) * 10, 30) # Data completeness (30 points) required_fields = ["email", "phone", "title", "company"] score += sum(10 for field in required_fields if data.get(field)) # Verification status (20 points) if data.get("email_verified"): score += 10 if data.get("phone_verified"): score += 10 # Recency (20 points) days_old = get_data_age(data) if days_old < 30: score += 20 elif days_old < 90: score += 10 return score
python# Combine AI and traditional providers def hybrid_enrichment(company): # Fast, cheap base data base = clearbit_lookup(company) # AI for missing pieces if not base.get("description"): base["description"] = ai_generate_description(company) # Premium for high-value if is_enterprise_account(base): base.update(zoominfo_enrich(company)) return base
python# Enrich in stages based on engagement def progressive_enrichment(lead): # Stage 1: Basic (on import) if lead.stage == "new": return basic_enrichment(lead) # 1-2 credits # Stage 2: Engaged (opened email) elif lead.stage == "engaged": return standard_enrichment(lead) # 3-5 credits # Stage 3: Qualified (booked meeting) elif lead.stage == "qualified": return comprehensive_enrichment(lead) # 10+ credits
references/provider_cheat_sheet.md for provider selection.scripts/cost_calculator.py for estimating credit usage.javascript// JavaScript/Node.js template const enrichContact = async (name, company) => { // Check cache first const cached = await checkCache(name, company); if (cached) return cached; // Try providers in sequence const providers = ['apollo', 'hunter', 'rocketreach']; for (const provider of providers) { try { const result = await callProvider(provider, {name, company}); if (result.email) { await saveToCache(result); return result; } } catch (error) { console.log(`${provider} failed, trying next...`); } } // Fallback to AI research return await aiResearch(name, company); };
Progressive disclosure: Load full provider details and code examples only when actively optimizing enrichment workflows
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-04 | fail→fail | 18,374 | 15,809 | -14% | 1 | 1 | 0% | 2,914 | 5,100 | +75% | 0 | 0 | — |
case-14 | fail→fail | 18,345 | 14,563 | -21% | 1 | 1 | 0% | 2,834 | 4,902 | +73% | 0 | 0 | — |
case-01 | fail→fail | 19,974 | 17,182 | -14% | 1 | 1 | 0% | 3,271 | 5,320 | +63% | 0 | 0 | — |
case-02 | fail→fail | 25,481 | 17,426 | -32% | 1 | 1 | 0% | 5,453 | 6,137 | +13% | 0 | 0 | — |
case-03 | fail→fail | 30,257 | 26,086 | -14% | 1 | 1 | 0% | 5,569 | 7,481 | +34% | 0 | 0 | — |
case-05 | fail→fail | 15,828 | 15,418 | -3% | 1 | 1 | 0% | 2,552 | 5,220 | +105% | 0 | 0 | — |
case-06 | fail→fail | 18,437 | 15,571 | -16% | 1 | 1 | 0% | 3,156 | 5,176 | +64% | 0 | 0 | — |
case-07 | fail→fail | 16,071 | 13,932 | -13% | 1 | 1 | 0% | 2,533 | 4,831 | +91% | 0 | 0 | — |
case-08 | pass→pass | 14,560 | 14,332 | -2% | 1 | 1 | 0% | 2,413 | 4,830 | +100% | 0 | 0 | — |
case-20 | fail→pass | 17,917 | 14,476 | -19% | 1 | 1 | 0% | 3,130 | 5,235 | +67% | 0 | 0 | — |
case-09 | pass→pass | 11,560 | 10,487 | -9% | 1 | 1 | 0% | 1,819 | 4,049 | +123% | 0 | 0 | — |
case-10 | pass→pass | 15,090 | 12,776 | -15% | 1 | 1 | 0% | 2,367 | 4,510 | +91% | 0 | 0 | — |
case-11 | fail→fail | 13,852 | 14,623 | +6% | 1 | 1 | 0% | 2,193 | 4,744 | +116% | 0 | 0 | — |
case-12 | pass→pass | 19,730 | 16,988 | -14% | 1 | 1 | 0% | 3,411 | 5,553 | +63% | 0 | 0 | — |
case-13 | fail→fail | 20,455 | 17,759 | -13% | 1 | 1 | 0% | 3,185 | 5,417 | +70% | 0 | 0 | — |
case-15 | fail→pass | 16,897 | 14,605 | -14% | 1 | 1 | 0% | 2,721 | 4,698 | +73% | 0 | 0 | — |
case-16 | fail→pass | 16,835 | 15,022 | -11% | 1 | 1 | 0% | 2,529 | 4,721 | +87% | 0 | 0 | — |
case-17 | pass→pass | 18,521 | 15,400 | -17% | 1 | 1 | 0% | 2,719 | 4,801 | +77% | 0 | 0 | — |
case-18 | fail→fail | 15,845 | 10,422 | -34% | 1 | 1 | 0% | 2,690 | 4,272 | +59% | 0 | 0 | — |
case-19 | pass→pass | 18,733 | 16,168 | -14% | 1 | 1 | 0% | 2,849 | 5,145 | +81% | 0 | 0 | — |
case-21 | pass→fail | 14,501 | 13,164 | -9% | 1 | 1 | 0% | 2,208 | 4,532 | +105% | 0 | 0 | — |
case-22 | pass→pass | 15,153 | 12,563 | -17% | 1 | 1 | 0% | 2,760 | 4,841 | +75% | 0 | 0 | — |
case-23 | pass→pass | 18,431 | 22,084 | +20% | 1 | 1 | 0% | 3,596 | 6,965 | +94% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 23 cases were attempted. The headline lift of +9 percentage points is the difference between those two pass rates over the 23 comparable cases. 1 case got worse with the skill loaded, and it is included in that figure.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.