Skip to main content
← All projects/Lead Machine n8n
Automation2026

Lead Machine n8n

Side project: an n8n lead machine for Zéro Degrés, a refrigerated transport company operating across Paris and the Île-de-France region. Every morning the workflow sweeps cold-chain businesses (bakeries, caterers, food labs, pharmacies…), cross-references Google Places with the French SIRENE company registry, deduplicates on the company ID, has an LLM score each prospect, writes the record to the CRM and fires a personalised email sequence. Self-hosted on Docker, GDPR-compliant by design.

1 / 6

// recruiter view

Side project built for Zéro Degrés, a refrigerated carrier in Paris and Île-de-France: replace the owner's manual evening prospecting with an n8n workflow that finds, qualifies and contacts prospects on its own. He no longer opens Google Maps — he opens a CRM already filled with scored records, with an opening email already sent to the hottest ones.

  • 10 cold-chain sectors prospected automatically every morning across Paris and the 7 Île-de-France departments — bakeries, caterers, food labs, pharmacies, dark kitchens…
  • Two official sources cross-referenced (Google Places for the ground truth, SIRENE for the legal reality): no more ghost listings or closed businesses in the pipeline
  • Every prospect scored 0-100 on the criteria that actually drive the profitability of a refrigerated round — sector, zone, volume, opening hour, reachability
  • Personalised email sequence with D+4 and D+10 follow-ups, plus automatic reply reading: a quote request fires a real-time alert to the owner
  • Zero duplicates by construction: a prospect already approached cannot be contacted again, and any unsubscribe stops the sequence immediately
  • GDPR-compliant from the first line: B2B prospecting on public business data, opt-out honoured in the database, SPF/DKIM/DMARC for deliverability
// story

The story behind

  1. Chapter 01

    The observation

    Zéro Degrés carries chilled, frozen and dry goods for professionals across Paris and Île-de-France, seven days a week. The offer stands up, the van runs — but prospecting happened in the evening, by hand, typing 'bakery Paris 11' into Google Maps and copying addresses into a spreadsheet. The problem was not commercial, it was mechanical: nobody had the time to do that work every single day.

  2. Chapter 02

    Why n8n and not a script

    I could have written a Python script in one evening. But the recipient is not a developer: the owner needed to see the pipeline, understand where it stalls, replay a failed run and adjust a target sector without calling me. The n8n canvas makes the automation readable and every execution inspectable one by one — that is what makes an internal tool survive past delivery.

  3. Chapter 03

    One source was not enough

    Google Places gives the ground truth: the business as it actually trades, its address, its hours, its reviews. But it also returns stale listings, closed shops and duplicates. SIRENE gives the legal reality: SIRET, NAF code, headcount, administrative status. Joining the two on the SIRET is the decision that moved the list from 'raw' to 'usable'.

  4. Chapter 04

    The real problem: never contact twice

    The trap in a lead machine is not finding companies, it is not re-soliciting the same ones. A single business appears under three spellings depending on the source, and the SIRET is sometimes missing. So I stacked two levels: in-run dedup on a SIRET key with a slug(name) + postcode fallback, then a PostgreSQL guard that queries the full contact history before any write. A prospect that entered once can never re-enter.

  5. Chapter 05

    Encoding the cold-chain business into the scoring

    A refrigerated carrier does not want 'prospects', it wants profitable stops on a round. So the scoring prompt carries the criteria that actually drive margin: sector first (a bakery opening at 5:30 am beats an office), then zone and density, volume signal, opening hour, reachability. The LLM weights and writes the pitch; hard exclusions stay in code, where they are verifiable.

  6. Chapter 06

    Compliance as an architectural constraint

    Cold email prospecting in 2026 without getting blacklisted takes discipline: B2B only, public business data, documented legitimate interest, one-click unsubscribe. Rather than restating it in a doc, I wired it in: the opt-out check node is a mandatory gate no send branch can bypass, and the IMAP workflow writes any unsubscribe to the database and cuts the sequence within the minute.

// post-deployment

After going live

📊

Monitoring & observability

Self-hosted n8n on Docker on a VPS, with the Executions view as the main dashboard and an error workflow pushing every failure to the ops channel — the owner sees the pipeline state without opening a terminal.

Stack

n8n (Docker, VPS)n8n Executions viewError Trigger workflowPostgreSQLSlack alerts

Tracked metrics

  • Daily run status and duration (n8n Executions)
  • Quota and error rate on Google Places / SIRENE calls
  • New records kept per run after dedup
  • Hot / warm / cold score distribution
  • Incoming replies classified by intent (quote, interested, later, opt-out)
  • Email bounce rate and opt-outs — deliverability watch
🎯

Production impact

Prospecting went from an evening chore done whenever energy was left, to a process that runs on its own before opening hours. The owner now arbitrates instead of searching.

  • The sales pipeline fills itself: no more manual Google Maps searching or copying addresses into a spreadsheet
  • Records arrive already scored and argued — human time goes to the callback and the quote, not to collection
  • The hottest leads receive their first email the same morning, instead of waiting for a free slot in the week
  • A quote request inside a reply fires a real-time alert: no opportunity lost at the bottom of an inbox
  • No duplicates and no follow-up after an unsubscribe — the domain's sender reputation is protected over time
  • The tool stays operable by a non-developer: adding a target sector or a zone happens in a single node

// results

Target sectors covered10 cold-chain trades
Prospected areaParis + 7 IDF depts
Cross-referenced sourcesGoogle Places × SIRENE
Cadence1 run / day, 5 days a week
HostingSelf-hosted n8n (Docker)

// stack

n8nDockerJavaScriptGoogle Places APISIRENE APIPostgreSQLGPT-4o miniGmail APIOAuth2IMAPGoogle SheetsSlackCronVPSGDPR