How AI Job Matching Actually Works (and Where We Use AI)
Why most job recommendations are bad, where career.now uses AI in its job index, and how to do real job matching with your own AI agent over MCP.
Why most job recommendations are bad
You search for "Senior Node.js Engineer" and get back "Senior Accountant at NodeFirst Capital". You ask for "Python developer" and a herpetology research position shows up. That's keyword matching, and it has been the industry standard for two decades.
LinkedIn's recommendations are optimized for engagement, not relevance. A job that's 40% relevant at a flashy company will outrank a perfect fit at a company you've never heard of. That's by design: LinkedIn sells recruiter seats, not job-seeker outcomes.
Indeed is keyword-based at its core. It indexes postings as text and runs your query against them. Better than nothing, but it has no idea what a job actually requires versus what words happen to appear in the posting. Both platforms serve the employer first, because the employer pays.
The result: 45 minutes a day sifting noise to find two or three jobs worth applying to. Multiply that by ten job boards and looking for a job becomes a part-time job.
Two different problems
"AI job matching" usually blurs two separate problems:
- Knowing what each job is. Its role, seniority, stack, location, salary, and whether it's still open. This is a data problem, and it's the same for every candidate.
- Knowing which jobs fit you. Your experience, what you want next, what you'd never do again. This is a reasoning problem, and it's different for every candidate.
career.now uses AI for the first one, at scale, inside our pipeline. For the second, we think the best matcher is the AI assistant you already use: it knows your background, you can argue with it, and it answers to you rather than to an employer. So we give it the data.
Part 1: how the index is built
Collection
We read hundreds of public sources every day: company career pages on ATS platforms (Greenhouse, Lever, Ashby, Workday, SmartRecruiters, Personio and others), government job services like EURES, public APIs and XML sitemaps of job boards. These are endpoints the company or board publishes for anyone to read.
That matters. We don't solve CAPTCHAs, we don't route around blocks, and we don't crawl anything behind a login. If a source says no, it's not in the index. Public feeds are also simply better data: when a company posts a job on Greenhouse, there's a public JSON endpoint with the full description.
Deduplication
The same job gets posted in five places: five URLs, five slightly different titles, five variants of the company name. "Stripe", "Stripe, Inc.", "Stripe Payments Europe, Ltd."; "Senior Backend Engineer" on the ATS and "Sr. Backend Dev" on an aggregator.
We collapse those into one canonical job and keep every copy's locations, so a country filter still finds it. Too aggressive and you merge different roles at the same company; too conservative and you see the same job five times. We've iterated on this more than on anything else.
Classification with AI
This is where most of our AI budget goes. Every new posting is read by a language model that answers a fixed set of questions:
- Role family: backend, frontend, data, ML, DevOps, security, product, design, and so on. "Platform Engineer, building Node.js microservices" lands in backend even though the title says neither word.
- Seniority on one ladder: intern, junior, mid, senior, expert, lead, head.
- Employment type in one vocabulary, so B2B in Poland, 1099 in the US and IR35 in the UK all map to the same "contract".
- Skills: the technologies the posting actually asks for, not every word that looks like a framework.
- Tech or not: a "Sales Engineer" at a SaaS company and a "Mechanical Engineer" at a factory both say "engineer". Only one belongs in a tech index.
Often the source already tells us. A Greenhouse department called "Sales" or a Himalayas category called "Marketing" settles non-tech before any model runs, which keeps the bill small enough to run every night.
Quality gates
A posting is searchable only when it has a real title, a company, a location or remote status, a usable description, and a recent sign that it's still live. Unknown required field means hidden until we know. We'd rather show you fifty solid jobs than five hundred where most are naked links.
Optional facts get the same treatment. Salary is shown as a salary only when we could verify it; otherwise you see the employer's own text, labelled "as listed". A wrong salary is worse than none. "New" means we first saw the job in the last 48 hours, never a date the source re-stamped.
Liveness
Expired jobs are the silent killer of job search. Many sources publish a complete list of open jobs, so when a job disappears from that list, we know it's closed. Other sources get their pages rechecked. Once we know a job is gone, it leaves search within minutes, and its page tells you so instead of sending you to a dead link.
Part 2: matching with your own AI
career.now doesn't rank jobs against your CV or email you picks. We used to; we stopped. A matcher that lives inside a job site sees a one-line prompt. Your assistant sees your whole career, and you can ask it why.
So the whole index is open to your AI through a free MCP server (Claude, ChatGPT and other MCP clients) and a REST API. There's also a skill file that teaches an agent the workflow. A typical session:
search_jobs: your assistant turns "senior Node.js backend, remote, EU timezone, at least 120k" into a query with filters (technology, seniority, work mode, country, salary floor) and gets a page of results.get_job: for the promising ones it reads the full posting and the structured facts: verified salary, skills, seniority, locations, and when we first saw it.- Reasoning: this is the matching. Your AI compares each posting to what it knows about you and tells you which five are worth it, and why. "Platform Engineer at a company you've never heard of: Node.js and TypeScript, senior, remote EU, no salary listed" is something it can actually explain.
create_application: the ones you like go to your job tracker (a kanban board on career.now, free with an account).save_cv: your assistant writes a CV tailored to that job and saves it on the application. We render it to PDF in a fixed, clean layout. You review it next to the posting and move the job to "Ready to apply".
You apply on the employer's own page. We don't submit applications for you.
One rule for the CV step: don't let your AI invent experience. Reword, reorder, emphasize, use the job's vocabulary. If the posting says "RAG pipelines" and you built "LLM workflows with retrieval", say so in their words. But every line should map to something real. Recruiters see through inflated CVs, and so do the interviews that follow.
The hard problems
- Cross-source deduplication. Unsolved in the general case. We aim for "you rarely see the same job twice".
- Quality without overfiltering. Most raw postings out there are thin, stale or spam. Hiding them without hiding real jobs is a constant balancing act.
- Cost. Classifying every posting with a model is affordable only because cheap source signals settle the obvious cases first.
- Sources change. Boards move URLs, change formats, shut down. Keeping hundreds of sources healthy is a daily job, not a one-time setup.
What we don't do
- We don't auto-apply. Spray-and-pray floods hiring managers with noise and gets you flagged. Your AI shortlists; you decide.
- We don't do the reasoning for you. No black-box "92% match" score. Your own assistant explains its picks, and you can disagree with it.
- We don't charge. career.now is free: search on the site, use the API and MCP server, keep a tracker. Searches and API calls are rate-limited per account, and an account costs nothing.
- We don't guarantee interviews. Anyone who promises that is lying.
That's the system. It isn't magic: it's plumbing, deduplication, classification, verification and liveness checks, with AI where it scales. The matching part is better done by an AI that knows you. Search the index, or connect your AI.
Stop scrolling job boards
Get ranked job matches every morning
Hundreds of job sources. One clean search. Free.