Project goal: automatically go through company data found on the internet, identify the best potential customers (AI lead scoring against the ideal customer profile, ICP), build the CRM in HubSpot (companies, contacts, deals) and prepare personalized offers that go out only after human approval.
Stack: n8n (orchestration), Claude API (Haiku for scoring and data extraction, Sonnet for writing), Firecrawl (web search and page reading), HubSpot CRM (companies, contacts and deals in a dedicated pipeline). Node names are shown exactly as they appear in the n8n flow.
The team of 5 agents
1 · prospectorreads the company list and drops rankings and non-companies (rules, no AI) · nodes 1–4
2 · icp-qualifierscores each company 1–10 against the ideal customer profile (Claude Haiku) · nodes 5–7
3 · hubspot-synccreates the Company and the Deal in HubSpot, no duplicates (HubSpot API) · nodes 8–18, 32–35, 41–42
4 · contact-finderfinds the decision maker on the company's site (Firecrawl + Claude Haiku) · nodes 19–31, 36
5 · offer-writerdrafts the email and the offer for human approval (Claude Sonnet) · nodes 37–40
Each agent has one job. n8n is the conductor: it sets the order and the branches; Claude is called only where judgment or text is needed. Role, inputs, outputs and the real prompt of each agent are in the agents/ folder.
🤖 Claude (AI)🧡 HubSpot (CRM)🌐 Internet (Firecrawl)📄 File⚙️ n8n logic (rules, decisions)
The flow in 7 steps
1
Collecting target companies from the internet
We search for companies (according to the established criteria) that could benefit from our product/service and gather them in a list (CSV: name, website, description, industry).
🌐 Internet (Firecrawl)
n8n nodes—no node: done separately, outside the flow
In the demo version, this search does not run in n8n: we use a list of fictional companies saved in a file, and the flow starts from that file.
▼ CSV file with companies
2
Loading the list and cleaning it
We read the file and drop the rows that are not companies (rankings, "Top 10" lists, reviews).
📄 File⚙️ n8n logic
n8n nodes
▼ real companies, one row each
3
Lead scoring: a grade from 1 to 10
Claude Haiku evaluates each company against the ICP. Score ≥ 6 = qualified. Strict JSON answer, temperature 0, for repeatable results.
🤖 Claude (AI)
n8n nodes
▼ score, label, reason
4
Building the CRM in HubSpot
Each company becomes a Company in HubSpot, with a Deal in the "Funnel B2B" pipeline (stage "New"). We look it up first by domain / name: if it exists we update it (no duplicates). Qualified companies move to "Qualified" and continue; the others stay in "New".
🧡 HubSpot (CRM)⚙️ n8n logic
n8n nodes
▼ qualified companies only
5
Identifying the decision maker
We search the web for the company's contact and team pages, then read the site directly (this also works for new, unindexed sites). Claude Haiku extracts the decision maker: name, role, email. No source on the site = "negasit" (not found); we never invent. A contact with a valid email is saved in HubSpot and linked to the company.
🌐 Internet (Firecrawl)🤖 Claude (AI)🧡 HubSpot (CRM)
n8n nodes
▼ contact (or "negasit")
6
Writing the offer, with human approval
Claude Sonnet writes the email and the personalized offer based on the company's site. No invented prices, figures or customers. The text is saved to a file with status "pending". Nothing is sent until a human approves it.
🤖 Claude (AI)📄 File
n8n nodes
▼ offer in oferte-de-aprobat/
7
Updating the pipeline: "Draft email"
The company's Deal moves to the "Draft email" stage, so HubSpot shows that an offer is waiting for review.
🧡 HubSpot (CRM)
n8n nodes
Result on the demo:
8 rows in the list→7 real companies (1 ranking page removed)→6 qualified (a large company, already running a chatbot, was excluded)→6 offers written, awaiting approval
1. No invented data. If a piece of information is not on the site, the result says "negasit" or "insufficient details". A human fills in the price.
2. Idempotent. The flow can be run any number of times: no company, person or deal is duplicated in HubSpot.
3. Human in the loop. The flow sends no email. Every offer waits to be read and approved by a person.
Details, stage by stage
The n8n flow has 42 nodes. Click a stage to see what each node does.