Skip to main content

targeted-prospecting

Build a prospect list of companies with decision makers, verified contact info, and hiring/intent signals. Use when asked to find leads by industry, build an account list with specific titles, prospect companies that are actively hiring, or create a targeted outreach list filtered by company size, location, and hiring activity.

Source facts

Repository
criptogus/agent-evolve-network
Last source activity
July 4, 2026 at 17:42
Detected SKILL.md language
English
Stars
248
Forks
3

Install options

The review-first prompt is selected by default. You can switch to a direct command or download a local copy.

Review the source files

Read SKILL.md and any companion files shown by SkillsMP before deciding whether to install.

File Explorer
2 files

Showing SKILL.md

SKILL.md
Source instructions · Read-only preview
name
targeted-prospecting
description
Build a prospect list of companies with decision makers, verified contact info, and hiring/intent signals. Use when asked to find leads by industry, build an account list with specific titles, prospect companies that are actively hiring, or create a targeted outreach list filtered by company size, location, and hiring activity.
source
orthogonal
# Targeted Prospecting — Industry + Decision Makers + Hiring Signals ## Setup Read your credentials from ~/.gooseworks/credentials.json: ```bash export GOOSEWORKS_API_KEY=$(python3 -c "import json;print(json.load(open('$HOME/.gooseworks/credentials.json'))['api_key'])") export GOOSEWORKS_API_BASE=$(python3 -c "import json;print(json.load(open('$HOME/.gooseworks/credentials.json')).get('api_base','https://api.gooseworks.ai'))") ``` If ~/.gooseworks/credentials.json does not exist, tell the user to run: `npx gooseworks login` All endpoints use Bearer auth: `-H "Authorization: Bearer $GOOSEWORKS_API_KEY"` Build a prioritized prospect list for any industry. Finds companies matching your ICP, identifies decision makers by title, enriches with verified contact info, and layers on hiring/intent signals to prioritize who's ready to buy now. ## Workflow ### 1. Parse the Request Extract from the user's query: - **Industry/vertical** (required) — e.g., staffing, fintech, healthcare IT, construction - **Decision maker titles** (required) — e.g., COO, VP Engineering, Head of Marketing - **Location** (optional, default: US) — country, state, city, or region - **Company size** (optional) — employee count min/max, revenue floor - **Hiring signal roles** (optional) — job postings that indicate buying intent (e.g., "Scheduling Coordinator" = ops pain, "DevOps Engineer" = infra investment) - **Max results** (optional, default 15) - **Company/product** (optional) — if user mentions what they're selling, triggers competitive intel in Step 7 ### 2. Find Target Companies Run 2-3 search strategies **in parallel**: **Strategy A — Scrapegraph searchscraper** (primary — most targeted results): ```bash curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \ -H "Authorization: Bearer $GOOSEWORKS_API_KEY" \ -H "Content-Type: application/json" \ -d '{"api":"scrapegraph","path":"/v1/searchscraper"}' "user_prompt": "top {industry} companies in {location} with company name, website, employee count, and headquarters", "num_results": 15 }' ``` Best source for industry-specific company lists. Returns targeted results from industry directories, Inc 5000 lists, and trade publications. In testing, returned 28 staffing companies in a single call vs Fiber's noisy mix of tech giants and staffing firms. **Strategy B — Fiber NL company search** (co-primary — best structured data): ```bash curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \ -H "Authorization: Bearer $GOOSEWORKS_API_KEY" \ -H "Content-Type: application/json" \ -d '{"api":"fiber","path":"/v1/natural-language-search/companies"}' "query": "{industry} companies in {location} with {employee_min}+ employees", "pageSize": 20 }' ``` Returns structured company data with employee counts, domains, LinkedIn URLs, and descriptions. **Caveat:** For niche industries (staffing, construction, etc.), Fiber NL search often returns broad/noisy results mixed with unrelated companies. Filter results by industry keywords from the description, `li_industries`, and `crunchbase_categories` fields. Use company `names` field (not `name_consensus`) for the company name. **Strategy C — Nyne company search** (supplemental — attempt, may return errors): ```bash # Step 1: POST to start search curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \ -H "Authorization: Bearer $GOOSEWORKS_API_KEY" \ -H "Content-Type: application/json" \ -d '{"api":"nyne","path":"/company/search","body":{"query":"{industry} companies {location} {size_qualifier}"}}' # Step 2: Poll with GET using request_id curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \ -H "Authorization: Bearer $GOOSEWORKS_API_KEY" \ -H "Content-Type: application/json" \ -d '{"api":"nyne","path":"/company/search","query":{"request_id":"REQUEST_ID"}}' ``` Nyne is async — POST returns a `request_id`, poll with GET until complete (5-20s). **Note:** Nyne company search can return 400 errors depending on query format. If it fails, proceed with Scrapegraph + Fiber results — don't block on Nyne. #### Scaling Up For 20+ results, run parallel searches by sub-region or sub-vertical: ```bash # Parallel searches for different sub-regions curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \ -H "Authorization: Bearer $GOOSEWORKS_API_KEY" \ -H "Content-Type: application/json" \ -d '{"api":"fiber","path":"/v1/natural-language-search/companies"}' "query": "{industry} companies in New York with {size}+ employees", "pageSize": 15 }' curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \ -H "Authorization: Bearer $GOOSEWORKS_API_KEY" \ -H "Content-Type: application/json" \ -d '{"api":"fiber","path":"/v1/natural-language-search/companies"}' "query": "{industry} companies in California with {size}+ employees", "pageSize": 15 }' ``` ### 3. Extract & Deduplicate Merge results from all strategies. For each company, extract: - **Company name** - **Domain / website URL** - **Employee count** (primary size proxy — revenue data is often unavailable) - **Headquarters / location** - **LinkedIn company URL** (if returned by Fiber/Nyne) - **Description / industry tags** Deduplicate by domain first, then by normalized company name. Apply user's size filters — use employee count as revenue proxy when revenue is unavailable (100+ employees ≈ $10M+ revenue as rough heuristic). Enrich top companies with Brand.dev for industry context: ```bash curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \ -H "Authorization: Bearer $GOOSEWORKS_API_KEY" \ -H "Content-Type: application/json" \ -d '{"api":"brand-dev","path":"/v1/brand/retrieve","query":{"domain":"{company_domain}"}}' ``` ### 4. Find Decision Makers **Cost ranking (25 results):** Apollo $0.01 | Fiber $0.50 | Nyne/PDL $7.50. Always try Apollo first. **Best approach: Apollo search first, then Fiber for NL queries, then per-company fallbacks.** **Primary — Apollo people search (cheapest at $0.01 flat):** ```bash curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/apollo/mixed_people/search \ -H "Authorization: Bearer $GOOSEWORKS_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "person_titles": ["{title_1}", "{title_2}"], "person_locations": ["{location}"], "per_page": 25 }' ``` **Fallback — Fiber NL profile search ($0.02/record, good for broad industry queries):** ```bash curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/fiber/v1/natural-language-search/profiles \ -H "Authorization: Bearer $GOOSEWORKS_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "query": "{title_1} or {title_2} at a {industry} company in {location}", "pageSize": 15 }' ``` This is the highest-yield approach. Returns decision makers across the industry with LinkedIn URLs, current titles, and company names. **Per-company fallback — Fiber NL profile search ($0.02/record)** (for companies not covered above): ```bash curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/fiber/v1/natural-language-search/profiles \ -H "Authorization: Bearer $GOOSEWORKS_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "query": "{title_1} or {title_2} at {company_name}", "pageSize": 5 }' ``` Per-company queries often return empty results, especially for large enterprises where C-suite profiles may not be indexed. Use this only for high-priority companies missing from the broad search. **Last resort — Nyne person search (EXPENSIVE: $0.30/record, async):** Only use if Apollo and Fiber returned insufficient results. ```bash curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/pdl/person/search \ -H "Authorization: Bearer $GOOSEWORKS_API_KEY" \ -H "Content-Type: application/json" \ -d '{"query":"{title} at {company_name} {location}"}' ``` **Fallback — Scrapegraph website scrape** (scrape the company's leadership page): ```bash curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \ -H "Authorization: Bearer $GOOSEWORKS_API_KEY" \ -H "Content-Type: application/json" \ -d '{"api":"scrapegraph","path":"/v1/smartscraper"}' "website_url": "https://{company_domain}/about", "user_prompt": "Extract names, titles, and any contact info for the leadership team. Identify anyone with these titles: {target_titles}" }' ``` If `/about` returns 422, fall back to the homepage URL. ### 5. Enrich Contacts For each decision maker found, run **all** of these in parallel: **Email discovery — Sixtyfour first** (highest hit rate for small/mid-market domains): ```bash # Sixtyfour AI email finder (PRIMARY — found 9/12 emails in testing) curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \ -H "Authorization: Bearer $GOOSEWORKS_API_KEY" \ -H "Content-Type: application/json" \ -d '{"api":"sixtyfour","path":"/find-email"}' "lead": {"first_name": "{first}", "last_name": "{last}", "domain": "{company_domain}"} }' # Hunter email-finder (supplemental — often returns null for small company domains) curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \ -H "Authorization: Bearer $GOOSEWORKS_API_KEY" \ -H "Content-Type: application/json" \ -d '{"api":"hunter","path":"/v2/email-finder","query":{"domain":"{company_domain}","first_name":"{first}","last_name":"{last}"}}' # Tomba email-finder (supplemental — similar limitations to Hunter on small domains) curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \ -H "Authorization: Bearer $GOOSEWORKS_API_KEY" \ -H "Content-Type: application/json" \ -d '{"api":"tomba","path":"/v1/email-finder","query":{"domain":"{company_domain}","company":"{company_name}","first_name":"{first}","last_name":"{last}"}}' # Tomba LinkedIn-to-email (if LinkedIn URL found in Step 4) curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \ -H "Authorization: Bearer $GOOSEWORKS_API_KEY" \ -H "Content-Type: application/json" \ -d '{"api":"tomba","path":"/v1/linkedin","query":{"url":"{linkedin_url}"}}' ``` In testing, Sixtyfour found emails for 9 out of 12 prospects where Hunter and Tomba returned null. Sixtyfour is the most reliable source for small/mid-market company domains. Still run all sources in parallel — each occasionally finds emails the others miss. **Phone discovery:** ```bash curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \ -H "Authorization: Bearer $GOOSEWORKS_API_KEY" \ -H "Content-Type: application/json" \ -d '{"api":"sixtyfour","path":"/find-phone"}' "lead": {"first_name": "{first}", "last_name": "{last}", "company": "{company_name}"} }' ``` Sixtyfour find-phone had a 100% hit rate in testing (10/10 prospects). **Deep enrichment** (fire early, don't block — takes 30-60s): ```bash curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \ -H "Authorization: Bearer $GOOSEWORKS_API_KEY" \ -H "Content-Type: application/json" \ -d '{"api":"sixtyfour","path":"/enrich-lead"}' "lead_info": {
View on GitHub
This SKILL.md is very large, so SkillsMP previews the first section here. View on GitHub