How to Set Up Exa ICP Lead Generation — Find Your Perfect Customers with Semantic AI in n8n

Your CRM is full of leads that will never buy. The reason is almost always the same: you defined your ideal customer profile (ICP) in a slide deck, then handed sourcing to keyword filters that don't u

How to Set Up Exa ICP Lead Generation — Find Your Perfect Customers with Semantic AI in n8n

Your CRM is full of leads that will never buy. The reason is almost always the same: you defined your ideal customer profile (ICP) in a slide deck, then handed sourcing to keyword filters that don't understand what your product actually does. "SaaS, 50-200 employees, North America" returns 40,000 companies — and maybe 200 of them are a real fit. Your SDRs burn the week qualifying noise.

This article shows you how to fix that with a semantic, AI-scored lead engine built in n8n — using Exa's neural search to find companies that resemble your best customers and GPT-4o to score and rank them before a human ever looks. You define the ICP once. The workflow does the rest on a schedule.

Why keyword lead sourcing fails

Traditional lead databases match on structured fields: industry code, headcount, geography, tech stack. Those fields are blunt. They can't tell the difference between a company that "uses AI" as a marketing buzzword and one that ships an ML product. They can't capture "companies that sell to procurement teams" or "agencies that just raised a seed round and are hiring their first RevOps person." That nuance is exactly where your best-fit accounts live.

The result is a two-sided tax. You over-source (thousands of technically-matching but wrong companies) and under-source (the perfect-fit account gets filtered out because its SIC code is miscategorized). Both cost you pipeline. What you actually want is search that understands meaning, not just field equality — and a way to rank the output so your team works the top of the list first.

The solution: semantic search + LLM scoring

This workflow combines two AI layers that each solve half the problem.

Exa is a neural search engine that indexes the web by semantic embedding rather than keyword. Instead of "type a query, get pages containing those words," you describe the kind of company you want — or hand it an example URL — and Exa returns entities that are conceptually similar. Its findSimilar and search endpoints are built for exactly this: "find companies like this one" or "B2B startups building developer tooling that recently launched."

GPT-4o then acts as your judgment layer. Every candidate Exa returns is passed to the model with your ICP definition, and the model scores it 0–100, explains why, and flags disqualifiers. What used to be a manual qualification meeting becomes a structured JSON field. Your team opens a sheet already sorted by fit score.

Define the ICP once, in plain language. Exa finds the matches. GPT-4o scores and prioritizes them automatically. That's the whole loop — and n8n is what wires it together and runs it on a schedule without you touching it.

Step-by-step: building it in n8n

Here is the node-by-node structure. If you install the ready-made template you'll get all of this pre-wired, but understanding the flow lets you customize it for your ICP.

1. Schedule Trigger. Start with a Schedule Trigger node set to run daily or weekly (e.g. every Monday 06:00). This makes lead generation a background process, not a task someone has to remember. For on-demand runs during setup, swap in a Manual Trigger.

2. Set node — your ICP definition. Add a Set (Edit Fields) node that holds your ICP as structured data: a natural-language description, target signals ("hiring SDRs," "recently funded," "uses HubSpot"), and hard disqualifiers ("agencies," "under 10 employees"). Keeping this in one node means you tune your ICP in a single place instead of editing queries scattered across the flow.

3. HTTP Request — Exa search. Use an HTTP Request node (POST to https://api.exa.ai/search). Set authentication to a Header Auth credential with x-api-key = your Exa key. In the JSON body, pass your ICP description as the query, set type: "neural", numResults: 25, and enable contents: { "text": true } so you get page text back for the model to reason over. To seed from an existing customer instead, POST to /findSimilar with a url parameter pointing at a lookalike account.

4. Split / loop the results. Add a Split Out node on the results array so each company flows through scoring individually. Wrap the downstream nodes in a Loop Over Items node if you want controlled batching and to respect API rate limits.

5. AI Agent / OpenAI node — scoring. Add the OpenAI node (or the Basic LLM Chain from the LangChain nodes) with model gpt-4o. In the system prompt, paste the ICP from step 2 and instruct the model to return strict JSON: { "score": 0-100, "reasoning": "...", "disqualified": true/false, "matched_signals": [...] }. Turn on JSON output mode so the response parses cleanly. The user message is the Exa result's title, URL, and text.

6. Filter + Sort. Use a Filter node to drop anything with disqualified = true or score < 70, then a Sort node ordering by score descending. Now only qualified, ranked accounts survive.

7. Output to where your team works. End with a Google Sheets (Append Row), Airtable, or CRM node (HubSpot / Pipedrive) writing company name, URL, score, reasoning, and matched signals. Optionally add a Slack node that posts the day's top five to your sales channel.

Configuration details that matter

A few settings separate a demo from something you can trust in production. Set numResults conservatively at first (25) — every result costs a GPT-4o call, so scale volume only after you've validated scoring quality. Use Exa's includeDomains / excludeDomains parameters to exclude directories, job boards, and your own competitors from results. In the LLM node, pin the temperature low (0–0.2) so scores are stable and repeatable across runs. And always enforce JSON output plus an Item Lists or code check that validates the schema — a malformed model response should route to an error branch, not silently corrupt your sheet.

The payoff

Once this runs, your funnel changes shape. Instead of a giant undifferentiated list, your team gets a short, ranked queue of accounts that semantically resemble your winners, each with a written rationale they can drop straight into outreach personalization. The "why this company" is already answered. SDR qualification time collapses because the workflow did the first pass. And because it's scheduled, fresh best-fit accounts land in your sheet every week without anyone lifting a finger — you're continuously sourcing while you sleep.

The deeper win is consistency. A human qualifier has good and bad days; the model applies the same ICP rubric to every single company, so your top-of-funnel definition stays disciplined even as you scale volume.

Common pitfalls to avoid

A vague ICP. Garbage in, garbage out applies doubly here. "B2B SaaS companies" gives the model nothing to discriminate on. Write the ICP the way you'd brief a sharp new hire — include the pains you solve, the buyer's role, and concrete positive and negative examples.

Trusting the score blindly. GPT-4o scoring is a prioritization layer, not an oracle. Spot-check the top and bottom of your first few runs and refine the prompt. Ask the model to always return reasoning so you can audit why a company scored high.

Ignoring rate limits and cost. Exa and OpenAI both meter usage. Without a Loop Over Items batch size and a small Wait node, a big result set can trip rate limits or run up an unexpected bill. Start small, monitor the execution log, then scale.

No dedup. Run this weekly and you'll re-surface the same companies. Add a lookup against your CRM or a Remove Duplicates node keyed on domain so your team never works the same account twice.

Skipping the error branch. APIs fail. Wire the HTTP Request and LLM nodes with "Continue On Fail" and route errors to a Slack alert, so a bad run notifies you instead of silently producing an empty sheet.

Get the ICP tight and the guardrails in, and you have a self-running, semantic lead engine that finds and ranks your perfect customers on autopilot — the kind of infrastructure that used to require a data team.

Exa ICP Lead Generation — Find Your Perfect Customers with Semantic AI
PRONTO PARA USAR

Ja construimos isso pra voce

Nao comece do zero. O Exa ICP Lead Generation — Find Your Perfect Customers with Semantic AI e um workflow n8n pronto para instalar — conecta suas ferramentas em minutos, sem codigo.

Instalar por $79.0 →