Stop Doing a Database's Job by Hand
Every morning it’s the same loop. Open LinkedIn Jobs. Open the tab you keep pinned for Indeed. Open the three startup boards, the YC one, the two niche remote ones. Scan each for what’s changed since yesterday. Half of it you’ve already seen and dismissed. A quarter is stale, reposted or expired or filled weeks ago and never taken down. What’s left, you read a description written by someone who has clearly never done the job, and you decide, again, that it isn’t for you. Then you close the tabs and do the whole thing again tomorrow.
You just ran a query. By hand. Against six databases that don’t talk to each other, with no index, no dedup, and no memory of the last time you ran it. This is the job search the way everyone is taught to do it, and it has a name: it’s a pull model. You are the query engine.
Every engineer knows the other option, because we build it for a living. You don’t poll a service every few seconds asking “anything new?” You register a callback and let it call you when something actually happens. Polling versus interrupts. cron versus a webhook. We solve this in our own stacks without thinking about it, then go home and run our careers on a busy-wait loop.
The pull model charges rent
And you pay it before breakfast. Most of what you scroll is already dead. Across the companies OmniGrade tracks, roughly two in five engineering roles still listed on a given morning were posted more than 60 days ago, which is past the point most engineering jobs get filled. The median live listing has been up for about eight weeks. It’s a corpse, and nobody took it down. Because the board has no memory that you rejected a role, it shows you the same corpse tomorrow, and you re-filter it. The same job is posted to the company’s own site, to LinkedIn, to Indeed, and to whatever aggregator scraped all three, so every board you open hands you the same role again, and you deduplicate it across your tabs, by eye.
The filters the boards hand you run on keywords and a location dropdown, bolted on after everything is already ingested. So the thing you actually care about, whether it’s really remote or “remote, three days in the SF hub,” whether it clears your number, whether it’s your seniority or two levels under, you can only check by opening the posting and reading it yourself. The board has quietly made you the last line of filtering.
That’s backwards. Filtering should be the first thing that happens to a listing, not the last, and it should happen before the listing ever reaches your eyes.
Do this instead
You open OmniGrade once. Everything is already presorted, prefiltered, and cleaned against your settings. No tabs, no scanning, no deduping by eye. We read around 1,173 new roles a day. Each one is read in full and scored against your actual CV (salary, seniority, location reality, and how close the role is to what you already do), the cross-posts are collapsed into one, and everything that was never going to clear your bar is already gone before you wake up. What’s left is a short list you didn’t have to build.
Today · 3 to apply
Good morning, Martin.
I scored 1,173 roles today. 3 made the cut.
Matches your distributed-systems and Go background; comp clears your floor by a wide margin.
Strong overlap with your reliability and data-pipeline work; fully remote, no hub requirement.
Adjacent domain and a small team; a stretch on the frontend load, worth a second look.
Here’s the part most job tools won’t tell you: some mornings that card is empty. “Quiet day. Nothing strong enough to send.” On a pull board an empty morning doesn’t exist, there’s always more to scroll, so you keep going and quietly drop your standards to make the time feel spent. OmniGrade lets you have the quiet day instead. You already told it what you’d take. If nothing today meets it, that’s the honest answer, and you get your morning back rather than talking yourself into a role you’d have rejected on Monday.
That’s the whole point: take the human out of the query loop. The human should not be the query engine. That was always a database’s job, and we finally handed it back.
We didn’t build this because a market survey told us to. We built it because we were the ones opening eight tabs every morning, and we got tired of doing a computer’s work by hand.