Work jobpipe

Reading 8,600 job postings so I only read thirteen

Most of a job search is reading listings that were never a fit, so I built a tool to do that part. Every morning jobpipe pulls job postings from company career pages, Workday, remote job boards and Indeed into one SQLite file. Simple rules filter out 93% for free. Claude scores the rest, quoting the posting to confirm a role is really remote. The best matches get a tailored resume, fact-checked by code against my real one, and the strongest of those get the application sent automatically.

Install it

npm i -g @toryr/jobpipe

then jobpipe init · Node 22.18+ · npm · GitHub

~/jobpipe
$ jobpipe screen --allScreened 8624. 597 passed, 8027 ruled out.   5792  too-senior   5218  not-remote   2566  outside-us   1496  wrong-function    649  deep-specialist    307  office-days-required
$ jobpipe statsjudged     248  NO      201  WEAK    34  FAIR    10  STRONG  3
Role
Sole author, and its first user
Stack
TypeScript · Node 22 · SQLite · Claude Code · Playwright MCP
01

Free filtering first, AI only where it counts

Having Claude read a full job description is the one step that costs anything, so it comes last. Everything before it is free: one request per company job board, a screen of named rules (a seniority word in the title, a salary range below my floor, a security clearance, required office days), and removing duplicates across sources.

The rules only act on clear evidence. Anything that needs judgment passes through to Claude, so every promising posting gets a proper read.

02

Tuning each rule by what it filters on its own

Every filtered posting records every rule that matched it, not just the first. That makes tuning simple arithmetic. In one early run the job-family rule matched 1,261 postings but was the only reason in just 13, while loosening the seniority rule would have brought back 397. So I knew exactly which rule to adjust.

Each change starts with a real posting and a test written from it. That's how three tricky cases are now covered for good: a Roman numeral that made "Senior Engineer II" look junior, "London, UK" matching a US state code, and benefits text saying "remote" on an office job.

03

Every "remote" job is verified against the posting

Job boards' remote tags are a starting point, not the final word. Claude has to quote the exact words in the posting that make a role remote, and only roles it confirms reach my queue. I added this after spotting two listings early on that were tagged remote but turned out to be on-site.

The same job often shows up in several places: the company's own career page, a remote feed, and Indeed more than once. jobpipe compares only the copies that passed every rule and keeps the company's own posting, since that is where the application goes. The US-remote version of a role always wins over a London one.

04

Automatic applications with checks built in

Automatic applying runs inside a clear lane. A posting qualifies when Claude scored it 4 or 5, confirmed it is remote and saw no ghost-job signs, and when it is on the employer's own Greenhouse, Lever or Ashby page. Everything else waits in my queue for me to review.

Before anything is sent, the tailored resume passes a fact check in code: every number, employer, tool and product has to appear in my real resume, and the contact header must match. A fresh, private headless browser then fills in the form. It stops at account sign-ups, passwords, CAPTCHAs and on-site requirements, and it applies to each job once.

05

What it moved

Postings collected into one store
8,624
Filtered out before an AI reads anything
93%
Dependencies: just Node and its built-in SQLite
0
Tests, with every screen bug pinned as one
48