April 2026 · 10 min read
How AI Job Matching Actually Works (Behind the Scenes)
Most job recommendations suck. Here's why, and how we're trying to do better.
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 somehow a herpetology research position shows up. This is keyword matching, and it's been the industry standard for two decades.
LinkedIn's recommendation algorithm is optimized for engagement, not relevance. It wants you to click, scroll, and stay on the platform. A job that's 40% relevant but has a flashy company name will outrank a perfect-fit role 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 job descriptions as text and runs search queries against them. Better than nothing, but it has no understanding of what a job actually requires versus what words happen to appear in the posting. Both platforms serve the employer first and the candidate second, because the employer is the one paying.
The result: you spend 45 minutes a day sifting through noise to find 2-3 jobs worth applying to. Multiply that across 10 job boards and you've got a part-time job just looking for a job.
How career.now matching works
Our pipeline has five stages. Each one exists because we got burned by skipping it.
Step 1: Collection
We check 1,400+ sources every day. These aren't websites we're scraping — they're legal public endpoints: ATS feeds from Greenhouse, Lever, Ashby, and SmartRecruiters; RSS feeds; XML sitemaps; and public APIs. Every source is a structured data feed that the company or board intentionally publishes for consumption.
This matters because scraping is fragile and legally questionable. Public feeds are stable, fast, and designed to be read by machines. When a company posts a job on Greenhouse, there's a public JSON endpoint that lists it. We read that endpoint. No headless browsers, no CAPTCHA solving, no pretending to be a human.
Step 2: Deduplication
The same job gets posted on 5 different boards. That's 5 URLs, 5 slightly different titles, and 5 variations of the company name. "Stripe" on one board, "Stripe, Inc." on another, "Stripe Payments Europe, Ltd." on a third. The title might be "Senior Backend Engineer" on the company's ATS and "Sr. Backend Dev" on an aggregator.
We deduplicate by fuzzy-matching on title + company + location. This is surprisingly hard to get right. Too aggressive and you merge different roles at the same company. Too conservative and you flood the user with duplicates. We've iterated on this more than any other part of the pipeline.
Step 3: Quality scoring
Not all job listings are created equal. A posting with a title, company name, full description, salary range, and location is useful. A naked link to a PDF on someone's corporate site is not. A listing that says "Click here to apply" with no other information is garbage.
Every job gets a quality score. We look at: does it have a real title? A company name? A description longer than a tweet? Location or remote info? Salary data? Jobs below a quality threshold get pruned automatically. We'd rather show you 50 solid matches than 500 matches where 450 are useless links.
Step 4: AI relevance scoring
This is where it gets interesting. Your search prompt — something like "senior Node.js backend, remote, EU timezone, $120k+" — gets compared against each job using an LLM. Not keyword matching. Semantic understanding.
The AI reads the full job description and scores on five dimensions:
- Role fit — Is this actually the kind of work you described?
- Stack match — Does the tech stack align with what you know/want?
- Seniority alignment — Is this the right level for you?
- Location/remote match — Can you actually work this job from where you are?
- Compensation fit — If salary data exists, does it match your range?
This means a job titled "Platform Engineer" that describes building Node.js microservices will score high for a Node.js backend search — even though the title doesn't contain "Node.js" or "backend." A keyword search would miss it entirely.
Step 5: Ranking and delivery
The top 10 matches go to your inbox every morning. Each one includes a relevance score from 0 to 100 and a one-line explanation of why it matched. Not just "85% match" — more like "Strong Node.js/TypeScript stack match, senior-level, remote EU, salary not listed but company range suggests $110-130k."
Everything else goes to a searchable dashboard where you can browse, filter, and dig deeper. The email is the highlight reel. The dashboard is the full archive.
The hard problems we solve
Building a job aggregator sounds simple until you actually try it. Here's what makes it hard:
- Cross-board deduplication. Same job, different URLs, different formatting, different company name variants. This is an unsolved problem in the general case — we just try to be good enough that you rarely see the same job twice.
- Quality filtering. The majority of aggregated job listings are garbage. Naked links with no description, expired postings that never got taken down, recruiter spam disguised as job posts. Filtering this without accidentally removing real jobs is a constant balancing act.
- Scale. We index 500,000+ jobs. AI scoring every single one against every user query would be slow and expensive. We use quality scores and pre-filtering to narrow the candidate set before the LLM ever sees it.
- Source discovery. New job boards and company career pages appear constantly. ATS platforms add new customers. Boards shut down or change their feed format. Keeping every sources healthy is an ongoing maintenance burden, not a one-time setup.
Beyond matching: CV tailoring
Finding the right job is half the battle. The other half is making sure your resume speaks the job's language. That's why we built one-click CV tailoring directly into the dashboard.
Upload your CV once (PDF, DOCX, or plain text). When you find a job worth applying to, hit "Tailor CV" and we generate a PDF that rewrites your existing experience using the job description's exact vocabulary. If the JD says "RAG pipelines" and your CV says "LLM workflows with retrieval," the tailored version says "RAG pipeline design and LLM orchestration workflows."
The critical rule: we never invent experience. Every bullet point in the tailored CV maps back to something real in your original. We reformulate, reorder, and emphasize — but we don't fabricate. ATS systems and recruiters both see through inflated resumes. Ours pass because they're true.
Application tracking
Every job you interact with gets tracked automatically. Saved, Applied, Interview, Rejected — all visible in a board view inside your dashboard. No spreadsheets, no Notion templates. The tracker lives next to your matches, so you never lose track of where you are in each process.
What we don't do
It's worth being explicit about what career.now is not:
- We don't auto-apply. This is intentional. Spray-and-pray applications hurt everyone — they flood hiring managers with noise and they get you rejected by ATS systems that flag mass applicants. We find the jobs. You decide which ones are worth your time.
- We don't invent experience. Our CV tailoring rewrites your real background using the job's keywords. It never adds skills you don't have or inflates your title.
- We don't guarantee interviews. Anyone who promises that is lying. What we guarantee is that you'll see jobs you would have missed, and that your CV will speak each job's language when you apply.
The value proposition: we find jobs you would have missed, score them across 5 dimensions so you know exactly why each one fits, and tailor your CV so you apply with confidence.
Why $10/week and not a subscription
Most SaaS tools want you on a monthly subscription. That makes sense for tools you use continuously — your email client, your project management app, your CRM. Job search is not one of those tools.
You search for a job for 2-4 weeks. Maybe 6 if you're being picky. You shouldn't be paying $29/month for something you'll cancel in a month anyway, after forgetting to cancel the first month and getting charged twice.
career.now is free. No payment, no subscription, no account needed to search. No "cancel before you get charged" reminders. If you need another week, you buy another week. If you found a job, you're done. We think job search tools should have an expiration date built in.
That's the system. It's not magic — it's plumbing, deduplication, quality scoring, and an LLM that actually reads job descriptions instead of matching keywords. If you're tired of scrolling through irrelevant results, give it a try.
Stop scrolling job boards
Hundreds of job sources. One clean search. Duplicates removed, every result links to the original posting. Free.
Try career.now