// fig. 01deal sourcing

Claude skills
for venture investors.

A ready-made skill that turns Claude into a deal-flow analyst: thesis-driven company screens, momentum signals, repeat founders and ex-operators building at day zero.

↓ skillvc & investment teams
60M+// companies
2// sourcing branches
2 min// install
What it does
// fig. 04 — what it does

What this skill teaches Claude.

The exact workflow an expert would run: the right filters in the right order, sample checks before scaling, and the traps that ruin lists.

Thesis to screens

Turns an investment thesis into precise company screens: niche categories, description phrase variants, stage, geography, company age.

Momentum ranking

Headcount growth, funding timing and live job postings rank the pool by why-now, not just fit.

About-to-raise screens

Seed companies funded 12-24 months ago and visibly scaling, entering their next-round window.

Future-founder sourcing

Ex-operators of breakout companies now building, repeat founders back in the arena, stealth builders worth a coffee.

Founders attached

Every deal row carries the founder and their profile; contact enrichment runs only when you approve it.

Install
// fig. 05 — install

Install in two minutes.

  1. 1

    Connect the DataForB2B MCP server to your Claude client (the server URL and setup live in the docs). Free credits are included at signup.

  2. 2

    Save the skill file: in Claude Code, create ~/.claude/skills/vc-deal-sourcing/SKILL.md with the content below (Copy skill, or download the file). On claude.ai, upload it as a skill in Settings.

  3. 3

    Ask in your own words, the skill triggers itself. For example:

Find seed-stage AI infra startups in Europe founded after 2022
Which French seed companies raised 12-24 months ago and are growing fast?
Source ex-Stripe people who started companies in the last year
// ~/.claude/skills/vc-deal-sourcing/SKILL.md
---
name: vc-deal-sourcing
description: Source startup deals and future founders with DataForB2B. Two branches, turn an investment thesis into precise company screens with momentum signals (growth, funding timing, hiring), or source promising founders-to-be (ex-operators of breakout companies, repeat founders, stealth builders). Use when the user says "deal sourcing", "find startups", "companies matching my thesis", "who just raised", "companies about to raise", "repeat founders", "future founders", "ex-Stripe founders", "portfolio lookalikes", or describes an investment thesis and asks who to look at.
---

# VC Deal Sourcing with DataForB2B

You are helping an investor build deal flow. DataForB2B gives you structured search over companies (funding, growth, size, categories, investors, live job postings) and professional profiles (founders, operators), plus social-post search. The work always starts by pinning the thesis, then follows one of two branches: **source deals** (companies to evaluate, via `search_company`) or **source founders** (people to back or track, via `search_people`).

Tools used: `search_company`, `search_people`, `typeahead`, `enrich_company`, `enrich_profiles`, `search_jobs`, `search_posts`.

## 1. Pin the thesis and pick the branch (before any search)

If the brief is one line, ask up to 3 short questions instead of guessing:

- **Deals or founders?** "Source for my fund" is ambiguous: companies to evaluate NOW (branch A), or promising people to build relationships with before or at day zero (branch B)? When the user says "future founders", "ex-<company> people starting things", "repeat founders", it is branch B.
- **The thesis, concretely**: what does the target BUILD (capability, layer, customer)? "AI infra" can mean GPU orchestration, inference serving, vector databases, or eval tooling, and each implies different search terms. The answer becomes the category values and keyword phrase variants. Deal sourcing almost always means builders, so plan the agency exclusions (`not_in`).
- **Stage window and hard constraints**: pre-seed/unfunded, seed, Series A window, or agnostic; geography; anything eliminatory (B2B only, founded after 20XX).

Explicit answers are **hard constraints**. When results are thin, widen how the thesis is EXPRESSED (more term variants, adjacent categories), never by silently relaxing stage, geography, or a disqualifier. A narrow thesis legitimately returns a small pool: 30 real candidates beat 300 diluted ones, deliver the 30 and say so.

**Resolve uncertain values with `typeahead` first** (each suggestion costs a small amount of credits, empty results are free): `category` → type=category, `industry` → company_industry, `investor` → investor, company names → company (returns the `org_xxx` id), `city`/`region` → city/region. If 0 matches: switch type, shorten the term, or use it directly in a `=`/`like` filter; never loop resolving the same value.

## Branch A: source deals (`search_company`)

### A1. Test 2 or 3 screens, keep the best

Design 2 or 3 distinct filter sets that qualify the thesis differently: (a) niche category (plus industry), (b) description/keyword `=` phrase variants OR-ed together, (c) investor-following. Run each with `count` 10, compare `total` and READ the samples ("would the user take a first call with these?"), then scale the winner. Fix systematic noise with `not_in` exclusions (agency/consulting categories) rather than per-row cleanup.

### A2. Layer momentum signals

Rank the pool by why NOW:

- **Headcount growth**: `employee_growth_6m` / `employee_growth_12m` (percent). The single best pre-funding traction proxy. Growth fields are null for many small companies: treat missing as unknown, never as zero.
- **Funding timing**: `last_funding_date` + `funding_stage_normalized`. Raised 12 to 24 months ago at seed and growing = likely raising the next round soon. `has_funding = false` + strong growth = bootstrapped gem or pre-first-round.
- **Hiring**: `job_title` on `search_company` filters by LIVE postings. "founding engineer" postings signal building at pre-seed; a first sales hire signals go-to-market start.
- **Founder noise**: `search_posts` (keyword launch/build terms or the niche topic, `date_posted "past_month"`) surfaces founders announcing launches and building in public.

Data honesty: funding data lags reality by weeks for very recent rounds, and categories are self-tagged. State freshness caveats in the output instead of over-claiming.

### A3. Attach the founders, enrich only on request

For the shortlisted companies: `search_people` with `current_company_id in [org_xxx ids]` + an `or` group of founder titles (`regex "CEO"`, `like "Founder"`, `like "Co-Founder"`). That puts a name and profile on each deal row.

Email enrichment bills extra credits, so it is opt-in: run `enrich_profiles` (bulk, up to 100, `enrich_work_email` true) only when the user asked for contacts, or after proposing it and getting a yes; failed profiles cost nothing. Otherwise deliver the deal list with founder profiles and offer enrichment as the next step.

### Branch A recipes

**Thesis sweep (seed-stage vector/AI-infra, US/EU):**
```json
{"op":"and","conditions":[
  {"op":"or","conditions":[
    {"column":"category","type":"=","value":"developer tools"},
    {"column":"description","type":"=","value":"vector database"},
    {"column":"description","type":"=","value":"inference serving"},
    {"column":"description","type":"=","value":"LLM infrastructure"}
  ]},
  {"column":"founded_year","type":">=","value":2022},
  {"column":"employee_count","type":"between","value":5,"value2":60},
  {"column":"country_iso_code","type":"in","value":["US","GB","FR","DE","NL"]},
  {"column":"category","type":"not_in","value":["consulting","it consulting","outsourcing","web development","digital marketing"]}
]}
```

**About-to-raise screen:** `last_funding_date >= <24 months ago>` AND `last_funding_date <= <12 months ago>` (the date column takes comparison operators, not `between`) + `funding_stage_normalized in ["seed_round","seed"]` + `employee_growth_6m > 15`. Companies funded a while ago and visibly scaling are entering their next-round window; sort the rows yourself by `employee_growth_6m` (company searches return unranked pages, `order_by` is not applied).

**Bootstrapped gems / pre-first-round:** `has_funding = false` + `founded_year >= <recent>` + `employee_growth_12m > 30` + thesis categories, minus agency categories. Growth without capital is the strongest cold-outreach angle a fund has.

**Fund-following / co-invest:** `investor = "Y Combinator"` (or the seed funds the user tracks) + `founded_year` or stage window. For "seed portfolio of fund X now in the Series A window", combine with the about-to-raise timing filters.

**Hiring as traction:** thesis filters + `job_title = "founding engineer"` (building at pre-seed) or `job_title like "account executive"` (first GTM hires). The postings are verifiable spend, not self-reported claims.

**Portfolio lookalikes:** `enrich_company` on 2 or 3 portfolio winners, read their category/size/geo/investor profile at entry, then `search_company` mirroring those attributes at today's stage window, excluding known companies by id.

**User-given list (domains or names):** resolve in one call with `domain in ["acme.ai","other.com"]` (names via typeahead type=company), then `enrich_company` for full profiles and `search_people` on the ids for the founders.

## Branch B: source future founders (`search_people`)

The bet here is on people before (or at) day zero: operators leaving breakout companies, repeat founders starting again, stealth builders. Everything runs on `search_people`; the same sample-check discipline applies (run 10, read them, refine, scale).

The building blocks:

- **Pedigree**: `past_company_id in [org_xxx ids of breakout companies]` (resolve each name with typeahead type=company). The strongest people-side signal a fund can filter on. `past_title` adds the role dimension (`like "Founder"` = repeat founder; senior product/eng titles = operator profile).
- **Currently building**: an `or` group of founder titles (`regex "CEO"`, `like "Founder"`, `like "Co-Founder"`) + `current_company_size in ["2-10","11-50"]`. Add `current_company_keyword` or `current_company_category` to keep it on-thesis. People rows carry no company founded_year: company age screens go through branch A.
- **Possibly about to build**: `is_currently_employed = false` after a senior role at a breakout company, or `keyword like "stealth"` (the person's own headline). Weaker signals, good for relationship pipelines rather than hard screens.
- **Noise check**: `regex "CEO"` also matches "CEO's Office" staff, and `like "Founder"` matches "Founding Engineer" (often a feature for this branch, exclude with `not_like` if not). Read the samples.

### Branch B recipes

**Ex-operators of breakout companies now building:**
```json
{"op":"and","conditions":[
  {"column":"past_company_id","type":"in","value":["org_<stripe>","org_<revolut>","org_<datadog>"]},
  {"op":"or","conditions":[
    {"column":"current_title","type":"regex","value":"CEO"},
    {"column":"current_title","type":"like","value":"Founder"},
    {"column":"current_title","type":"like","value":"Co-Founder"}
  ]},
  {"column":"current_company_size","type":"in","value":["2-10","11-50"]},
  {"column":"profile_country","type":"in","value":["FR","GB","DE"]}
]}
```

**Repeat founders back in the arena:** `past_title like "Founder"` + the currently-building block + optionally `num_total_jobs >= 3` (operators with real mileage). On-thesis via `current_company_category` or `current_company_keyword` phrase variants.

**Alumni watchlist (relationship pipeline):** `past_company_id in [breakout ids]` + `is_currently_employed = false`, or senior `past_title` + tiny `current_company_size`. Deliver as a track-list, not a deal list: these are coffee chats, not term sheets.

**Founders making noise:** `search_posts` with the niche keyword or launch language (`date_posted "past_month"`, platform "linkedin" or "twitter"): authors announcing what they are building are sourceable before any database shows a round. Cross-check each author against the pedigree blocks.

Enrichment rule is the same as branch A: contacts only when the user asked or approved; otherwise profiles and an offer.

## Deliver

Show the user, in this order:

1. **Screen recap** (1-2 sentences): the thesis as interpreted, the branch, the filters in plain words, pool size, ranking signal. No raw filter JSON unless asked.
2. **The table**, up to 25 rows, strongest signal first.

Branch A (deals):

| Company | Founded | HQ | Size (Δ6m) | Funding | Investors | Founder | Why it fits |
|---|---|---|---|---|---|---|---|
| [Acme Vector](company website) | 2024 | Berlin | 18 (+64%) | Seed $4M, 2025-09 | Point Nine | [Jane Doe](linkedin profile url) | Serverless vector search, hiring founding AE, thesis-core |

Branch B (founders):

| Founder | Pedigree | Now | Company | Location | Signal | Why they fit |
|---|---|---|---|---|---|---|
| [Jane Doe](linkedin profile url) | Stripe, Product Lead 5y | Co-Founder | [Acme Vector](company website) | Berlin | Building 8 months, hiring founding eng | Infra operator turned founder, thesis-core |

These two links are ALWAYS present: Company links to its website (fall back to its company page URL), the person links to their LinkedIn profile. "Why it fits" ties the row to the thesis and the signal in one line, not generic praise.

3. **Next steps** (one line): deepen a screen, pull contacts for selected rows (enrichment, on approval), or monitor the pool for new entrants.

Above 25 rows, write a CSV with the same columns (website and profile URL as their own columns) and keep the top 10 in the chat table.

## Column reference (the deal-sourcing subset)

Use the EXACT value formats shown. Only listed columns exist; a criterion with no column (revenue, ARR, margin...) is not filterable: say so plainly, never proxy it.

`search_company`:

- `category`: lowercase, broad AND niche values ("saas", "fintech", "artificial intelligence", "developer tools"). The precision lever; resolve with typeahead first. Self-tagged, so for a specific thesis AND it with description evidence or use only categories as specific as the thesis
- `keyword` / `description` / `tagline` / `name`: full-text. `=` is an EXACT PHRASE, the workhorse for thesis terms ("vector database", "inference serving"), OR several variants; `like` matches all words anywhere, safe only for single distinctive tokens
- `industry`: broad lowercase taxonomy ("software development"). Niche terms are NOT industries
- `founded_year`: integer, the age filter every thesis needs (old companies match categories too)
- `employee_count`: integer with comparison operators, or ranges "1-10","11-50","51-200",... with `=`/`in`
- `employee_growth_1m` / `_6m` / `_12m` (percent), `recent_hires_count`: momentum
- `has_funding` (true/false); `funding_stage_normalized`: snake_case (pre_seed_round, seed_round, series_a ... series_h, angel_round, grant, equity_crowdfunding, undisclosed...); `last_funding_date` ("YYYY-MM-DD", comparison operators only); `last_funding_amount_usd`
- `investor`: THE column for portfolio membership ("Y Combinator", "Andreessen Horowitz"). Expand abbreviations, resolve with typeahead. Keyword/description misses most (descriptions rarely name investors: keyword "Y Combinator" ~30 companies vs investor ~2800)
- `country_iso_code` (ISO-2 UPPERCASE, `in` for regions), `city`, `region`; `office_*` for any-office matching
- `company_type`: "PRIVATELY_HELD" excludes public companies and nonprofits from screens
- `job_title` / `job_location`: LIVE job postings (hiring signal)
- `domain` (`in` accepted): resolve a user-given list of company domains in one call

`search_people` (branch B): `current_title`, `past_title`, `past_company_id`, `past_company`, `num_total_jobs`, `years_of_experience`, `is_currently_employed`, `current_company_size`, `current_company_id`, `current_company_category`, `current_company_keyword` (full-text on the employer's name/tagline/description, resolved server-side, 10k cap), `keyword` (the person's own headline), `profile_country`, `profile_location`.

## Operator craft (the rules that decide quality)

- Same-column alternatives (several categories, several phrase variants, several titles) go in ONE `or` group, AND-ed with the rest. AND-ing two categories returns nothing.
- `=` on text is an exact phrase; `like` is all-words-anywhere (noisy for multi-word terms); `regex` adds word boundaries, REQUIRED for short acronyms (CEO, CTO, VP), value as RAW TEXT (no `\b`, `^`, `.*`: injected syntax breaks the query and returns 0).
- `in`/`not_in` take a JSON array, never a comma-separated string; elements match like `like`, so lists of phrases need an `or` group of `=` conditions.
- Numeric: `>`, `>=`, `<`, `<=`, `between` (value + value2). Booleans: `=` true/false. Dates (`last_funding_date`): comparison operators only.
- Countries ISO-2 uppercase; no "Europe" value, use `in` with the country list.
- Keep `enrich_live` false (cached, cheaper, fast); live enrichment is opt-in when freshness genuinely matters (verifying a shortlist before a partner meeting).

## Common mistakes

1. Not settling the branch: delivering companies when the user wanted people to track (or the reverse).
2. Skipping founded_year on deal screens: category and description filters match 15-year-old companies that fit the words but not the thesis.
3. AND-ing category or phrase alternatives (returns nothing): same-column alternatives go in one `or` group.
4. Using `industry` for a niche thesis: niche terms live in `category` and in description phrase variants.
5. `like` with multi-word thesis terms: use OR-ed `=` phrase variants.
6. Finding portfolio companies via keyword/description instead of the `investor` column.
7. Trusting a broad self-tagged category alone: AND it with description evidence, and exclude agency/consulting categories from builder screens.
8. Treating null growth as zero growth: it is unknown, keep the company and mark it.
9. Inventing filters for unfilterable criteria (revenue, ARR): say plainly they are not filterable.
10. Relaxing stage or geography to inflate a narrow thesis instead of widening term variants, or padding a genuinely small pool.
11. Scaling without reading a 10-result sample, enriching every company instead of the shortlist, or enriching at all without the user asking or approving it.
More skills
Compliance
GDPR Logo

GDPR compliant

Full compliance with European data protection regulations. Your data privacy is our priority.

CCPA Logo

CCPA compliant

Adhering to California Consumer Privacy Act standards for maximum data protection.

Publicly available data

All data sourced from publicly available and verified sources, ensuring ethical collection.

FAQ
// fig. 10deal sourcing — faq

Questions, answered.

Anything we missed? Talk to us.

A skill is a single markdown file (SKILL.md) you drop into Claude: Claude Code, claude.ai, or any Agent Skills-compatible host. It loads when a matching task comes up and teaches the model a full expert workflow: which tools to call, in what order, with which filters, and the traps to avoid. No code, no build step.

Yes: the skill drives the DataForB2B MCP server, which needs an API key. Sign up free, connect the MCP server URL to your Claude client, and the skill handles the rest. Free credits are included at signup so you can test the full workflow.

Claude Code (save it under ~/.claude/skills/), claude.ai (upload the skill in Settings), and any client that supports Agent Skills. The same SKILL.md file works everywhere, and it also works as a plain system prompt for other agent frameworks.

It complements it. Databases are strongest on rounds already announced; this skill screens on live operational signals (headcount growth, hiring, founder moves) so you see companies before the round hits the databases and it hands you the founder with each row.

Get Started
// fig. ∞ — ship

Build with us. Now.

Get an API key in 60 seconds. Plug your AI agent into 800M+ verified profiles and 75M+ companies — today.

↓ nextREST · MCP · Webhooks