Project Snapshot
Half of job searching is routine: refreshing boards, decoding titles, checking location and seniority fit. I built a system to take that work off my hands. Every morning it scans 86 target companies, filters and scores what it finds, and pushes anything worth my attention to Slack. The design question underneath: which judgments belong to rules, which to AI, and which stay with me.
Result
Running daily since March 2026 and rebuilt once along the way, it watches a company list no manual browsing could sustain.
86
Target companies scanned daily
98%
Filtered by rules before AI scoring
46
Roles surfaced from 6,653 processed
Why Build My Own
Ready-made scrapers from GitHub solve a volume problem; mine was a judgment problem.
The same Product Designer title can mean visual execution or product strategy, and my criteria are personal, down to city-level location rules, and they evolve as the search progresses. An off-the-shelf tool would freeze my judgment inside someone else's defaults, so I built my own.
From Quick Proof to Rebuild
V1: proving the concept in no-code
V1 was built in Make with one goal: test whether AI could genuinely share the screening work.
One pipeline scanned job board RSS feeds, scored roles with AI and pushed a daily digest to Slack. The proof held at minimal build cost: AI judged relevance reliably, and the daily push changed how I browsed jobs.
3 months of use exposed the ceiling
Three structural limits emerged:
The RSS sources skewed to remote roles and missed my real market
The data store kept forgetting what it had seen
The CV advice ran too shallow to use
I tried repairing it, but the capability I wanted most, watching target companies directly, could not be built on that platform. The ceiling was the platform, not the configuration.
Rebuild, and reverse the approach
So I killed it and reversed the strategy: no more wide nets across job boards. V2 watches my target companies directly, through their recruitment platform APIs. The list is mine, the criteria are mine; the system's only job is to bring me what changes across those companies each day.
V2: How It Works Now
V2 is a Python system built with Claude Code, running daily on GitHub Actions.
The flow fits in one sentence: query 86 companies' ATS APIs, filter the obviously irrelevant with rules, let AI read the full description and score the rest, and push anything above threshold to Slack. I am not an engineer, and it never became a blocker: I set direction, judged output and vetoed what was wrong; Claude Code implemented.
Where Judgment Lives
What can be written as a rule goes into code?
Location range, title tier, excluded keywords: these judgments need consistency, not intelligence. The rule layer absorbs 98% of all volume at zero cost, before anything reaches AI.
What requires reading context goes to AI?
What a role actually involves, and whether it genuinely fits, can only be judged from the full description; no rule can express that. Titles like content strategist can mean embedded product content or marketing copy. Claude Code suggested dropping the ambiguous keyword; I chose to keep it and push the judgment down to the AI layer, where the context lives. When a rule lacks resolution, move the judgment, not the coverage.
The final decision stays with me (important!)
Whether to apply is always my call. A handful of companies could not be fetched automatically, and rather than forcing a scraper, I settled on a weekly manual check with an automated reminder. Not everything deserves automation; maintenance cost is a design consideration too.
The Numbers
6,653 roles processed to date. Only 65 needed AI scoring, and 46 reached my Slack. Rules run free; AI is spent only where judgment is genuinely required.
Outcome
V2 fully replaced V1 in July 2026. Roles it surfaced have entered my actual application pipeline, and the watch list has stayed maintainable without daily effort from me.
Reflection: AI filters, I judge and decide
Designing an AI system is deciding where judgment lives.
Misplacing any layer carries a cost: context judgments forced into rules kill good candidates, rule judgments handed to AI waste money, and human decisions handed to the system destroy trust. The judgment map is now the first thing I draw.
The three-layer frame reuses beyond job searching: any workflow with high-volume input and a small fraction worth acting on runs through the same questions.
The project also tested a working method: I owned direction, acceptance criteria and the veto; AI owned implementation. That division has become my default way of leading technical builds.







