Motivation
The LinkedIn job feed surfaces the same postings repeatedly, buries relevant roles under sponsored noise, and offers no way to track which listings you've already seen. A one-hour n8n workflow fixed all three.
What it does
- n8n polls 4–5 saved LinkedIn searches on a daily schedule
- Raw results are deduped against a Postgres table of seen job IDs
- New postings are enriched: company size lookup, keyword extraction from the description, seniority classification
- A digest email is assembled with the new roles sorted by relevance score
- Seen IDs are written back to Postgres
Relevance scoring
Simple heuristic: each posting gets points for matching keywords (data engineer, kafka, airflow, iceberg, python), loses points for mismatches (react, frontend, sales), and gets a bonus for Beirut/remote locations. Not ML — just a weighted keyword match that took 30 minutes to tune.
Result
From ~80 daily LinkedIn notifications to 3–5 genuinely relevant roles per digest. The noise reduction alone was worth the hour of setup.