Automated Lead & Opportunity Monitor
A Python pipeline that does an analyst's research on a schedule, without being asked. You define what a good opportunity looks like. It scours the sources, scores every candidate against your criteria, drops the weak ones, and emails you a ranked shortlist. One click of feedback on any result folds back into the next run.
New-business research dies from being boring. Checking a dozen sources every week is tedious, so it slips, and by the time anyone gets around to it the good opportunities have already closed. This runs whether or not anyone remembers to run it, and it gets more accurate every cycle.
Where this fits
- New-business research
- Watch for companies showing buying signals: a funding round, a new VP of Marketing, a job posting for a demand-gen hire. Score each against your ideal client profile and get back the handful actually worth a personal outreach email.
- RFP and pitch tracking
- Monitor procurement portals and RFP boards for briefs that match the work you genuinely win, instead of hearing about them the week they close.
- Competitor watch
- Track competitors' launches, pricing pages, and positioning shifts, and get told when something actually changed rather than checking by hand and finding nothing.
- Partner and press opportunities
- Surface conference calls for speakers, award entries, and podcast guest slots that fit your positioning, with the deadlines attached.
How it works
- 1Discover
Claude Sonnet, given your target profile and ten focused search queries, uses a web-search tool to scour source sites and return a structured array of candidates.
- 2Dedup
Each candidate's URL is checked against a Supabase table of everything already sent, so the same result never reaches you twice. Anything from a source you previously marked “not a fit” is dropped too.
- 3Validate
Every result is confirmed still live before it reaches you. Static sites get a quick HTTP request. JavaScript-heavy sites need a real headless browser (Playwright), because the raw HTML holds no content until the JavaScript renders.
- 4Score
Claude Haiku, which is cheaper and faster and needs no tools, rates each surviving result 1 to 10 against your fit criteria. Only 6 and above move on.
- 5Persist
Every result checked this run, not just the high scorers, is written to Supabase before the email goes out. That way the instant you click a feedback link, the row is already there to update.
- 6Email
Assembles an HTML digest and sends it via Gmail SMTP.
- 7Feedback loop
Every result carries four one-click links (great fit, company not a fit, type not a fit, both not a fit) that hit an n8n webhook and write back to Supabase. That feedback shapes the next run's prompts, steering the search toward better matches and calibrating the scoring against your past judgments.
Want something like this for your team?
This is the kind of thing I build for clients. Tell me what's eating your team's week and I'll tell you honestly whether it's worth automating.
.png&w=3840&q=75)