I made my job search run itself — twice a day.
An agent pulls fresh SEO/GEO/AEO roles from multiple sources, dedupes and hard-filters, verifies every apply link is real, scores each survivor with a local Qwen model, stores state in Supabase, and emails me a ranked digest. When the early version got noisy, I had it study Jobright.ai and rebuild into a five-phase intelligence system.
The right roles are buried in noise.
Director/Head of SEO, GEO/AEO/AI-search, the right verticals and comp bands.
Hunting for those specific roles across LinkedIn, Indeed, and Google Jobs is slow, repetitive, and easy to miss on.
Job boards are also full of noise: reposts, duplicates, and doorway/spam domains that hijack “apply” links.
I wanted a system that watched the whole market for me on a schedule, understood my actual fit criteria, threw out the junk before it reached me, and delivered a short, ranked, decision-ready list twice a day — so my attention only went to real, high-fit openings.
Build it as a funnel. Run it as an engineering loop.
I wrote a brief and had Hermes build it in phases on a Mac mini, with a local Qwen model on a separate mini doing the scoring. The pipeline is a funnel: fetch → dedupe → hard filters → source-quality verification → AI scoring → store → email digest, on a cron.
I ran it as a real engineering loop. When Indeed and LinkedIn snapshots looked like they were “timing out,” I pushed the agent to root-cause it: the snapshots were actually completing (471–754s) but the 420s poller was giving up early — so we raised source-specific timeouts and added a watchdog. When a morning digest came back full of doorway-spam links, I made the agent follow the links, audit where they really went, and add hard domain disqualifiers plus a Firecrawl landing-page verification layer.
Then I raised the bar: I had Hermes study Jobright.ai (research only), then rebuild ours across five test-gated phases — richer structured scoring, source-quality upgrades, source expansion, a company-intelligence enrichment layer, and production run-reports.
Every phase was validated with tests before moving on — a checkpoint discipline I set after a validation pass caught two real bugs the unit tests missed.
— Engineering principle · test-gated phasesFetch, filter, verify, score, digest.
A twice-daily cron fires the agent. Multiple sources feed a funnel that dedupes, hard-filters, and verifies apply-link quality. Survivors are scored 0–100 by a local Qwen model on a dedicated mini, persisted to Supabase, and emailed as a ranked digest.
A twice-daily cron fires the agent. BrightData, SerpApi, and Firecrawl feed a funnel that dedupes, hard-filters, and verifies apply-link quality to reject spam doorways. Survivors are scored 0–100 by a local Qwen model on a dedicated mini, persisted to Supabase, and emailed as a ranked digest. I ran the QA loop — driving fixes for false timeouts and spam. The pipeline is paused since Jul 1 2026 after BrightData credits ran out.
Agent Runtime
Sources
Scoring
Storage
Delivery
Scheduling / Reliability
One funnel, tuned hard.
Verified from the Slack transcripts and the #job-leads channel history.
A real production funnel run (2026-06-11): fetched 57 → deduped 56 → filters 21 → scored 18 → emailed 18. Structured fit scoring on a 0–100 scale, e.g. Mike-fit 94 · opportunity quality 86 · company fit 82 · confidence high. Fit scores are the pipeline’s automated estimates of Mike’s fit — not employer judgments.
Bugs I drove the agent to root-cause.
Title-gate list → intelligence system.
After studying Jobright.ai (research only), I sequenced a five-phase rebuild — each phase test-gated before moving on — completed in a single day (2026-06-16).
Mike-fit / opportunity-quality / company-fit / confidence, matched vs. missing signals, red flags, and a best-next-action per role.
Direct-apply-URL resolution, freshness gating, and stronger apply-link verification.
Direct ATS discovery across Greenhouse, Lever, Ashby, Workday, SmartRecruiters, Jobvite, iCIMS, Recruitee — plus board discovery via Firecrawl.
An enrichment layer that qualifies each role before scoring — company context added to the decision.
Monitoring, run-reports, and the production email digest. Each phase validated with tests before the next began.
The pipeline was paused around 2026-07-01 after BrightData credits were exhausted. It ran in production and delivered real digests; it is not a permanently-running service.
What it did — told straight.
The left is what the pipeline actually did. The right is the honest boundary, including the pause and the nature of the fit scores.
A scheduled, multi-source discovery pipeline that ran in production.
- Fetched, deduped, filtered, and verified source quality across multiple sources.
- Scored survivors with a local Qwen model and persisted to Supabase.
- Emailed a ranked, human-readable digest twice a day; earlier version posted scored cards to Slack.
- Rebuilt into a five-phase intelligence system — structured scoring, source expansion, company-intelligence enrichment, production run-reports.
- I drove the QA loop: root-caused false timeouts, killed 9/19 spam links, insisted on per-phase test validation.
A personal system, iterated hard — and currently paused.
- A personal job-search system, human-in-the-loop — I directed every phase, ran the QA, and approved scope.
- Paused around 2026-07-01 after BrightData credits ran out; not a permanently-running service.
- Digest quality was a real, ongoing tuning problem (over-filtering early, spam later) — part of the honest story.
- Fit scores are automated estimates of Mike’s fit, not employer judgments.
BrightData, SerpApi, Firecrawl, Apify, Supabase, Qwen/LM Studio, and Gmail are third-party tools. Jobright.ai was studied as a reference, not used or integrated. The work is the pipeline design, the phased build direction, and the QA.
I was the architect, product owner, and QA.
I set the brief and owned the direction end to end — the fit criteria, the phased sequence, and the decision to break the work into manageable chunks.
I ran the engineering QA loop: I caught the spam and the false timeouts, made the agent follow apply links and root-cause failures, insisted on per-phase test validation, and reviewed the emailed digest visually with specific layout fixes. I directed the Jobright study and the five-phase rebuild. The agent wrote and ran the code; I was the architect, product owner, and QA.