Devin Huber
Claude · scheduled agent

Job Board Intelligence Agent

A scheduled Claude agent that searches three job sources every morning, keeps only roles that are genuinely AI-scoped, never sends the same posting twice, and emails a short, phone-friendly digest.

For a businessReplaces hours of daily job-board scrolling with a short list of roles that actually fit. The same pattern works for any daily sourcing task: leads, vendors or candidates.

Built for
My own AI job search (personal)
Model
Claude, running unattended
Sources
LinkedIn alerts (Gmail) · Indeed · ZipRecruiter
Schedule
Daily, 10am
180+roles recommended directly, zero repeats
~4,000job postings screened
48hpriority-apply flag

01 · ContextThe problem

Job boards bury the handful of genuinely AI-scoped roles under postings that mention AI once. Scrolling through them by hand every day wastes the time the search is supposed to save.

The first version of this digest made it worse: it chased a daily number of roles, padded the list with generic jobs that barely touched AI, and kept resending postings that had already gone out.

02 · PipelineHow it works

  1. Wake up on schedule

    A Claude scheduled task runs every morning at 10am with Gmail, Indeed and ZipRecruiter connected. It is written to run start to finish with nobody watching.

  2. Read its own history

    Each run starts fresh, so its past emails are its memory. It reads 21 days of sent digests, builds an exclusion list of company and title, and skips duplicate threads.

  3. Mine LinkedIn alerts

    LinkedIn has no connector, so six saved LinkedIn alerts arrive by email. The agent extracts title, company, location, posting age, applicant count and apply link, and rebuilds any corrupted tracking link into a clean job URL.

  4. Search Indeed and ZipRecruiter

    It rotates through roughly 28 AI and automation title families each day to surface new postings, batches Indeed calls to stay under rate limits, and pages through ZipRecruiter's five-result responses.

  5. Apply the relevance bar

    A role only passes if its title names an AI or automation function, AI is a primary responsibility, or building automated workflows is the core job. AI-as-one-bullet roles, boilerplate mentions, pure engineering jobs and aggregator listings are dropped.

  6. Verify and label

    Promising finds get a verification attempt on Indeed. Anything it can't verify is labeled as unverified, and ZipRecruiter salaries are flagged as possible estimates.

  7. Rank and send

    Newest first, with anything under 48 hours marked priority-apply. One HTML email explains why each role cleared the bar, with a one-line count of what was reviewed, filtered and sent.

03 · ChoicesDesign decisions

Quality over volume

There is no target count. Three strong roles beat three strong roles plus four hopefuls, and a day with nothing good gets a two-line email instead of filler.

Salary as a diagnostic, not a filter

A pay band far below the market for AI-scoped work flags a role for a closer look, but postings without salaries are kept, since many of the best leads don't list one.

Stricter when it can't see the description

If a posting's description can't be verified, it is judged on title and employer, and the bar gets tighter rather than looser.

An honest failure mode

If connectors drop, it reloads them and retries. If everything is down, it still sends a short email saying what failed, because silence looks like a quiet day.

04 · EvidenceHow I tested it

Tuned against real digests. Earlier versions that chased a daily count padded the list with roles whose salary floors ran far below genuinely AI-scoped roles, which is what led to replacing the quota with the relevance bar.

Each change came from reading what actually arrived: repeated postings, broken LinkedIn links, unverifiable descriptions and source outages all became explicit rules.

05 · IterationTuning log

  1. Quota removed
    A target of 10 roles a day produced padded digests. Replaced with a relevance bar and no minimum.
  2. Repeats
    The same postings arrived day after day. Added the 21-day sent-mail exclusion list.
  3. Broken links
    LinkedIn's plain-text conversion corrupted tracking IDs. Rebuilds clean job URLs and says so.
  4. Location
    Excellent matches now surface regardless of location, marked as needing remote flexibility or relocation.

06 · Honest notesKnown limits

  • ZipRecruiter returns no job descriptions, and its salaries are often algorithmic estimates.
  • Indeed rarely indexes postings found on LinkedIn, so many descriptions can't be verified.

Want to see this one run?

I'll screenshare the workflow, the test set and the results, including what didn't work.

Get in touch