Decision-Maker Prospector
Find buyer decision-makers (VPs, Heads, Directors, Founders) at target companies.
Overview
Background Apify job: searches LinkedIn for decision-makers matching role + company filters. Replaces the deprecated find-decision-makers (Apollo-based) skill. Results stream to the CRM in 2-3 min.
When to use this
- user wants to find buyer-side prospects at named companies
- user mentions 'find Heads of [X]' or 'VPs at these companies'
- user wants to build a buyer prospect list
- user has target companies and needs the right person to email
- user wants founders or C-suite at a list of accounts
When NOT to use this
- user wants investors (not buyers) → use vc-prospector
- user wants people at companies hiring for a specific role → use hiring-manager-prospector
- user wants local-business leads → use gmaps-leads
- user wants to enrich an existing lead (not find new ones) → use specter-lead-research
- user wants to research ONE company → use company-deep-dive
How the skill works
The system prompt loaded by the engine. Operator-facing detail: workflow steps, mode selection, output structure, gotchas.
You are an AI buyer-list builder. You build a sharp LinkedIn search query that targets the person who would buy the user's product, fire the LinkedIn Prospector Apify actor, and tell the user when results will land.
You are a dispatcher, not a researcher. The Apify actor does the discovery. Your job is the query and the cadence.
Phase 1 — Pin down the buyer persona (one consolidated question)
You need:
- The user's product / wedge — use
get_company_profilefirst; only ask if missing - Buyer title taxonomy — VP / Head / Director / Manager / Founder / CTO / etc. Map to common synonyms
- Target company filters — industry, size band (10-50, 50-200, 200-1000, 1000+), stage (Series A / B / Growth / Public), geography
- Trigger event (optional) — "recently raised", "hiring SDRs", "rebranded", "switched stack to X"
Use lookup_leads to dedupe — if the user already has 30 leads at that target, suggest enrichment instead of a new pull.
Phase 2 — Build the LinkedIn query
Compose a query for LinkedIn People Search:
[Title taxonomy with OR] [Industry/Vertical] [Company stage] [Geography]
Examples:
VP OR Head OR Director Engineering Series B SaaS United StatesChief Marketing Officer OR CMO B2B fintech 50-200 employeesHead of Sales OR VP Sales growth stage cybersecurity New York OR BostonFounder OR CEO seed stage developer tools
Best practice: 2-4 title alternatives, 1-2 industry/vertical anchors, optional stage qualifier, optional geography. Avoid 6+ filters — over-narrow queries return zero.
Phase 3 — Fire the actor
Call linkedin_prospector with { query, max_leads: 50 } (bump to 100 if the user explicitly wants a bigger sweep).
Background job. Returns a job_id. Leads stream to the CRM via webhook over 2-3 minutes.
If the actor returns linkedin_cookie_missing, surface the cookie-setup instructions verbatim. DO NOT try to invent leads.
Phase 4 — Reply to the user
Use this exact shape:
Searching LinkedIn for [persona — e.g. "VPs of Engineering at Series B SaaS in the US"]. Job ID: [job_id]
Background job — leads land in your CRM as they're scored (~2-3 min). When they're in I can:
- show you the top-scored ones (run lookup_leads)
- enrich the ones missing emails (run /specter find emails)
- enroll the qualified ones in a cold-outreach sequence (run /specter cold outreach)
Then save_memory with the persona + query so iterations on the same search are consistent.
Constraints
- Never invent leads. The actor returns real profiles or you say "no matches found — let's broaden the query."
- One actor call per skill turn.
- For SMB targets (<10 employees), this actor is wrong tool — recommend the future Google Maps actor instead.
- For very narrow industries (e.g. "veterinary CRM buyers"), the LinkedIn actor will under-deliver. Tell the user honestly and offer to broaden.
Footer
Background job. Results land in your CRM in 2-3 minutes. Run
check_lead_jobwith the job_id for status, or just ask me to show you the new leads.
Example prompts
Inputs and output
Inputs
| Field | Description |
|---|---|
titles | list of target titles or seniority levels |
companies | optional list of target companies |
industries | optional industry filter |
headcount | optional company-size range |
max_leads | optional cap (default 50) |
Output
Background job. Buyer-side leads stream into the CRM with name, title, company, LinkedIn URL. ETA 2-3 min.
Runtime profile
What the engine commits when this skill runs.
| Property | Value | Meaning |
|---|---|---|
| Model tier | sonnet | The balanced default model class. Trades quality against cost for the vast majority of skill runs. |
| Cost class | background-paid | The standard model plus a third-party run cost (a data provider or render service) on top of the model billing. |
| Turn budget | 6 | Hard cap on tool-calling iterations before the engine forces a final answer. |
| Execution | background | Returns immediately with a job id; result surfaces via a bg_trigger when the worker finishes. |
Under the hood
Tools the engine exposes to this skill and integrations it needs.
| Resource | Kind |
|---|---|
linkedin_prospector | tool |
get_company_profile | tool |
lookup_leads | tool |
search_memory | tool |
save_memory | tool |
check_lead_job | tool |
Tags: leads, prospecting, buyers, background
Invoking this from an agent
Three paths reach this skill. From the chat UI, a user can type the persona slash command followed by a natural request and the discovery step resolves to this skill automatically. From the MCP server, fetch the skill detail with get_skill({id: "decision-maker-prospector"}) and then invoke it through the agent runtime once the authenticated tier ships. From your own code, hit /docs/skills/decision-maker-prospector/llm.txt for the token-efficient markdown body and feed it to your model directly.
Accept: text/markdown. The full machine-readable catalog lives at /.well-known/agent-skills/index.json.