B2B Outbound Operator — ICP Discovery & Scoring at $1 per 1k Records

How a founder-led B2B team discovers 14,000 companies, scores them, and narrows to 150 hand-picked outbound targets per sprint — on a single db/linkedin/search/companies endpoint.

Overview

A founder-led B2B SaaS operator (under 10 employees, founded 2024) runs a boutique outbound program — high-quality, manually reviewed touches, ~150 per week — against a custom ICP framework. Instead of buying a sales-tech stack across firmographics, list-building, enrichment, and delivery, the team built a single pipeline on db/linkedin/search/companies plus four supporting endpoints.

The database-backed search replaces a multi-vendor stack with one structured payload and a mini-DSL for keyword matching. Output is raw rows the team scores on their side — no inherited vendor schema, no per-record fees on data discovery.

14,000 companies

Discovered in a single sprint from one query (~2s wall-clock)

180 ready-to-send leads

Hook + verified email + no role drift, per week

~$15–20 / sprint

Out-of-pocket LLM cost; discovery API calls free under MCP Unlimited

The Challenge

Boutique B2B outbound demands a tight ICP: not "B2B tech" but a specific cross-section of company type, size, geography, funding stage, and product positioning. Off-the-shelf sales-tech stacks force a coarse ICP — industry codes, employee ranges, hard categories. To narrow further, teams stitch four to six vendors with overlapping pricing and partial coverage, then export and re-classify on their own side anyway.

The team needed:

The Solution

The /db/linkedin/search/companies endpoint exposes the database directly via a structured payload. Keywords get a mini-DSL (whitespace = AND, | = OR, "phrase" = exact phrase, -token = NOT). Filters are typed: employee_count_min/max, founded_on_min/max, country_hq, country_any, is_active, has_description, min_description_length, and more.

1. Cross-field keyword search via mini-DSL — 70% of calls

A single keywords field searches across name, description, short_description, specialities, hashtags, and locations simultaneously. For 27 ICP categories ranging from autonomous outbound agents to compliance research tools, the team builds one DSL string per sprint:

{
  "keywords": "\"AI SDR\"|\"AI BDR\"|\"autonomous outbound\"|\"AI sales agent\"|\"AI research agent\"|\"AI signal\"|\"AI inbound qualification\"|\"AI prospecting\"",
  "country_hq": ["US","GB","DE","NL","FR","CA","AU","IE","SG"],
  "employee_count_min": 11,
  "employee_count_max": 200,
  "is_active": true,
  "has_description": true,
  "min_description_length": 100,
  "count": 1000
}

This single call returns 1,000 ICP-candidate companies with full LinkedIn fields in ~2 seconds wall-clock.

2. Token-aware structured geo + size filters — 20% of calls

A common pitfall in coarse country filters is substring matching: the US token used to false-match against Austria, Australia, Austin, Houston. The country_hq and country_any params parse the ISO2 code directly out of headquarter_location and the locations[] array, eliminating that class of false positive.

{
  "industry_name": "fintech|payments",
  "country_hq": ["US","GB","DE"],
  "employee_count_min": 51,
  "founded_on_min": 2020,
  "page_verification_status": true,
  "count": 500
}

3. Per-field DSL for surgical narrowing — 10% of calls

When the cross-field keywords casts too wide a net, the team narrows by specific fields:

The Data Pipeline

Daily ICP refresh runs as a chained pipeline:

Step Action Powered by
1 Pull 1,000–10,000 ICP candidates by keyword DSL db/linkedin/search/companies
2 Enrich with funding stage + total + growth score crunchbase/company (cached lookup)
3 Score each company against a 27-category ICP framework (HOT/WARM/MAYBE/EXCLUDE/COMPETITOR) LLM with prompt-cached system prompt
4 Filter to HOT tier (top ~2-5% of pool) query_cache on the cache_key
5 Find 5–15 senior decision-makers per company linkedin/sn_search/users
6 Fetch last-90-day posts for buying-intent scoring linkedin/user/posts
7 Find email via vanity-resolved profile URL linkedin/user/find_email_by_url
8 Generate personalized 24–30 word hook anchored to a real post or homepage LLM (higher-tier model for quality)
9 Export ready-to-send leads to CSV for the outreach platform export_data

End-to-end run time: ~1.5 hours for 14,000 companies. Cost out-of-pocket: ~$15–20 in LLM calls. Discovery API calls: free under MCP Unlimited.

Results & Scale

Pipeline metric Value
Companies discovered (single sprint) 14,000
Wall-clock for the discovery query ~2 sec
Companies scored as HOT (focus narrowing) 319 (2.3% — 20x narrower than naïve filter)
HOT companies in the primary spearhead segment 211 (66% of HOT)
Decision-makers found across HOT-linked companies 16,000
Emails resolved via Tier 2 finder 8,100 (62% hit rate after vanity resolution)
Personalized hooks generated with verifiable source URLs 245 (0 errors)
Ready-to-send leads (hook + email + no role drift) 180
Validation metric Value
Crossover with an externally-sourced 279-company target list 84% (234 of 279 already in pipeline)
Of crossover, classified as HOT by the team's scoring 99% (231 of 234) — independent confirmation
Crunchbase enrichment match rate 25% (3,298 of 13,972 companies have funding info)

The team operates the entire outbound funnel — discovery, enrichment, scoring, intent detection, personalization, delivery prep — without subscribing to a separate firmographics, list-building, enrichment, or delivery vendor.

Key Anysite Endpoints Used

Endpoint Purpose Volume share
db/linkedin/search/companies Bulk ICP discovery via SQL-style mini-DSL 35%
linkedin/sn_search/users Senior decision-maker enrichment in batch 25%
linkedin/user/posts Buying-intent signal harvest from recent posts 20%
linkedin/user/find_email_by_url Email resolution for outreach delivery 15%
crunchbase/company Funding/stage signal for tier scoring bumps 5%

Why Anysite

The combination of LinkedIn-depth firmographic queries + flexible mini-DSL + structured filters is unique to the platform. Recreating it elsewhere requires stitching four to six vendors — firmographics, sales-nav search, list-building, enrichment, funding intelligence — into a pipeline with per-record pricing at every layer.

For sales teams that want to own their ICP definition instead of inheriting one from a vendor, the SQL-style discovery endpoint is the unlock: write your own scoring rubric, run it against the underlying database in seconds, and pay only for the rows that survive your filter.

Key Takeaways