Buyer intent research pipeline
This started as the weekly company monitor and grew into the whole back end of a sales intelligence business. Collectors find signals, an orchestrator turns them into companies and scores them, enrichers add people and firmographics, verifiers check every email and phone, and a weekly loop re-researches the companies that went quiet. It all runs overnight.
- Runs
- nightly, 28 n8n workflows
- Companies
- about 3,300, 900 in the top two tiers
- Contacts
- 4,000+, every email checked
- Client
- B2B sales intelligence company
Why it exists
The client sells to companies that are about to spend on AI and consulting. The signal that they're about to spend shows up in the news, in hiring, in filings and on company sites, but nobody can read all of that for thousands of companies. The first version watched 200 companies once a week. The client wanted every company they might ever sell to, scored every night, with someone to call.
How it runs
Collect
Several collectors search for signals: funding, layoffs, leadership changes, AI initiatives, regulatory pressure, new hires. Each signal is stored with its source and date.
Match
The orchestrator matches every signal to a company, creates the company if it's new and drops duplicates. A name quality gate stops headline fragments from becoming companies, which was the biggest source of junk early on.
Score
Scoring is plain JavaScript, not a model, so the same evidence always scores the same way. Companies land in four tiers from Tier 1 to Discard, and the tier drives everything downstream.
Describe
Claude writes the description, the fit against the client's offerings and a short problem statement for each company in the top tiers.
Enrich
A resolver finds the company domain, then Apollo adds decision makers for 75 companies a night, highest tier first. Domain coverage for the top tiers went from 75% to 97%.
Verify
Every new contact goes through NeverBounce for the email and Twilio for the phone line type, plus checks against LinkedIn, the company site, GitHub and the domain's mail records. 350 contacts a night.
Re-research
Companies that scored well but went quiet get re-searched every Monday, biggest first, because the small ones return nothing but generic headlines.
Draft
For companies that clear the bar, Claude drafts an outreach sequence and a QA gate checks every claim in it before a person sees it.
What came out of it
The client's team opens the CRM in the morning and the night's work is there: new companies, tiers, people with checked emails and a reason to call. About 3,300 companies are tracked, 900 or so sit in the top two tiers, and 2,800 plus emails have been validated. A cleanup in August took 64 workflows down to 28 without losing a function.
Notes
The expensive lesson: Supabase's REST layer silently caps a response at 1,000 rows. One background worker read its done list unpaged, the list crossed 1,000, and it regenerated the same work every two minutes for five weeks. That was about half of one month's API bill. Every worker that calls a paid API now pages its reads, caps its attempts per day and logs its usage.
The other lesson is that signal discovery is not the same as per company research. A company nobody writes about never improves its score on its own, which is why the weekly re-research loop exists.
Stack
- n8n
- Supabase (Postgres)
- Claude API
- Tavily
- Apollo
- NeverBounce
- Twilio Lookup
- Prospeo
- JavaScript
- Python
Want something like this built?
Tell me what you're trying to automate. Most things can be built in a week or two.