Filtering Freelance Leads: Recency Windows and Job‑Board Rules in My Home‑Hosted Scanner
说明与用途
作者为自由职业工作板扫描器构建了过滤层,通过应用最近窗口和板特定规则,将结果限制为新鲜帖子并消除噪音。
问题
Freelance job boards return stale or noisy listings, making it hard to identify fresh, relevant opportunities for personal projects.
结果
The filter pipeline reduces noise and stale data, delivering a focused set of fresh freelance leads to Slack.
工作流
- 1. Cron job triggers Node.js script every 30 minutes.
- 2. Script fetches raw JSON feeds from each board.
- 3. Normalises payloads into a common shape (id, title, board, postedAt, budget, description, url).
- 4. Applies recency filter based on per‑board window (config/recency.json).
- 5. Applies board‑specific rules (upworkRule, freelancerRule, guruRule).
- 6. Sends surviving leads to Slack via webhook.
证据
When I started scanning freelance job boards for my own projects, I quickly ran into two problems: most listings were stale, and each board had its own quirks that made a naïve scraper return a lot of noise.
The scanner runs on a modest Raspberry Pi 4 that I keep in my garage.
A cron job triggers a Node.js script every 30 minutes.
The filter reads this file at start‑up: // src/filters/recency.js ... const minutes = recencyConfig[job.board] || 60;
I encode these as small predicate functions: // src/filters/boardRules.js ... function upworkRule(job) { if (job.budget === 0 && !/fixed-price/i.test(job.title)) return false; return true; }
- 记录日期: 2026-11-01T23:14:09.659Z