How to Write a Resume that Passes ATS (Step-by-Step)

Writing a resume that passes ATS isn't about gaming the system — it's about giving the parser clean structured data and giving the ranker the exact vocabulary the job description used. This is the step-by-step we use inside Seek Interview to rewrite resumes one bullet at a time.

Try Seek Interview Resume ToolNo signup · Free preview

Step 1 — Start from the job description, not your old resume

Open the job description and pull out three things before you touch your resume:

  1. The exact title (write it down — you'll use it in your summary).
  2. The 6-10 must-have skills (look at "requirements" and "qualifications" sections).
  3. The 3 outcomes the role exists to produce (look at "responsibilities" and "about the role").

If you can't find these in 5 minutes, the JD itself is weak — apply anyway but expect a noisier process. Save what you find — we'll mirror this vocabulary in every section.

Step 2 — Use a single-column, parser-safe layout

Apply this with the tool

Stop reading. Start tailoring.

Seek Interview grounds every output in the exact job description you paste — never generic templates. Free preview, no signup.

In 2026, the safest layout is still:

  • Plain serif or sans-serif body font (Calibri, Arial, Source Sans).
  • 10-11pt body, 14-16pt section headers.
  • 0.5-1 inch margins.
  • Section headers in bold, not in a separate column.
  • No headers, no footers, no text boxes, no tables for layout (tables for actual tabular data like certifications are fine).

Step 3 — Write a 3-line summary that mirrors the JD

Skip the "results-driven professional with passion for excellence" template. Use this skeleton:

[Years of experience] [Exact role title from JD] with deep experience in [top 2 must-have skills]. Built [most relevant outcome] at [most relevant past employer or context]. Currently focused on [the outcome this role exists to produce].

— Seek Interview — Resume Builder

Example — Senior Backend Engineer JD

Before

Backend developer with 6 years of experience building scalable systems and a passion for clean code.

After

Senior Backend Engineer with 6 years building distributed payment systems in Go and Java. Cut p95 latency 41% on a 12k-RPS settlement pipeline at Stripe-Connect-style integration. Currently focused on event-driven microservices on Kubernetes.

Step 4 — Build a Skills section the normalizer can read

Two passes:

  1. Group by category — Backend, Frontend, Data, Cloud, DevOps. This is for the human screen.
  2. Inside each group, list canonical names (Kubernetes, not k8s; JavaScript, not JS). Include 2-3 variants only if both appear in the JD.

Step 5 — Rewrite every experience bullet

Use the verb + object + scope + outcome formula on every bullet:

  • Verb (Built, Migrated, Owned, Reduced, Launched).
  • Object (a billing pipeline, the onboarding flow, the on-call rotation).
  • Scope (3 engineers, 12 services, $4M ARR).
  • Outcome (cut close time from 9 days to 3, increased D7 retention 18%).

Example — vague vs sharp bullet

Before

Worked on the payments team and helped improve performance and reliability.

After

Re-architected the payments idempotency layer (140 RPS p99 → 12ms), eliminated 91% of double-charge incidents, and shipped a backfill that recovered $310k in stuck refunds.

Step 6 — Add a Projects or Selected Work section if relevant

For early-career, career-switcher, or open-source-heavy candidates, 2-3 projects with the same verb + outcome framing add a parser-friendly skills surface.

Step 7 — Run it through an ATS resume checker

Before submitting, score your resume against the job description with an ATS resume checker. Look at three numbers:

  • Fit score — directional, not absolute.
  • Matched skills — confirms the parser found what you intended.
  • Missing skills — the things you have but haven't surfaced in the right context.

Worked example — rewriting a junior engineer resume

Real worked examples teach more than generic advice. Here's a before/after for a junior backend engineer applying to a Senior Backend Engineer role they're a slight stretch for. The JD calls for: Go, Kubernetes, distributed systems, on-call experience, 4+ years.

Bullet rewrite — junior dev applying senior

Before

Wrote backend code in Go for the payments service. Worked on Kubernetes deployments. Participated in on-call rotation.

After

Owned 3 of 12 Go microservices in the payments core (settlement, refunds, idempotency), shipped the v2 refund retry loop that cut stuck transactions 73%, and rotated primary on-call across 18 nights in 2024 with zero customer-facing incidents on my shifts.

Notice three things in the after version: specific service names ground the claim in real work; the number (73% reduction, 18 nights, zero incidents) gives the ranker something to score; the rotation framing addresses the JD's on-call requirement directly. This single rewrite typically lifts that bullet's contribution to the fit score by 3-5 points.

Common mistakes that quietly tank ATS scores

  • Putting contact info in the header section of Word — Word headers are often stripped by parsers. Move contact to the first line of the body.
  • Using "References available upon request" — wastes a line on something universally assumed. Remove.
  • Writing a 6-line summary — your summary should be 3-4 lines maximum. Anything longer dilutes the keyword density at the top of the document.
  • Listing every certification you've ever earned — pick the 3-5 most relevant. The rest goes on LinkedIn.
  • Repeating the same bullet structure 30 times — "Worked on X, Y, Z" 30 times reads as mechanical. Vary verbs and structure across roles.

How to write for both the ATS and the human

The mistake we see most is candidates over-indexing on one audience. Either they write robotically for the ATS and lose the recruiter on first glance, or they write beautifully for the human and fail the parsing stage. The best resumes do both — clean structured data the parser can read AND specific, vivid claims the recruiter wants to dig into.

A simple test: read your resume in plain text (paste into Notepad). If the structure is still legible without the formatting, the ATS sees you clearly. Then open the original PDF and let a friend look at it for 10 seconds. Ask them what they remember. If they can't recall a specific number or accomplishment, your top bullets aren't sharp enough.

Frequently asked questions

How many keywords should I include?
Roughly 70-80% of the must-have skills from the JD, used in context inside bullets (not just stuffed into a Skills list). Quality of placement beats density.
What if my title doesn't match the JD title?
Keep your real title for credibility, then add the JD title in parentheses if the work matches. Example: "Software Engineer III (Senior Backend Engineer scope) — Stripe".
Should I customize the resume for every job?
Yes — at minimum customize the summary, the skills order, and 3-5 top bullets. Tools like the Seek Interview resume builder let you do this in under 5 minutes per job.
Do ATS systems read images of text?
No. Anything inside an image, chart, or icon is invisible to the parser. Keep all keywords as live text.

Apply this with the tool

Stop reading. Start tailoring.

Seek Interview grounds every output in the exact job description you paste — never generic templates. Free preview, no signup.

Continue reading in this cluster

Explore other clusters

Hub & tools