Business Intelligence Program.
A custom web scraping pipeline that monitors Job Bank, LinkedIn, and Adzuna for postings from existing clients, scores each match, and alerts the right consultant before a placement opportunity slips away.
The problem
Recruitment consultants at the three sister agencies had a blind spot: existing clients posting jobs on public boards, often with competitors. Their CRM had no way to catch this.
When a client is actively hiring, a recruitment agency has real leverage. A consultant who calls the day a role goes live is in a far better position than one who finds out weeks later, or not at all.
What it does
ClientWatch monitors Job Bank, LinkedIn, and Adzuna for new postings, cross-references each one against the client list across all three agencies, and alerts the right consultant when a match is found.
Matches are confidence-scored using normalisation logic, so a posting from a known client is recognised even when the company name is formatted differently from one board to the next.
How it works
A custom scraping pipeline pulls postings from each source on a recurring schedule, with deduplication and rate limiting built in to stay reliable and avoid hammering the boards.
Confirmed matches are pushed to consultants through Slack integrations across two workspaces and rolled up into an automated digest email every morning. A multi-user dashboard, backed by Supabase, gives the team a shared view of every alert.
Stack
A Python scraping pipeline with Slack API integrations and a Supabase-backed dashboard. Built and maintained solo as a focused tool for a specific workflow.
- Monitors Job Bank, LinkedIn, and Adzuna on a schedule
- Confidence-scored client matching with normalisation logic
- Slack alerts across two workspaces and automated morning digest emails
- Deduplication, rate limiting, and a multi-user Supabase dashboard
Outcome
Generated over 6,000 alerts in its first month across the three agencies.