Agentic Workforce Company
Business Builds · Agentic Data Pipeline

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.

Paused · Jul 1 2026ROLE Architect & DirectorSCOPE Personal job searchAGENT Hermes on a Mac mini
CategoryBusiness builds · data pipeline
Funnelfetch → filter → verify → score → email
Scoringlocal Qwen · 0–100 fit
Scheduletwice-daily cron
StatusPaused · credits ran out
The Problem

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.

The Approach

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 phases
The Pipeline

Fetch, 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.

Fig.01 — hermes-jobsearch pipelinehermes-jobsearch discovery and scoring pipelineA twice-daily cron trigger fires the Hermes agent. Three data sources — BrightData for LinkedIn and Indeed, SerpApi for Google Jobs and direct ATS discovery, and Firecrawl for board discovery and landing-page verification — feed a funnel. The funnel dedupes, applies hard filters on title, seniority, comp and freshness, then verifies apply-link source quality and rejects spam doorways. Surviving roles are scored zero to one hundred by a local Qwen model on a dedicated Mac mini, returning a structured fit score. Scored jobs are persisted to Supabase and emailed as a ranked digest via Gmail. The pipeline is paused after BrightData credits were exhausted.Twice-daily cron~8:45a / 6:45p ETSOURCESBrightData · LI + IndeedSerpApi · Google JobsFirecrawl · verify + boardsDedupesource+id · 60-day repostsHard filterstitle · seniority · comp · freshSource-quality verifyreject spam doorwaysSCORING · LOCAL LLMQwen · mini-030–100 fit · structured JSONwhy_fit · signals · red flagsSTORESupabasejobs_seen · poll_logDELIVERYGmail digestrankedHUMAN · QA + SCOPEMike directs & reviewsPAUSED · JUL 1 2026BrightData credits outQA feedback: spam + timeout fixesMike reviews the digest visually

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

Hermes (Nous Research)Mac mini · mini-02Python · pytest

Sources

BrightDataSerpApiFirecrawlApify (held off)

Scoring

Qwen (local)LM Studio · mini-03structured JSON

Storage

SupabasePostgresjobs_seen · poll_log

Delivery

Gmail DWDHTML + plain-textSlack #job-leads (earlier)

Scheduling / Reliability

cronper-source timeoutswatchdogfreshness gate
By the Numbers

One funnel, tuned hard.

Verified from the Slack transcripts and the #job-leads channel history.

Sources scanned
10
from 3 at launch → 10 after the rebuild
Rebuild phases
5
Jobright-inspired · each test-gated · in one day
Tests passing
67
grew from ~47 across the rebuild
Highest fit score
95
"Director of SEO and Agentic Search"
~24
distinct companies surfaced as scored leads (Stripe, Clio, LaunchDarkly, hims & hers, LawnStarter, more)
9 / 19
digest items caught as doorway/spam in an audit → hard disqualifiers + Firecrawl verification added
2×/day
cron (~8:45a / 6:45p ET) with source-specific snapshot timeouts and a watchdog

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.

Proof Moments

Bugs I drove the agent to root-cause.

False "timeouts"
Symptom420spoller gave up early
Cause471–754ssnapshots actually finishing
Doorway spam
Audit9 / 19digest items were spam
FixVerifieddisqualifiers + Firecrawl check
Other root-causes
Found3+datetime crash · comp parse · asset-URL
ResultFixedtest-gated per phase
The 5-Phase Rebuild

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).

Phase 1
Richer structured scoring

Mike-fit / opportunity-quality / company-fit / confidence, matched vs. missing signals, red flags, and a best-next-action per role.

Phase 2
Source-quality + freshness upgrades

Direct-apply-URL resolution, freshness gating, and stronger apply-link verification.

Phase 3
Source expansion

Direct ATS discovery across Greenhouse, Lever, Ashby, Workday, SmartRecruiters, Jobvite, iCIMS, Recruitee — plus board discovery via Firecrawl.

Phase 4
Company-intelligence enrichment

An enrichment layer that qualifies each role before scoring — company context added to the decision.

Phase 5
Production run-reports + email deploy

Monitoring, run-reports, and the production email digest. Each phase validated with tests before the next began.

Jul 1 2026 · Paused
Credits ran out

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.

Results

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.

● What exists and worked

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.
▲ Honest status · paused & human-in-the-loop

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.

My Role

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.

Skills Demonstrated

What this took.

Agentic workflow orchestrationMulti-source data pipeline designAI-agent direction & phased deliveryLocal-LLM scoring (Qwen, structured JSON)Web-data infrastructure (BrightData / SerpApi / Firecrawl)Supabase / Postgres state managementGmail DWD email automationCron scheduling + reliability engineeringSpam / doorway detectionCompetitive teardown → product specTest-gated QA disciplineDebugging (timeouts, datetime, parsing)

Want an operator who directs agents to build real pipelines — and QAs them?