Tutorial2026-06-10·10 min read

How ATS Systems Work: A Software Engineer's Guide to Getting Past the Bots

If you've applied to more than a handful of tech jobs, your resume has been read by a robot before any human saw it. That robot is an Applicant Tracking System (ATS) — and understanding how it works is the difference between landing interviews and disappearing into the void.

What Is an ATS?

An ATS is software that companies use to manage job applications. Greenhouse, Lever, and Ashby dominate the tech industry. When you submit a resume, the ATS parses it into structured fields — name, email, work experience, skills — and scores it against the job description.

The key word is parses. The ATS doesn't read your resume like a human. It extracts text, tokenizes it, and matches tokens against a keyword list derived from the JD. If your resume doesn't contain the right tokens in the right density, you're filtered out before a recruiter sees your name.

How Keyword Matching Actually Works

Most engineers assume ATS matching is simple string comparison. It's not. Modern systems use:

  • Exact match — "React" in your resume matches "React" in the JD
  • Synonym expansion — "JavaScript" might match "JS" (but don't rely on it)
  • Section weighting — Skills listed in a dedicated "Skills" section score higher than those buried in a job description paragraph
  • Recency bias — Keywords in your most recent role carry more weight than those from 5 years ago
  • Density scoring — Mentioning "Python" once scores less than mentioning it in context across multiple bullet points

The 130-Keyword Framework

At JobApplier.site, we analyzed 12,000+ software engineering JDs and identified the 130 most impactful tech keywords across categories:

  • Languages: Python, TypeScript, JavaScript, Go, Rust, Java, C++, Ruby, Kotlin, Swift
  • Frameworks: React, Next.js, FastAPI, Django, Express, Spring Boot, Rails
  • Infrastructure: AWS, GCP, Docker, Kubernetes, Terraform, CI/CD
  • Databases: PostgreSQL, Redis, MongoDB, DynamoDB, Elasticsearch
  • Practices: microservices, REST API, GraphQL, event-driven, observability

Our ATS optimizer scores your resume against these keywords for each JD, giving you an A-F grade before you submit.

Formatting Rules That Matter

ATS parsers choke on certain formats. Stick to these rules:

  • No tables or columns — most parsers read left-to-right, top-to-bottom. Two-column layouts scramble the order
  • No headers/footers — content in PDF headers is often ignored entirely
  • Standard section names — use "Experience," "Education," "Skills" — not creative alternatives
  • PDF over DOCX — PDF preserves formatting and is universally parsed. DOCX can introduce artifacts
  • No images or icons — star ratings, skill bars, and profile photos are invisible to parsers

The Tailoring Advantage

Here's what most people miss: a resume optimized for one job is wrong for another. A backend role at Stripe needs different keywords than a full-stack role at a startup. The JD is literally telling you what the ATS is scoring — and each JD is different.

This is why JobApplier.site rewrites your resume YAML for every single application. Not a template swap. A genuine per-JD tailoring pass that adjusts bullet points, reorders skills, and injects missing keywords from the specific job description.

What You Can Do Right Now

  1. Copy 5 target JDs into a document and highlight every technical keyword
  2. Count overlaps — if a keyword appears in 3+ JDs, it must be in your resume
  3. Mirror exact phrasing — if the JD says "CI/CD pipelines," don't write "continuous integration"
  4. Quantify everything — "Reduced API latency by 40%" beats "Improved API performance"
  5. Or let JobApplier.site do it automatically — our GPT-5.4 tailoring engine handles all of this for every application
← Back to all posts

Ready to automate your job search?

3 AI-tailored applications per month. Free forever.

Get Started Free