I asked an AI to rank my CV. It was brutally honest.

The wake-up call

I spent years building products, shipping features, leading migrations, setting up CI/CD pipelines from scratch. I thought my CV reflected that. Turns out, the machines reading it disagreed.

I’d been job hunting in the European tech market and getting fewer callbacks than expected. Not zer, but fewer than my experience should warrant. So I did something that felt a bit masochistic: I asked an AI to evaluate my resume the way an Applicant Tracking System would.

The verdict? “Solid pass, but mid-tier ranking.” Not trash, but not top of the pile either.

Every recruiter uses a machine now

In 2026, virtually every recruiting company, HR platform, and job board runs your CV through automated scoring before a human ever sees it. The process:

  1. You submit your application
  2. A parser extracts your text and tries to understand structure (name, title, skills, dates)
  3. A scoring engine ranks you against the job description keywords
  4. Only candidates above a threshold get shown to an actual human

Step 4 is where most people get silently rejected. No email, no feedback. Your profile just never surfaces.

These systems can’t understand context. They can’t infer that someone who built payment systems from scratch probably understands backend architecture deeply. They look for keyword matches, clear structure, and quantifiable signals.

What was wrong with my CV

Keyword match was fine. React, Angular, TypeScript, Node.js, AWS, CI/C, all present.

Seniority signals were vague. I showed progression from fullstack to feature team lead to product engineer, but the bullets read like responsibility lists, not impact statements. “Set up CI/CD” is not the same as “reduced release cycles from weeks to days by implementing automated CI/CD pipelines.”

No measurable outcomes. Most of my bullets described what I did, not what happened because of it. ATS systems that rank by impact had nothing to score on.

My headline was too broad. “Product Engineer, Fullstack Solutions & Scalable Architectures” sounds nice to a human but scores poorly against specific searches like “Senior React Engineer” or “TypeScript Fullstack Developer.”

The fix: anchor, don’t narrow

You don’t need to narrow your skill set. You need to give the machine clear signals while keeping the human narrative broad.

I rewrote my headline to: Product-oriented fullstack (Angular/React/TypeScript). Not limitin, anchoring. A recruiter searching for React or Angular or TypeScript engineers now finds me in their shortlist. The rest of my profile still shows the breadth.

For each role, I rewrote bullets to lead with outcomes. Not “handled payments migration” but specifics about scope and systems involved. Not “worked on frontend” but actual frameworks, patterns, and constraints.

The summary became a pitch, not an inventory. Two sentences about what I do, one about how I work, one about what I’m good at.

Why I built this into a JSON Resume theme

I maintain an open-source theme for JSON Resume called Tone. When I went through this ATS optimization, I realized the theme itself should enforce good practices:

  • Clean semantic HTML. ATS parsers rely on document structure. Proper heading hierarchy and section landmarks.
  • Zero external dependencies. No scripts, no external fonts, no tracking. Parsers get clean text.
  • Single-page PDF export. Many ATS systems process the PDF directly.
  • Dark and light mode previews. See exactly what the output looks like before submitting.
  • Open Graph tags. Clean, professional embeds when shared on LinkedIn or messaging apps.

The theme follows the JSON Resume 1.0.0 spec, so any resume.json file works.

What I learned about the market

For senior fullstack and product engineer roles across Europe, a well-structured resume with the right keyword density and clear impact statements places you in the top 20–30% of the candidate pool. That’s the difference between being shown to a hiring manager and being silently filtered out.

The technology you know matters less than how clearly you present it. A recruiter searching “React TypeScript AWS” needs those exact strings in your profile, in the right context, with evidence of seniority.

Your belief that technologies are interchangeable and learnable is correct. But the machines doing the initial screening don’t care about learning potential. They care about demonstrated evidence.

The uncomfortable truth

We’re all being ranked by algorithms before we get a chance to speak. The romanticized version of hirin, someone reading your cover letter and getting excited about your passion projec, is mostly gone. What remains is a two-stage system: pass the machine, then impress the human.

The good news: optimizing for machines doesn’t require lying or keyword stuffing. It requires clarity, structure, and measurable language. Things that also make your CV better for humans.

If your callback rate is lower than it should be, the problem might not be your experience. It might be your formatting.

Resources