The problem
Turning "mid-size e-commerce ops teams in the Nordics" into an actual list means three separate jobs: find the companies, pick the right person inside each one, and get a deliverable email address. Done by hand it is hours of tab-switching between a search engine, LinkedIn and a spreadsheet. Done carelessly it produces a list that bounces and damages the sending domain.
What was built
An n8n pipeline: plain-English ICP in, working list out.
- ICP to queries. A language model expands the description into concrete search queries and Instantly filter parameters, so the operator does not have to guess at boolean syntax.
- Company discovery. Candidates are gathered and deduplicated.
- Fit scoring. Each company is scored against the ICP before any contact work starts.
- Decision-maker identification. The pipeline looks for the role that owns the problem, not whoever is listed first.
- Contact discovery and verification. Email addresses are found and validated.
- Google Sheets delivery. Rows land where the operator already works, with the evidence for each row visible so it can be checked and deleted.
Two decisions
Score before enriching. Enrichment and verification are billed per record. Scoring first means the budget is spent on companies that already passed the ICP check, not on a raw scrape.
The pipeline does not send. It produces a candidate list with its reasoning attached and stops there. A person reviews before anything goes out.
Stack
- Orchestration: n8n
- Language model: OpenAI, for ICP expansion and fit scoring
- Outreach platform: Instantly API
- Delivery: Google Sheets
Credentials
Our Apollo.io node is published on npm as
n8n-nodes-apollo (MIT, maintainer arturl95,
14 resources, source public). We hold n8n Verified Creator status.