Install
$ agentstack add skill-keinsaasforever-gtm-pipeline-skills-gtm-company-enrichment ✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.
Security review
✓ PassedNo issues found. Passed automated security review. · v0.1.0 How review works →
- ✓ Prompt-injection patterns
- ✓ Secret / credential exfiltration
- ✓ Dangerous shell & filesystem operations
- ✓ Untrusted network calls
- ✓ Known-malicious package signatures
What it can access
- ✓ Network access No
- ✓ Filesystem access No
- ✓ Shell / process execution No
- ✓ Environment & secrets No
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
Verified badge
Passed review? Show it. Paste this badge into your README, it links to the public security report.
Reliability & compatibility
Declared compatibility
Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.
We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.
How agent discovery & health will work →About
Company Enrichment
Enrich a company list with structured data and score against ICP. Returns enriched CSV + ICP scores.
Read ~/.claude/skills/gtm-pipeline/_shared/conventions.md before executing.
When to Use
- After
company-search— raw list needs domains, revenue, headcount, etc. - Before
signal-search— ICP scoring determines which companies to invest signal credits on - Before
people-search— enriched domains required for most people search providers
Inputs
| Input | Required | Source | |-------|----------|--------| | Company CSV | Yes | Company Search output or user-provided | | ICP definition | Yes | context/icp.md or user prompt |
Two Phases
Phase 1: Data Enrichment
Add structured company data. Choose provider based on what's available:
| Provider | Data Points | Input needed | Cost | Notes | |----------|-------------|--------------|------|-------| | PB SN Scraper | Full SN profile: headcount by dept, growth metrics, revenue range, industry, location | SN company URL | Free (SN account) | Most comprehensive | | Parallel Task Group | Custom fields via web research | Company name + domain | ~$0.025–0.05/row | Flexible output schema. Ask which processor | | SimilarWeb via Apify | Monthly traffic, traffic sources | Domain | Apify credits | Actor: curious_coder/similarweb-scraper | | Firecrawl | Website content, tech stack signals | Domain | Firecrawl credits | Scrape + extract | | SerpAPI | Domain from company name | Company name | SerpAPI credits | Google search → extract domain | | Pipe0 company data | TBD — not yet tested | Domain | TBD | Check pipe0 catalog |
Ask the user which provider to use. Default: PB SN Scraper if SN URLs available, otherwise Parallel Task Group.
Phase 2: ICP Scoring
Score enriched companies against client ICP definition.
Phase 1 Execution
PhantomBuster SN Account Scraper
Agent: Sales Navigator Account Scraper (config key: PB_AGENT_SN_ACCOUNT in _shared/local.md, or look up via PhantomBuster MCP)
Read _shared/phantombuster.md for the full API pattern. Use the /phantombuster skill to generate the script:
/phantombuster "Sales Navigator Account Scraper" -- scrape SN company data from , column
Input: SN company URLs (one per row in CSV) Output per company: name, industry, headcount by dept, location, LinkedIn URL, SN URL, revenue range, growth metrics (6m / 1y / 2y), median tenure
Parallel Task Group (Custom Enrichment)
Endpoint: POST https://api.parallel.ai/v1/tasks Auth: x-api-key: $PARALLEL_API_KEY
Always ask which processor to use: core, core2x, pro, ultra
Design an output schema matching the data points needed for ICP scoring. Example:
{
"company_website": {"type": "string"},
"linkedin_company_url": {"type": "string"},
"estimated_revenue": {"type": "string"},
"employee_count": {"type": "integer"},
"industry": {"type": "string"},
"founded_year": {"type": "integer"},
"tech_stack_indicators": {"type": "array", "items": {"type": "string"}}
}
Always include company_website and linkedin_company_url in the schema.
Check latest docs via context7 (libraryName: parallel-web).
SimilarWeb via Apify
Actor: curious_coder/similarweb-scraper Env var: APIFY_API_KEY
Input: list of domains Output: monthly visits, traffic sources, bounce rate, pages per visit
Output
Write to csv/intermediate/companies_enriched.csv. Preserve all original columns, add enrichment columns.
Phase 2: ICP Scoring
How It Works
- Read company rows (status=new, or all unscored)
- Load ICP definition from
context/icp.md - LLM scores each company →
icp_score(0–100) +icp_rationale - Write score back to CSV
- Process in batches (~10–20 companies per loop)
LLM: Ask the user which model to use (any LLM with structured output / JSON mode works).
Input Fields Used for Scoring
From the enriched company data:
- name, industry, description, employee count, location, website, LinkedIn URL
- Revenue (min/max), department headcounts (engineering, sales, ops, IT, BD, marketing)
- Growth metrics (6m, 1y, 2y), median tenure, year founded
ICP Scoring Prompt
The LLM receives each company row + the ICP definition and returns a structured score.
Output schema per company:
{
"icp_score": 85,
"icp_rationale": "DACH-based B2B SaaS company in target revenue range. Experiencing rapid growth with lean tech team, indicating clear need for external automation support rather than in-house development."
}
Per-Client Customization
- ICP doc: Maintain
context/icp.mdwith the client's ICP definition — industry, size, location, revenue, tech profile, exclusions - Score threshold: Adjust the gate based on selectivity (default: ≥70). The gate is optional — useful for credit savings on downstream steps, not a hard requirement.
Optional Gate for Next Step (Signal Search)
To save credits on downstream signal-search, gate by:
icp_score >= 70websitenot emptytypein [Startup, Scaleup] (if type field available)
Skip the gate if you want to score signals on the full enriched set.
Output
Write to csv/intermediate/companies_scored.csv with added columns:
icp_score, icp_rationale, scoring_status
All original + enrichment columns preserved.
Full Output
Updated CSV with all columns:
company_name, company_domain, company_linkedin_url,
company_industry, company_hq_location, company_hq_country,
company_employee_count, company_employee_range,
revenue_range, growth_6m, growth_1y, growth_2y,
headcount_engineering, headcount_sales, headcount_operations, headcount_IT,
icp_score, icp_rationale, enrichment_source
What's Missing (To Document)
- Pipe0 company data pipe: test and document endpoint
- Parallel Task Group for company enrichment: test with specific output schema
- SimilarWeb via Apify: document the full actor setup and output field mapping
- LLM API integration patterns for standalone ICP scoring (outside orchestration platforms)
Source & license
This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: keinsaasforever
- Source: keinsaasforever/gtm-pipeline-skills
- License: MIT
- Homepage: https://www.keinsaas.com/de/research-agent
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet, be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.