AI Workflows · 2026

Building an AI assistant that screens 1,300+ job postings a quarter

How I turned “is this job worth my time?” into an explainable rubric, a pipeline that runs every weekday morning, and a brief I can read in 30 seconds.

1,321
postings screened and logged
64
weekday runs, unattended
5.7%
surfaced as “Pursue”
~1 hr
saved per day (my estimate)
Role
Sole designer & operator
Built with
Claude scheduled tasks & skills · Gmail · Notion · Python
Data
My own job search · Jul 22 – Oct 21, 2026

This page covers design and build. How accurate the scores are is the next study — see the end.

01 The problem

The decision: where do today’s tailoring hours go?

About 20 new postings arrived every weekday (up to 87 on a Monday), many of them reposts. Triaging them by hand cost about an hour a day, all to answer one question: which two or three roles get a tailored application today?

What I owned

  • The rubric and scoring rules
  • The pipeline architecture and sign-off gates
  • The brief’s design
  • Diagnosing every failure

What stays human

  • Which roles to apply to
  • Approving each step before it’s written
  • Every application I submit
  • Changing the criteria
02 Architecture

Three scheduled tasks, one source of truth

Each stage does one job. Nothing downstream edits what’s upstream: the digest and brief are rebuilt from the tracker every time.

Design rule:

Select any stage to see what it does and the rule behind it.

03 Measurement

Making “fit” explicit

My criteria are a written rubric. Must-haves and red flags reject a role outright; everything else starts from a base-fit judgment and moves by named amounts.

Must-haves

Fail one and the role is rejected
  • New York area, or remote
  • A pay floor (top of band)

Red flags

Automatic reject
  • ML engineering dressed as “data science”
  • Posting closed to applicants

Boosts

Raise the score
  • A 0–3 year experience bar
  • Fresh posting, few applicants

Penalties

Lower the score
  • Reposted or stale (heavy)
  • 5+ years, or a Staff/Lead title
Every score shows its working

Real postings from the tracker; employers generalized.

04 User experience

Designed for a 30-second glance

I was the user, so I iterated daily. Every feature exists because an earlier version made me read too much or misread a good role.

morning-brief.html

Wednesday · October 21 2026

Morning Brief5

“Small, steady steps beat the occasional sprint.”

Needs attention

  1. Follow up with a recruiterOverdue · 1 day

    A quick networking task marked Immediate in your job-search task tracker.

  2. Prep notes for Friday’s callDue today

    A deep-effort task marked Immediate in the tracker.

Job search digest

See the full rundown — 21 postings evaluated, 19 passed over, 3 pre-screened out on title ⏭️ — in the rendered digest.

  1. Marketplace Co. – Data Scientist, Payments4

    Pursue, 7/10 — a core SQL, experimentation and statistics match with a 2+ year bar, but over 100 people have already applied1 Salary +0 · match alone ≈ 7/103, in today’s job digest.

  2. Insurer Co. – User Experience Researcher 🔄2

    Maybe, 6/10 — mixed-methods research that names a cognitive psychology PhD as a plus, but it was reposted two days ago. Salary +0 · match alone ≈ 6/10, in today’s job digest.

Newsletter

  1. A new pay-benchmark report for analytics roles

    One new issue since the last run, with a section on how research teams are hiring this quarter, in the newsletter digest.

  1. 1

    Two-sided blurbs

    Each role gets its strongest positive, then its biggest catch, in one sentence. Added after early briefs listed only the negatives, so 7/10 roles read like rejections.

  2. 2

    Markers you can scan

    🔄 reposted · 🆔 relisted under a new ID · ⚠️ page didn’t fully load. Reposts always sort to the bottom of their section, because they rarely convert.

  3. 3

    Pay, separated from fit

    A chip shows how many points pay added or took away, so a strong match is never hidden by a pay rule — and I can see the job match on its own.

  4. 4

    Two links, two jobs

    The title opens the posting; “in today’s job digest” jumps straight to that role’s full card, with every field and factor.

  5. 5

    A locked layout

    One unattended run quietly redesigned the page, and the regression lasted five days before I caught it. The layout is now a written contract: no change unless I ask for it in words.

Mockup with placeholder content, rebuilt with the real brief’s styles.

05 Detail

One click deeper: the full digest

Every role in the brief links to its card in the day’s full digest, where everything behind the score is laid out — and where the roles the brief leaves out still get a line.

job-digest-2026-10-21.html

Job Search Digest — 2026-10-21

21 postings evaluated: 1 Pursue, 1 Maybe, 19 Pass. 2 previously-evaluated listings reappeared and were skipped.

Pursue
Marketplace Co. — Data Scientist, Payments (7/10)
Verdict: Pursue — 2+ year data scientist role centered on SQL, experimentation and statistics, no machine learning required
  • Compensation: Not stated in posting
  • Min years required: 2+ years in a data science, analytics or quantitative role
  • Location: New York, NY (Hybrid)
  • Date posted: 2 days ago (not reposted)
  • Must-haves failed: None
  • Nice-to-haves hit: 2+ year bar (strong boost); primarily quantitative; no production ML
  • Negatives: Over 100 people clicked apply
  • Matches: Advanced SQL (daily querying and pipeline work on the hedge-fund research platform); Python and R for statistical analysis; designing and analyzing controlled experiments (20+ in the PhD); building metrics where none existed (behavioral metrics for investment staff); dashboards for decision-makers; turning analyses into recommendations for non-technical stakeholders
  • Misses: Payments or fintech domain experience; fraud and risk metrics (listed as preferred); event data at very large scale
  • Notes: Full description loaded; still accepting applications. Workplace type confirmed from the posting header. Strong methods match, and the crowd of applicants is the only real drag.
  • 1
Base fit 6: (SQL, experimentation, stats; no ML)+2: 2+ yr bar−1: >100 applicants+0: Salary (not stated)→ 7/102
LinkedIn posting Tailor5 · Source email
Maybe
Insurer Co. — User Experience Researcher (6/10) 🔄
Verdict: Maybe — strong mixed-methods UXR fit with a cognitive psychology PhD listed as a plus, but reposted and over 100 applicants
  • Compensation: Listed in posting (omitted in this mockup)
  • Min years required: 4+ years (a PhD in HCI or cognitive psychology listed as a bonus)
  • Location: New York, NY (Hybrid)
  • Date posted: Reposted 2 days ago
  • Must-haves failed: None
  • Nice-to-haves hit: Cognitive or behavioral-science background wanted; 4+ year bar is close to my level
  • Negatives: Reposted 2 days ago (heavy); over 100 people clicked apply
  • Matches: Mixed-methods research from planning through synthesis (consumer and packaging studies at a product-design consultancy); behavioral data analysis (decision-making metrics on the hedge-fund platform); survey design and Qualtrics programming (legal-industry survey work); communicating findings to design and product partners; PhD in cognitive psychology (named as a bonus)
  • Misses: Healthcare or insurance research experience (bonus); research on consumer-facing AI products; Spanish proficiency (bonus)
  • Notes: Reposted, but kept for a full read because the title scored 7+ on the quick check. Methods and pay fit well; the repost and applicant volume pull it down to Maybe.
Base fit 8: (mixed-methods UXR; cognitive-psych PhD named as a plus)+1: behavioral background wanted−2: Reposted 2 days ago−1: >100 applicants+0: Salary→ 6/10
LinkedIn posting Tailor · Source email
Previously Evaluated (skipped)
Pass
  • Retailer — Product Analyst (4/10) 🔄: a good fit, but reposted and first listed a month ago. Link
    Base fit 7+2: 0–3 yr bar−2: Reposted−2: first posted ~1 mo ago−1: >100 applicants→ 4/10
  • Consultancy — Senior Consultant (2/10): requires up to 50% travel. Link
    Base fit 4+1: posted 1 day ago+1: <50 applicants−3: travel up to 50%−1: 4–6 yr bar→ 2/10
  • Bank — Software Engineer (1/10) ⏭️: pre-screened out on title alone; never loaded. Link
  • + 16 more, one line each
  • 4
  1. 1

    Every field, not just the verdict

    Pay, years bar, location and recency, plus matches and misses against my resume, each citing the experience behind it. Every Pursue and Maybe gets the full card.

  2. 2

    The score’s working

    The same factor chips as the waterfall above, ending in the total.

  3. 3

    Repeats shown, not re-scored

    Listings I’ve already seen keep their original score. A ⭐ flags a returning Pursue, the most actionable line on the page.

  4. 4

    Passes in one line

    Each rejection shows its deciding reason and chips, so I can audit it in seconds. ⏭️ marks roles skipped on title alone.

  5. 5

    One click to act

    “Tailor” starts a tailored-resume request for that role, pre-filled.

Mockup with placeholder content, rebuilt with the real digest’s styles.

06 Debugging

The hardest bugs returned confident wrong answers

In week one, 42% of postings came back without a description, yet the scores still looked complete. I listed the possible explanations and tested each one.

✗

Window too small?

Already full-size; resizing changed nothing.

✗

Background tab paused the page?

Forced it to “visible” — still nothing.

✗

Rate limiting?

The same postings loaded instantly, back to back, from another source.

✓

A background request the page depends on failed every time

Confirmed in network traffic. A server-rendered source returned all 22 test postings.

42%
descriptions missing, first audit (42 of 101)
0.3%
missing since the fix (3 of 895)
All 42 early failures were later re-fetched. Failed rows are flagged and retried, so a bad morning never leaves a permanent gap.
07 Iteration

Its own logs changed the design

The tracker doubles as usage data. It showed that most of Monday’s pile was reposts.

Share of new listings that were reposts

Jul 22 – Oct 21. Hover or tap a bar for counts.

The change: Monday triage mode. Reposts were 61% of listings on Mondays and Tuesdays, against 23% later in the week. Now, after a weekend, every listing gets the cheap checks but only the 25 most promising get a full read; the rest are logged, not lost.

Counts come from the system’s own tracker, Jul 22 – Oct 21, 2026. Employer names in examples are generalized, the brief shown is a mockup with placeholder content, and pay thresholds are omitted.