What You Do on Tuesday
I vibe-coded a pipeline that reads hundreds of job listings a week, out of which only one in a thousand is actually worth applying for.
Saturday morning, and here I go again: thirty browser bookmarks, each one a different job board. Some encode the filters in the URL, which saves time, while the rest want me to click through their finicky JavaScript menus. I open the bookmarks one by one, scroll through hundreds of listings, and when I close the laptop I feel worse than when I opened it.
No standard filter captures what makes my experience valuable or unique. A PhD in theoretical physics, ten years of machine learning infrastructure experience as an engineer, six years as a technical product manager, a certification in audio engineering, and 235+ essays read by more than 12,000 people (and bots) every month, with honourable mentions in international competitions.
A recruiter reads “product manager” and matches me against every open PM role in the market. Work in fintech once and you are a fintech PM forever, because recruiters’ lists are filled with fintechs. The fact that I worked in infrastructure in semiconductor manufacturing for nearly a third of my career does not register, because their clients are never in semiconductor manufacturing. Not that it matters when the thread through my career has been data, machine learning, and infrastructure.
“Remote (US only)” is not remote from Argentina. When the job description mentions security clearance, or a benefits section lists 401(k), it is primarily for US-based people, even though it may say “Remote” near the header. Most listings offer no salary information at all, but when they do, the range needs to be well above my minimum, because at 42 I have enough experience to know when I am being low-balled or when a company only needs a PM to babysit engineers. Certain industries (e.g. ad tech, tobacco, gambling) are not worth my time. Nor are companies that have ghosted me in the past or behaved strangely in or after interviews.
The initial filter took an afternoon of back-and-forth with ChatGPT. I described jobs that looked good on paper yet turned out rotten, and when ChatGPT asked what specifically was rotten I had to admit that “product manager” can mean building a strategy from a blank page or keeping someone else’s Jira board tidy, and that the title does not tell you which. I had always known what bored the pants off me and what did not, but I had never articulated it clearly enough that a machine could act on it.
Afterwards, I had Kimi K3 turn that into a spec and subsequently a standalone app called JobsWorth. A jobsworth, in British slang, is the petty person who will not help you because helping is more than their job’s worth. The pipeline flips it around though: JobsWorth finds the jobs worth looking at, and most are not.
It scans about twenty boards and runs more than sixty queries against their APIs, and drops whatever fails the hard filters: remote, salary, industries, companies, or titles. It then checks the survivors’ descriptions and hands the few that remain to an LLM with my profile and three questions:
- Can I get through the door on location, salary, seniority, and credentials?
- Does the job need the combination of things I excel at, or could a conventional PM, researcher, or writer do it equally well?
- What does the person who does this job spend their Tuesdays on?
A career is about two thousand Tuesdays. Job descriptions explain how you will spend a good chunk of them. If the answer to the Tuesday test is a sprint planning session where success is measured by how many engineers remain awake throughout, JobsWorth scores it a solid zero out of three points. Similarly, if the backlog comes from someone else, no thanks.
The model is not permitted to fill in blanks: no salary in the job description means “salary not listed” and the score stops at two, because a job that might pay enough differs from a job that actually does. “Competitive pay” is worthless without numbers.
The pipeline is equally ruthless about the difference between “I could learn this” and “This is not what I do”. Fluent Spanish is out, because mine is conversational at best. US work authorization or security clearance is out, because I work from Latin America. Travel to clients is also an immediate exclusion. Deep domain expertise in chemistry, clinical trials, or nuclear engineering is out too.
Over the first weeks of running JobsWorth, it went through 3,533 unique listings across twenty boards, with only three worth applying to. The pipeline is designed to miss good jobs rather than flood me with mediocre ones. It reads every listing, which I never could, and it applies the same filter on a Saturday morning as on a Tuesday afternoon. That is good enough.
It runs once a week on Richmond, the Hermes agent fleet I set up to run autonomously. DeepSeek V4.1 Flash is the current LLM behind it, but Jev also independently grades listings that pass all filters. I noticed that an LLM sometimes missed an interesting role because it had misread the description or had hallucinated parts despite my best efforts to constrain it, which is why I added Jev as a second judge. Since Jev costs fractions of a cent and less than a second to run on a batch of listings, it is a cheap insurance against the LLM being off.
Once a month, a separate prompt sends Richmond hunting for organizations I have never heard of that might have the right kind of role. Each run verifies headquarters and their remote policy from the careers page, and it addes the survivors into the scan’s organization list. Rejected organizations go into a log, so the same unsuitable employers are never rediscovered.
I have no plans to open source JobsWorth, because it is vibe-coded, and the reason it is vibe-coded at all is that integrations with job boards are not high on my list of things I care to spend time on. The idea is worth sharing: most people looking for work have a filter in their heads they have never articulated finely enough to automate. What a job description would have you do on a Tuesday is what you must check against what you want to do on Tuesday. An afternoon with an LLM can extract it.