Skip to content
AI & Agents
Skill

/apify-lead-scoring-enrichment

Score and enrich a CSV of B2B leads using Apify Actors. Takes a CSV with company URLs, free-text scoring rules, and an enrichment preference; runs BuiltWith (tech stack), Website Content Crawler (content classification), and Contact Info Scraper (company metadata) for scoring;

From plugin
awesome-skills
25322 skills
Install
$ npx -y skills add apify/awesome-skills --skill apify-lead-scoring-enrichment --agent claude-code

How it fires

How this skill gets triggered: by you, by Claude, or both.

  • Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
  • You can call itInvoke it directly when you want it.
  • Slash command/apify-lead-scoring-enrichment

Context preview

The summary Claude sees to decide when to auto-load this skill.

Score and enrich a CSV of B2B leads using Apify Actors. Takes a CSV with company URLs, free-text scoring rules, and an enrichment preference; runs BuiltWith (tech stack), Website Content Crawler (content classification), and Contact Info Scraper (company metadata) for scoring;

SKILL.md

apify-lead-scoring-enrichment.SKILL.md
name: apify-lead-scoring-enrichment
description: Score and enrich a CSV of B2B leads using Apify Actors. Takes a CSV with company URLs, free-text scoring rules, and an enrichment preference; runs BuiltWith (tech stack), Website Content Crawler (content classification), and Contact Info Scraper (company metadata) for scoring; enriches with either department-specific contacts (Contact Info Scraper + Bulk Email Finder fallback) or copywriter discovery (Google Search Scraper → AI Web Scraper → Bulk Email Finder). Outputs an enriched CSV with a numeric score and a per-lead outreach_hook column that personalizes cold email copy (e.g. "uses Shopify → send Shopify install guide"). Use when user asks to score leads, qualify leads, enrich a lead list, detect a company's tech stack for outreach, find marketing/sales/engineering contacts at a list of companies, hunt down blog copywriters for guest-post pitches, personalize cold email at scale, or turn a raw domain list into a ready-to-pitch account list.
author: Fabian Maume
author_url: https://github.com/fmaume
metadata:
  keywords: "lead-scoring, lead-enrichment, outreach, cold-email, personalization, tech-stack, builtwith, email-finder, copywriter-discovery, guest-post, prospecting, b2b, csv-workflow"

Lead Scoring & Enrichment

Turn a CSV of company URLs into a scored, contact-enriched pitch list. The agent asks the user for scoring rules in plain English ("+10 if using Shopify", "-5 if company size <10"), picks an enrichment path (departments or copywriters), and orchestrates six Apify Actors through four helper scripts.

Prerequisites

  • Apify account with an active `APIFY_TOKEN` ([Console → Settings → Integrations](https://console.apify.com/settings/integrations))
  • Node.js 20.6+ (needed for native `--env-file` support)
  • A `.env` file at the skill root containing `APIFY_TOKEN=apify_api_...`
  • One-time inside `scripts/`: `npm install` (installs `csv-parse`, `csv-stringify`)

Optional but recommended: the Apify CLI (`npm i -g apify-cli`) for ad-hoc Actor calls. The helper scripts hit the REST API directly and do not need the CLI.

Workflow

Copy this checklist and track progress:

Task Progress:
- [ ] Step 1: Collect CSV path and validate required column (company_url)
- [ ] Step 2: Collect scoring rules per source (tech / content / metadata)
- [ ] Step 3: Collect enrichment path (departments OR copywriters)
- [ ] Step 4: Run scoring Actors (writes scoring.json)
- [ ] Step 5: Apply scoring rules per lead → assign per-source scores + outreach_hook (writes scored.json)
- [ ] Step 5b: Compute theoretical min/max score, ask user for qualification threshold, filter leads → qualified_leads.csv
- [ ] Step 6: Run enrichment path against qualified_leads.csv (writes enrichment.json)
- [ ] Step 7: Merge scoring + enrichment onto the ORIGINAL CSV → leads.enriched.csv (qualified column marks who made the cut)

Step 1: CSV intake

Ask the user for the CSV path. Required column: `company_url`. Recognized optional columns pass through untouched: `company_name`, `first_name`, `last_name`, `role`, `department`. Reject the run if `company_url` is missing. Trim to a bare domain (strip trailing slash, `www.` optional) when feeding downstream Actors that expect a domain.

Step 2: Scoring rules (per source)

Ask **one question per source** so it's obvious to the user (and to you at Step 5) which data each rule tests. Ask only for the sources the user wants to fetch — each source has a matching `--enable-*` flag in Step 4.

**2a. Tech-stack rules** — applied against `scoring.json[url].tech` (BuiltWith output). Only ask if the user wants `--enable-tech`. Example rules to show:

  • *+10 if the company uses Shopify or WooCommerce (we sell a Shopify integration).*
  • *+5 if the tech stack includes HubSpot, Marketo, or Segment (marketing-ops ICP).*
  • *-3 if no analytics or CDP is detected (likely too early-stage).*

**2b. Website-content rules** — applied against `scoring.json[url].content` (Website Content Crawler markdown/text). Only ask if the user wants `--enable-content`. Also ask for `maxCrawlDepth` here (default `0` = homepage only; higher = more $). Example rules:

  • *+8 if the homepage describes a SaaS or platform business.*
  • *-5 if the homepage describes a services agency (not our ICP).*
  • *+3 if the homepage mentions "developers" or "API" (technical buyer).*

**2c. Company-metadata rules** — applied against `scoring.json[url].metadata` (Contact Info Scraper metadata). Only ask if the user wants `--enable-metadata`. Example rules:

  • *+3 if industry is e-commerce, retail, or B2C.*
  • *-3 if company size is under 10 employees (too small to buy).*
  • *+5 if the company has a LinkedIn presence (bigger operation).*

Store each rule block verbatim, tagged with its source. If the user folds a metadata rule into the tech block (e.g. "+3 if size >50" under tech), re-file it to the correct block before Step 5 and tell them why.

Any source the user has no rules for should also be dropped from the Step 4 `--enable-*` flags — no point paying for a signal you won't score on. Full example rule sets: [examples/scoring-rules.example.md](examples/scoring-rules.example.md).

Step 3: Enrichment path (pick one)

Ask: *"Which enrichment path?*

  • *(A) Department contacts — find named people (with title + email) in a specific team at each company. Uses Contact Info Scraper's "Business leads enrichment" add-on, falls back to Bulk Email Finder for any lead without a discovered email.*
  • *(B) Copywriter hunt — for each domain, Google-search `site:{domain} blog`, extract author names from top posts, find their emails. Good for guest-post outreach."*

For **Path A**, collect two more inputs:

1. **Department(s)** — one or more from this enum (comma-separated): `c_suite`, `product`, `engineering_technical`, `design`, `education`, `finance`, `human_resources`, `information_technology`, `legal`, `marketing`, `medical_health`, `operations`, `sales`, `c

Read more
Ships withawesome-skills

Community collection of Apify agent skills for AI coding assistants

Get the whole plugin

Other skills on awesome-skills.