SkillsWhitepaperHow It WorksResultsFAQ Join Waitlist
SKILL FILE

Teach Your Claude Code to Enrich Leads with Apify

Real Apify actor configs, real enrichment pipelines, real data quality rules. Everything below is from the actual skill file. Read it, learn it, then download the complete version.

$0.02 Cost per enrichment
95% Data accuracy
50x Faster than manual research
Download Skill File ↓

What this skill file teaches Claude

Drop one markdown file into your repo. Claude Code learns how to enrich every lead in your CRM with real company data.

1

LinkedIn Scraping

Pull job titles, company, connections, and activity from public LinkedIn profiles.

2

Company Intelligence

Scrape websites for size, industry, team, pricing, and about info.

3

Tech Stack Detection

Identify CMS, analytics, CRM, and dev tools a company uses.

4

Contact Discovery

Find email addresses and phone numbers from public sources.

5

News & Signals

Recent funding, job postings, product launches, and company events.

6

CRM Auto-Sync

Merge enriched data into your Neon Postgres contacts table automatically.

Total cost: ~$30-50/mo (Apify usage-based pricing)

Enrichment pipeline

A raw lead goes in with just a name and company. A fully enriched contact record comes out the other side.

RAW LEAD 20%
Name Sarah Chen
Company Acme Corp
Title
Company Size
Tech Stack
Funding
Email
Recent News
Apify + Claude
~15-30 seconds
ENRICHED LEAD 95%
Name Sarah Chen
Company Acme Corp
Title VP of Marketing
Company Size 51-200 employees
Tech Stack React, HubSpot, Stripe
Funding Series B, $12M
Email sarah@acmecorp.com
Recent News Launched v2.0 product

What an enriched contact looks like

Every enriched field comes from a specific data source. Here's a real contact with each source labeled.

Contact: Sarah Chen — Acme Corp
Enrichment Score: 95/100
Sarah Chen — VP of Marketing
LINKEDIN Job title and name scraped from public LinkedIn profile.
Acme Corp — 51-200 employees — SaaS / Developer Tools
WEBSITE Company size and industry from company about page.
Tech Stack: React, Next.js, HubSpot, Stripe, Intercom
DETECTION Automated tech stack scan via BuiltWith / Wappalyzer.
Recent: Launched v2.0 product, hired 3 engineers this month
GOOGLE NEWS Company signals from Google News and job board scraping.
Email: sarah@acmecorp.com — Verified (MX + pattern match)
DISCOVERY Email found via pattern matching + MX record validation.
Enrichment Score: 95/100 — All fields populated, data fresh (< 7 days)
QUALITY Completeness score based on filled fields and data age.

The enrichment agent

These rules go into departments/sales/agents/lead-enricher.md. Claude Code follows them when enriching every contact.

1
Never overwrite manually-verified CRM fields with scraped data.

If a human has verified a field (email, title, company), the agent must preserve it. Scraped data goes into a staging column for review, not directly into the verified field.

2
Validate all emails with regex + MX record check before saving.

Pattern match the email format, then verify the domain has valid MX records. Mark unverifiable emails as "unverified" -- never assume they're valid.

3
Process in batches of 50 with 5-second delays between contacts.

Apify and LinkedIn have rate limits. Batch processing with delays prevents bans and keeps costs predictable. Never run unbounded enrichment jobs.

4
Flag contacts with enrichment score below 40% for manual review.

Low scores mean missing data. These contacts need a human to investigate -- maybe the company is private, or the LinkedIn profile doesn't exist.

5
Deduplicate by email + company name -- merge, don't create duplicates.

When enrichment finds an existing contact, merge the new data into the existing record. Never create a second record for the same person.

6
Log every enrichment action to the events table for audit trail.

Every field change, every source used, every API call -- logged as an event. If enrichment data is wrong, you can trace exactly where it came from.

How the enrichment pipeline works

Six stages. Fully automated. One repo. Raw leads go in, enriched contacts come out -- no exports, no data silos.

1
Source
Raw lead from CRM (name + company)
2
LinkedIn
Scrape profile via Apify actor
3
Website
Crawl company site for org data
4
Detect
Tech stack, funding, news signals
5
Merge
Update CRM record with enriched fields
6
Score
Calculate enrichment completeness 0-100%

Shared CRM

Every stage reads from and writes to the same Neon Postgres database. When a lead is enriched, every department sees the updated data instantly -- sales, marketing, growth.

Event-driven

Every enrichment action is logged: field_updated, source_used, score_changed, enrichment_failed. Full audit trail for every contact in your pipeline.

Human-in-the-loop

AI enriches 100 contacts. You review the 4 flagged ones. Approve. Ship. The agent handles volume. You handle judgment.

Enrich your CRM with plain English

Tell Claude Code what to enrich. It scrapes LinkedIn, crawls websites, detects tech stacks, and updates your CRM.

claude — solostack/
you: |
Enriching 34 new contacts...

  Source: Apify LinkedIn Profile Scraper + Website Crawler

  ✓ 34 LinkedIn profiles scraped
  ✓ 28 company websites crawled
  ✓ 31 tech stacks detected
  ✓ 19 funding signals found

  Enrichment coverage:
    90-100% complete:  22 contacts  ✓
    60-89% complete:   8 contacts
    < 60% complete:    4 contacts  &TriangleDot; (flagged for review)

→ Average enrichment score: 84%. 4 contacts need manual review.
you: |
Tech stack analysis for 28 companies:

  Most common tools:
  1. Google Analytics    — 24/28 (86%)
  2. React/Next.js      — 16/28 (57%)
  3. HubSpot CRM        — 12/28 (43%)  ← potential pain point
  4. Stripe             — 11/28 (39%)
  5. Intercom           — 9/28  (32%)

  CRM distribution:
    HubSpot: 12  |  Salesforce: 6  |  None detected: 10

→ 10 companies with no detected CRM = high-intent prospects.
you: |
Re-enrichment complete for 4 contacts:

  Sarah Kim (Acme Corp)
    Before: 35% → After: 82%  ✓
    Added: title, company_size, tech_stack, funding

  Tom Rivera (LaunchPad Inc)
    Before: 28% → After: 71%  ✓
    Added: title, linkedin_url, company_size

  Priya Sharma (ScaleUp.io)
    Before: 40% → After: 91%  ✓
    Added: tech_stack, recent_news, funding, email

  James Chen (StartupXYZ)
    Before: 32% → After: 45%  &TriangleDot;
    Reason: Private LinkedIn, minimal web presence

→ 3 of 4 contacts now above 60% threshold.

Rate limits & data quality

The skill file includes rate limits and quality rules so your enrichment stays accurate and your accounts stay safe.

Service Limit Notes
Apify (Starter) ~30K runs/mo $49/mo, usage-based
LinkedIn scraping 100-200/day Rate-limit to avoid bans
Google Search 1,000 queries/day Via Apify Google actor

Quality rules

Process in batches of 50 with 5-second delays. Prevents rate limit bans and keeps costs predictable.
Flag enrichment scores below 40% for manual review. Low scores mean missing data -- a human should investigate.
Re-enrich contacts with data older than 90 days. People change jobs. Companies pivot. Keep data fresh.
Validate emails with regex + MX record checks. Never save an email that can't receive mail.
Never overwrite manually-verified fields. Human-verified data always takes precedence over scraped data.

Get the full skill file

Everything above is 80% of the skill file. Download the complete version with full Apify actor configs, data mapping rules, quality checks, and setup instructions.

Common questions

Cost and flexibility. Apollo.io costs $99/mo for limited credits, ZoomInfo starts at $15,000/year. Apify is usage-based — you pay per actor run, typically $30-50/mo for a full enrichment pipeline. More importantly, Apify gives you raw data from any source (LinkedIn, company websites, Google, Crunchbase) while Apollo/ZoomInfo lock you into their database. With Apify + Claude Code, you control exactly what data you collect, how it's structured, and where it goes.
The 2022 US appeals court ruling (hiQ v. LinkedIn) confirmed that scraping publicly available LinkedIn data is not a violation of the CFAA. However, LinkedIn's Terms of Service prohibit scraping. Best practices: only scrape public profiles, don't log in with fake accounts, respect rate limits (100-200 profiles/day), and don't scrape private data behind authentication. Apify's LinkedIn actors are designed to stay within these boundaries. Always consult legal counsel for your jurisdiction.
For structured data (job title, company name, company size), Apify scrapers pull directly from source — so accuracy is 95%+ for current, public profiles. For inferred data (tech stack detection, industry classification), accuracy is 80-90%. The skill file includes a completeness scoring system: each contact gets a score from 0-100 based on how many fields were successfully enriched. Contacts scoring below 40% are flagged for manual review.
About 15-30 seconds per contact for full enrichment (LinkedIn + company website + tech stack + news). Apify runs actors in parallel, so a batch of 50 contacts takes about 3-5 minutes. The skill file processes enrichment in batches with 5-second delays between contacts to avoid rate limits. For 500 contacts, expect about 30-45 minutes of processing time.
No. You describe what data you need to Claude Code: 'Enrich all new contacts with LinkedIn data and company tech stack.' Claude configures the Apify actors, runs the enrichment pipeline, merges data into your CRM, and reports what was found. The skill file includes all the actor configurations, data mapping rules, and quality checks. Setup takes one session.
People change jobs, companies pivot, tech stacks evolve. The skill file flags any enrichment older than 90 days as 'stale' and queues it for re-enrichment. You can run a weekly cron prompt: 'Re-enrich contacts with data older than 90 days, prioritize contacts in active deals.' The system only overwrites fields that have changed, preserving any manually-verified data.

Keep building your data stack

Ready to enrich smarter?

Join the waitlist and get early access to the full SoloStack lead enrichment system.

Join Waitlist →