The problem: leads are noisy, not scarce
Real-estate sourcing isn't short on data — it's short on signal. Hundreds of listings, repeated across portals, with no sense of which seller is actually motivated. The workflow's job is to compress that into a ranked shortlist you can act on.
The pipeline
- Scrape / ingest — pull listings from your source (portal API, RSS, or HTTP request). Normalize fields: address, price, type, posted date.
- Enrich — fill gaps (neighborhood, price-per-sqm) via lookup nodes or a second HTTP call.
- AI score — an LLM node rates motivation / fit 1–10 from the listing text, returning structured JSON (score + reason).
- Dedupe — hash on address+price; skip repeats already in the sheet.
- Route — score ≥ 8 → Telegram ping with the reason; everything → Google Sheets.
- Log — append to a master sheet with score, source, and timestamp.
Why the AI score node matters
A rule ("price below median") catches cheap listings, not motivated sellers. The LLM reads the copy — "must sell," "relocating," "price drop" — and scores intent. You get a reason you can trust, not a black box number. Swap the model key and the whole scorer upgrades without touching the rest of the flow.
Steal it → Real Estate Lead Enrichment
The import-ready template ships with the scraper, scorer, dedupe, and Telegram routing — plus a test mode that runs the entire thing on dummy listings so your first execution can't touch a live portal. Full breakdown →
The gotchas we solved for you
- Rate limits: the scraper throttles requests so you don't get blocked mid-run.
- Dirty data: a cleanup node strips currency symbols and parses dates before scoring.
- Duplicate storms: the dedupe runs before any AI spend, so you're not paying to score the same listing twice.
- Safe first run: test mode flips every external call to a stub — zero real requests, zero real pings.
What you get
Wake up to a Telegram message: "Hot lead — 14 Oak St, score 9, reason: 'must sell, relocating in 30 days'." The sheet behind it has the full ranked list. That's the whole morning sourcing session, done by a server at 3am.