Any system that scores job postings against your resume is going to be wrong sometimes, which means most of the design work sits in what you put in front of a person so they can disagree with it intelligently.
Pharos is a tool I built and run every day: it sweeps a dozen job boards each morning, scores what it finds against my resume, discards anything not worth an afternoon, and hands me three or four postings to actually decide on.
The decisions that carry the weight: the resume is the rubric, so there’s no setup wizard; anything 3/5 or below never reaches the board; and the AI surfaces and scores but never acts — every apply-or-discard call is mine, and none of it is locked in.
What it changed: I stopped applying to everything and started judging fit first, and networking went from a standing guilt to a pipeline with states in it.
Pharos sweeps a dozen job boards every morning before I’m awake, scores what it finds against my resume, throws out anything that isn’t worth an afternoon, and hands me three or four postings to actually decide on. I’ve been running my own job search on it daily since the start of July.
It exists because the alternative was forty applications a week and two replies, one of them a rejection template that didn’t name the role. The loop closes on itself rather neatly: the less you hear back the more broadly you apply, and the more broadly you apply the less any single application is aimed at anything, which is precisely what drives the response rate down. A spiral nobody designed, but everybody ends up in it anyway.


There are tools for this already. Teal and Huntr and Jobscan have been selling versions of it for years at somewhere between thirty and fifty dollars a month6, which is structurally the same arrangement LinkedIn Premium is currently under investigation for — people paying a subscription for better odds of not being unemployed. The worse your situation gets, the more the thing is worth to you. That is a business model with a very unpleasant gradient running through it.
The investigation is real. In July the Texas Attorney General demanded documents4 on whether LinkedIn had been selling Premium on the promise of a job marketplace while profiting from listings that weren’t real openings. Nothing has been filed and LinkedIn says its policies require postings to be authentic, so make of it what you will. The underlying number, though, isn’t seriously disputed by anybody: Greenhouse put ghost jobs at 18 to 22% of all online postings2, one analysis of LinkedIn specifically landed on 27%3, and the Attorney General’s office reckons somewhere between a fifth and a third. Set against roughly 250 applications per opening1, that is a great many afternoons spent on jobs that were never there.
Hinge has spent years marketing itself as the dating app designed to be deleted5, which is a strange promise for a subscription business to make and an entirely coherent thing for a product to aim at. Nobody is going to make it for job hunting, because job boards are advertising platforms whose business model runs on volume, and a feature that reliably told you which postings were worth your time works directly against the metric they’re measured on.
And while I was building mine, a founder in the States shipped Dreamwork, which ranks live roles against your profile and files applications on your behalf, put together over five months after Indeed laid off his pregnant wife7. He arrived at very nearly the architecture I had, independently, on the other side of a border. I found that reassuring rather than deflating, because two people staring at the same broken thing and reaching for the same shape of fix is decent evidence that the shape is right.
The one that mattered most was making the resume the rubric, so the thing reads what you’ve already written and derives its scoring criteria from that, rather than making you fill in a preferences wizard describing a version of yourself you’d have to invent on the spot. Every spreadsheet tracker I’ve ever abandoned asked me to build the system before I was allowed to use it. This one starts working the moment you hand it something to read.
It also inverts the advice everybody gives you, which is to rewrite your resume for every posting you come across. That advice only really makes sense as a coping strategy for spraying applications at volume, and it quietly puts the document on trial in front of each new job description that wanders past. Turning it around so the resume does the judging meant I stopped rewriting myself forty times a week to suit whoever happened to be hiring, which was better for the applications and considerably better for my sanity.


That screen is where a person is genuinely in the loop. Everything upstream of it happens without me and is meant to, and everything downstream is me pressing one of two buttons. The entire job of the interface is to get somebody to a decision they’d be willing to defend, in about forty seconds, on reasoning they can argue with rather than a number they have to take on faith. Which is why the domain score sitting at 4 while everything else sits at 5 is the most useful item on it — the machine noticed the same soft spot I would have, and it tells me which part of my background is going to have to do the heavy lifting.
Anything scoring 3/5 or below never reaches the board, which is a position taken on your behalf before you’ve finished your coffee, and all of it is still sitting there if you want to go and argue with it. The rule underneath that, and underneath everything else, is that nothing it does is allowed to be irreversible. It can surface and score and recommend as much as it likes, but every actual go or no-go stays with you, because you’re the one who remembers getting ghosted by these people last spring.
On the networking side, contacts link through to organizations so you can see the whole picture at any given company, and anything untouched for fourteen days gets flagged as stale. What kills networking has never once been bad outreach; it’s forgetting to follow up on the good outreach because something else got in the way.
I built all of this with Claude, and I am not an engineer and didn’t become one along the way. The arrangement was closer to having a very fast, very literal engineering partner with no opinions whatsoever about the product: I specified, it built, I used the result the following morning and came back with what was wrong. The daily sweep runs as a scheduled task that spawns its own sub-agents, the dashboards are plain HTML and JSON served by a small Python process, and the integrations run over MCP. None of that is impressive engineering, and it didn’t need to be.
It was never a UI project either. There’s no design system in here and no deliberate visual language — the interface reaches for whichever convention was nearest to hand and otherwise stays out of the way. The driver the whole time was having something that ran by the next morning, and every screen exists because the thing had to work before it could look like anything at all.
What didn’t delegate was the judgment. Deciding the resume should be the rubric instead of a preferences form, deciding a 3/5 vanishes rather than sitting on the board making you feel guilty, deciding those two buttons are the only irreversible things in the whole system. All ordinary design decisions, and all of them took the time design decisions take, because a model will happily build whatever you describe and has no stake in whether your Tuesday morning goes well. The whole thing came together over a few weeks rather than the several months it would once have taken me just to specify it for somebody else to build.
None of this is one model answering one question. It’s a pipeline that keeps narrowing what deserves your attention, and every place where it narrows is a decision about where judgment belongs.
The same logic decides how much effort any one posting has earned. Links only get checked for the ones that already scored 4 or 5, because there’s no sense burning a round-trip confirming something that got thrown out three steps earlier, and the check only fans out across several agents when there are three or more links waiting. Both of those read like engineering optimizations right up until you notice what they’re actually doing, which is refusing to spend your morning on things you were never going to apply to.
It started as a single agent working down a list. That stopped being viable the moment there were ten sources to sweep, because a serial run is hostage to whichever board happens to be slowest that morning. So it became a multi-agent architecture, and that turned into its own design problem — no longer the familiar question of what the AI shows the user, but the stranger one of how several AI actors ought to coordinate before anything gets shown at all.
Phase 1 — parallel
↓
Phase 2 — serial
↓
↓
Phase 3 — conditional
↓
Phase 4
The split follows the judgment. Collecting postings is commodity work with nothing to weigh, so it fans out across agents that never need to know about each other, while scoring and deduplication and presentation all carry judgment and come back through a single agent holding the whole picture. The human checkpoint sits at the end rather than somewhere in the middle, which matters more than it sounds like it should, because you get asked to decide once against a short list instead of repeatedly against a long one.
I stopped applying to everything and started evaluating fit first, which sounds obvious written down and took a piece of software to actually make happen. The rubric gave me something I hadn’t expected, which was permission to skip a posting without guilt, because when the reasoning is sitting right there in front of you it’s much harder to agonise about whether you’re being too picky. It also gets there first more often than not: on a typical morning three out of five new postings are already scored and waiting by the time LinkedIn decides to send its daily digest. And networking stopped being a permanent shapeless guilt and became a pipeline with states in it, which I’d have called a trivial change if the staleness flag hadn’t gone on to alter my behaviour more than every advice article I’ve ever read put together.
The hardest part of designing for AI turns out to be the seam between the algorithm and the person standing in front of it. A score of 4/5 is an opinion, it might be wrong, and you have to hold both of those at once without concluding the whole thing is useless. A narrow gap to aim at: show too little of the reasoning and you’ve built a black box; show too much and you’ve buried the decision in the middle of it.
Trust gets earned in unglamorous ways: reasoning you can actually read, overrides that take one click, and some grace about the times it gets things wrong, which it will. It shows its work, disagreeing costs you nothing, and whatever you need in order to decide is already on the screen.
I built Pharos because nothing else worked and I needed something that did. It turned out to be the most instructive design problem I’ve had my hands on in years, because the material itself — non-deterministic outputs applied to decisions that actually matter to somebody — demands a kind of thinking that no amount of making the button bigger will ever get you to.
Which is, in the end, the name. It throws light on the water: the scores, the reasoning, the postings that were never real jobs. Then it stops there, because a lighthouse doesn’t steer the ship.