How to write a tech CV that actually gets past ATS
A tech CV (or resume) is a filter, not a biography. How to pass ATS, match the job, and write bullets a recruiter can verify in six seconds.
A recruiter is not hunting for a star. They are trying not to hire the wrong person. Vague lines ("responsible for", "helped with", "worked on") raise that risk. A specific result with a number lowers it.
That is the whole game: make the CV easy to parse, easy to match to the vacancy, and easy to believe. Same file Americans call a resume. Everything below is in service of those three.
Format is not a design choice
Before a human sees your file, an applicant tracking system (ATS) tries to extract plain text. It does not care that the layout looked expensive.
- Keep it to one page if you can. Two is the ceiling, not the target.
- Use .docx, or a PDF exported from Word. Designer PDFs from Canva or Figma, and LaTeX layouts, often arrive as garbage or empty fields.
- No tables, text boxes, icons, skill bars, or infographics. ATS reads those as noise.
- No photo. In the US, UK, and Canada it is a common auto-reject trigger.
- Use an email with your name in it.
xX_darklord_Xx@...is a different document. - Do not paste a chatbot draft into the file. Generic phrasing is easy to spot, and you cannot defend it on the call.
If the machine cannot read the file, the rest of this article does not matter.
Match the vacancy, or do not send it
A CV is not a complete history of you. It is an argument for this role.
Write the job title the way the posting writes it. A mismatch there is one of the fastest ways to lose the row in the tracker. Then put the posting's actual keywords into the profile and the recent experience: the same tools, domains, and phrases, not synonyms you think sound smarter.
Drop work that does not help this application. A year teaching undergraduates Java is a fine story in an interview. It is dead weight on a DevOps CV. Irrelevant years do not "show range". They steal the six seconds.
Put sections in the order people actually read
Top to bottom:
- Name and, if you have one, degree on the same line
- Title: aligned with the vacancy
- Phone, email, LinkedIn, relocation if it is relevant
- Career profile: two short paragraphs, not a tag cloud. First: who you are and how long you have done this. Second: the skills this job is screening for.
- Career highlights: two or three numbered wins. Skip the section if you cannot put a number on them.
- Experience: newest first
- Education: last, and short. Almost nobody hires off the diploma line.
Do not lead with education. The market prices what you shipped, not the crest on the paper.
Write bullets as results, not duties
The line that dies in screening:
Was responsible for the payee creation flow.
The line that survives:
Redesigned the payee creation flow with automatic scheme selection by country and currency, cutting malformed payment requisites by ~90%.
Same job. The second one is a claim a hiring manager can test. Formula: did X, by doing Y, which led to Z, with a number. Active verb, past tense, one idea per bullet. Roughly one strong bullet per year in the role is enough. A wall of responsibilities is a tell that you did not pick.
If the role has no clean metric (design, research, support), use a proxy: time saved, error rate, cycle time, something downstream you actually moved. If you cannot name a proxy, that is a signal about the work, not a reason to invent a percentage.
Round honestly enough that you can survive two follow-up questions. "Improved conversion by roughly 2x" from 1.5% to 3% is a judgment call. "Five years of AWS" when the stack was GCP is a trap you will walk into on the technical screen.
Experience entries, tightly
For each recent job: company (and one line on what it does, if it is not famous), city, dates, title, one line of scope, then the result bullets.
Stay in the last three to five years. Merge 1-2 month stints, or drop them, especially if they sit at the top of the list. A gap of six months or more in the recent window needs a real sentence (study, a project, a planned pause), not a hole.
No tables to "make the dates line up". Tabs and spaces survive ATS. Tables often do not.
Education, certificates, languages
University, city, degree, year. That is the entry. Certificates only if a known issuer or a hard requirement (IELTS, TOEFL, a vendor the posting named). Course-platform badges do not help.
Languages in words: Native, Fluent, Working proficiency, Limited working proficiency, Basics. B2 and 4/5 mean nothing to most readers.
References are optional. If you list them, use people who will pick up, with a work email on the company or university domain. Most teams will never call. A fake one is an expensive way to learn that they sometimes do.
A short checklist before you send
- One role, one CV. Keywords and title match this posting.
- First screen is a machine: no tables, no icons, no photo, readable file.
- Profile is sentences, not a skill dump.
- Every experience bullet has a result you can explain out loud.
- Education is last. Irrelevant jobs are gone.
- You can defend every number on a 30-minute call.
The CV's job is to get that call. The interview is where the same facts have to hold up when someone starts asking "how, exactly?"