Get past the bots.
Land the OA.
Most resumes die in two places before a human ever reads them: the applicant tracking system that parses your file, and the recruiter who skims it for thirty seconds. This is the field guide to surviving both, and turning applications into online assessments.
Make it parse
The machine reads firstBefore a person sees anything, the ATS converts your PDF to plain text. Fancy layouts shatter in that conversion: columns interleave, text boxes vanish, tables scramble. A resume the ATS can't read is a resume that scores zero, no matter how strong you are.
- One column, top to bottom. The safest layout an ATS can linearize.
- Standard section headers: Experience, Education, Projects, Skills.
- Submit a PDF (unless the portal explicitly wants .docx). Name it First_Last_Resume.pdf.
- Real text, selectable and searchable, not a screenshot or image.
- Common job titles a recruiter would actually search for.
- One page. You're a student; there is no exception yet.
- Multi-column templates, sidebars, or text boxes. They interleave into gibberish.
- Tables for layout. The ATS reads them out of order.
- Graphics, icons, skill bars, headshots. Noise or invisible.
- Contact info in the header/footer. Many parsers skip those regions.
- Exotic fonts or text rendered as an image.
- Canva / Figma "designer" resumes. Beautiful, unparseable.
Bullets that convert
Impact, not activityOnce you're parsed, a human skims. They're not reading; they're pattern-matching for evidence you did real, measurable work. Every bullet should answer what you did, how (which tools), and what changed because of it. Lead with whatever is strongest.
the result · the metric · the how & the tools
Example 1 · spotlight the result
Same project, same truth. The second one just names the real system and front-loads the number. That's the whole game.
Example 2 · spotlight the tech stack
When the breadth of your stack is the flex, name every layer. It signals you can own a feature end to end.
Example 3 · spotlight the scale
A big number (5M+ logs, 146M+ records) proves you worked at real production scale. Put it where the eye lands.
Start each bullet with what you did. Kill "Responsible for," "Helped with," "Worked on."
Built · Shipped · Designed · Optimized · Automated · Cut · Scaled · Root-caused
Recruiters want depth, not buzzwords. "Built X with React/Postgres" shows scope. A naked skills-dump implies surface knowledge you can't defend in an interview.
Keywords, done right
Match the searchRecruiters source candidates by searching 5–10 terms at a time, and ATS ranking rewards overlap with the job description. You're not gaming a robot. You're making sure the words you already earned match the words they search.
- → Mirror the job description's exact language. If it says "distributed systems," don't write "large-scale backends." Use their term.
- → Only list skills you can defend. A keyword you can't answer questions on is a trap, not a match. Depth beats breadth.
- → Put the stack where it's searchable: a clean Skills section and woven into bullets, so it reads as real experience, not a list.
- → Never keyword-stuff or hide white text. Modern ATS flags it and recruiters spot it instantly.
- → Tailor the top third per role. The summary/skills/first bullets are where a 30-second skim and a keyword search both land.
The real edges
Where most people plateauFormatting and keywords get you parsed. These quieter moves decide whether the 30-second skim lands on "yes." It's less about what you did and more about how you phrase it, what you emphasize, and the order you show it in.
- → Lead with the metric. Put the number early, not buried at the end of the sentence.
- → Name the real system. "Deep Red, DoorDash's core assignment system" beats "the assignment system." Specificity proves you were actually in it.
- → Vary your verbs. Six bullets that all open with "Built" read like a template.
- → Cut hedges: "helped," "assisted," "worked on," "responsible for."
- → Active voice, past tense, no "I." Every bullet is a result, not a job duty.
- → Weave tools into the bullet in parens, (Snowflake, PySpark), so they read as applied, not listed.
- → Reorder your Skills line per role so the posting's exact stack appears first.
- → Name specific, credible tech (LightGBM, SHAP, gRPC), not vague ("ML," "backend").
- → Only list what you can defend. A short stack you know cold beats a long one you can't.
Recruiters read top-down and stop early, so order by strength, not habit.
- 01 Top third is prime real estate. Name, strongest role, best bullets, key skills. That's where the skim and the keyword search both land.
- 02 Lead each role with its highest-impact bullet (biggest number or business outcome), not the first task you did chronologically.
- 03 Order sections by what's strongest for the role. Usually Education → Experience → Projects → Skills as a student, but if a project outshines an internship, or you don't have one yet, lead with Projects.
- 04 Reverse-chronological within each section. Most recent first, every time.
- 05 Every line earns its place. No objective statement, no "references available," no filler hobbies. One page, dense but breathing.
LinkedIn as SEO
Get found, not just seenRecruiters search LinkedIn the same way they search the ATS. Set it up once, correctly, and you start getting inbound: the rare messages that skip the queue entirely.
- 01 Turn on "Open to Work" (recruiter-only visibility if you're worried about your current employer seeing it).
- 02 Load your headline & About with role keywords. "CS @ Georgia Tech · SWE Intern · ML / Distributed Systems" beats "Aspiring engineer."
- 03 List the ~10 skills most relevant to your exact target role. That's what recruiters filter on, and a high match rate is the whole game.
- 04 Set job alerts for a short list of target companies and apply the day roles open. Many close when full, not on a deadline.
- 05 Engage with target companies: thoughtful comments on their posts, follows, and hitting "I applied" so recruiting sees you early.
Referrals: the cheat code
Highest leverage moveIn this market a referral is the single biggest jump in your odds of a screen. It routes your resume around the cold pile and puts a name behind it. Not all referrals are equal: the closer the referrer is to the decision, the more it counts.
- → 1st-degree connections already inside the company
- → Ask a mutual for a 2nd-degree intro
- → The hiring manager directly (for senior/niche roles)
- → Alumni from your school: filter LinkedIn by company + university
- → Former employees who can intro you in
Apply like it's a system
Timing & volumeNew-grad and internship recruiting is a race, not a deadline. Roles open early and close when the pipeline fills. Treat applying as a repeatable pipeline of your own, not a burst of effort in December.
- → Apply early and fast. Big-company summer postings often open Aug–Oct for the next year and fill on a rolling basis. Week-one applicants clear a far lower bar than week-ten.
- → Customize per posting, batch the rest. Use JobRight to tailor the top third, skills, and keywords to each JD; keep the body stable so you can move at volume.
- → Keep a target list of 20–40 companies with alerts, and track every application (status, date, referral, OA) in one place.
- → Volume with a referral beats volume alone. Spend your best energy on roles where you can line up a referral before you hit submit.
The OA gate
Where this playbook endsDo the above and OAs start hitting your inbox: timed online assessments on HackerRank, CodeSignal, or Codility, often auto-sent right after you apply. This is the last gate before a human interview, and it's pure preparation. Here's how to walk in ready.
- → Work NeetCode 150 or Blind 75 by pattern (two pointers, sliding window, BFS/DFS, DP), not random grinding.
- → Know your language's standard library cold: heaps, hashmaps, sorting, string ops.
- → Practice timed. The clock, not the difficulty, is what fails people.
- → Read the constraints first. n's size tells you the complexity they want.
- → Get a brute force passing, then optimize. A working slow answer beats an elegant blank.
- → Test edge cases: empty, single element, duplicates, overflow.
- → Never leave it blank. Some platforms give partial credit per test case.
Your ATS-ready checklist
Tick before you submitRun this on every resume before it goes out. Your progress saves in this browser, so you can come back to it.
The tool stack
Work smarterThe tools I lean on to run the funnel above. Most have a free tier, so start there. They speed up the grind; they don't replace a strong resume or a real referral.