Resume OA
CS Internship & New-Grad Edition

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.

30s
A recruiter's first-pass read of your resume
1 pg
The hard rule for students & new grads
5–10
Keywords a recruiter searches at once
#1
Referrals: the highest-conversion path in
Read this as a funnel. Every stage below removes people. Your job isn't to be perfect at one thing; it's to stop leaking candidates at each gate: file parses cleanly → recruiter sees fit in 30s → keywords match the search → a referral vouches for you → the OA lands in your inbox.
01

Make it parse

The machine reads first

Before 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.

Do this
  • 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.
Never this
  • 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.
The 5-second test. Select all text in your PDF, copy it, and paste into a blank note. If it comes out scrambled, out of order, or missing chunks, that's exactly what the ATS sees. Fix the layout until the paste reads top-to-bottom like a normal document.
02

Bullets that convert

Impact, not activity

Once 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.

Accomplished X  as measured by  Y  by doing  Z
the result  ·  the metric  ·  the how & the tools

Example 1 · spotlight the result

Before · vague, no outcome
Worked on a machine learning model to improve Dasher assignment using large amounts of company data.
After · named system, metric up front
Shipped a 2-stage ML pipeline into Deep Red, DoorDash's core assignment system, lifting Dasher acceptance from 4.8% to 43% (Snowflake, PySpark).

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

Before · stack buried
Built a dine-in ordering app for restaurants using several different technologies.
After · every layer named
Led full-stack dev of real-time dine-in systems across iOS (Swift), Android (Kotlin), Web (Next.js), and FastAPI/PostgreSQL.

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

Before · scale hidden
Built an NLP pipeline to find failure symptoms in service log data.
After · the number does the talking
Engineered an NLP pipeline (KeyBERT, BERTopic) to extract failure symptoms from 5M+ service logs.

A big number (5M+ logs, 146M+ records) proves you worked at real production scale. Put it where the eye lands.

Strong verbs, front-loaded

Start each bullet with what you did. Kill "Responsible for," "Helped with," "Worked on."

Built · Shipped · Designed · Optimized · Automated · Cut · Scaled · Root-caused

Tools in context, not as a wall

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.

No real numbers yet? You almost always have one hiding: users served, requests/day, latency, % faster, hours saved, records processed, test coverage, team size. Estimate honestly and be ready to explain it. Every number on your resume is a fair interview question.
03

Keywords, done right

Match the search

Recruiters 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.
Check every resume against the posting. Run it through JobRight (or Jobscan) to score your match and surface the exact keywords you're missing, then submit a customized resume for each job. Tailoring the top third and keywords per posting is the single highest-ROI habit for passing the ATS. Don't fire the same PDF at 200 roles.

The real edges

Where most people plateau

Formatting 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.

Pick one lens, and make the whole page read for it.
Decide the exact role you're targeting (SWE, MLE, data, infra) and make every choice reinforce it: which role you lead with, which bullets rise to the top, which parts of your stack you emphasize, even which projects you keep. A recruiter should be able to tell in five seconds "this is an SWE" or "this is an MLE," not "this is a smart person who did a bit of everything." The same experience can be framed for either, but a resume that tries to read as both reads as neither. Applying to two kinds of role? Keep two versions.
How you phrase it
  • 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.
How you emphasize your stack
  • 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.
How to order the page

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.
Consistency is a silent signal. Same date format, same tense, same punctuation on every bullet, dates aligned down one edge. Sloppy formatting reads as sloppy engineering. Recruiters register it before they can say why.
04

LinkedIn as SEO

Get found, not just seen

Recruiters 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.
05

Referrals: the cheat code

Highest leverage move

In 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.

Referral strength, strongest to weakest
1
Executive / senior IC you worked with
Can speak first-hand to your work. Carries the most weight.
Strongest
2
Management / directors
Reports to leadership; their word reaches hiring managers.
Strong
3
Functional manager on the team
Runs the smaller team you'd join. High relevance.
Good
4
Teammates / peers
The people you'd work with day to day.
Solid
5
Adjacent colleague
Works near the team but not on it. Still better than none.
Weakest
Where to find one
  • 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
Cold-DM template
Hi [Name], I'm a CS student at [School] and a big admirer of the [team/product] work at [Company]. I'm applying for the [role] and would love a quick read on whether my background's a fit. Would you be open to a referral? Resume attached, and happy to send anything that'd help. Thank you!
Make it a yes. Keep it short, name the specific role and req ID, attach your tailored resume, and give them an easy out. You're asking for 30 seconds, not a favor they have to think about.
06

Apply like it's a system

Timing & volume

New-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.
07

The OA gate

Where this playbook ends

Do 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.

Prep the pattern, not the problem
  • 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.
During the assessment
  • 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 submit

Run this on every resume before it goes out. Your progress saves in this browser, so you can come back to it.

Resume pre-flight
0 / 16
Tick each item as you verify it.

The tool stack

Work smarter

The 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.

J
JobRight
Check · Customize · Refer
AI job-search copilot: scores your resume against each posting, generates a customized version per job, matches roles you actually fit, and surfaces people who could refer you.
Use for  checking your resume vs each posting + submitting a tailored version every time.
S
Simplify
Autofill · Track
Browser extension that one-click autofills application forms and tracks everywhere you've applied.
Use for  killing the copy-paste tax so you can apply at volume.
J
Jobscan
ATS Match Score
Paste resume + job description; get a match score and the exact keywords you're missing.
Use for  checking keyword match before you submit.
O
Overleaf
Resume · LaTeX
Free LaTeX editor. Start from Jake's Resume, the clean, single-column, ATS-safe template most CS students use.
Use for  a resume that parses perfectly, every time.
N
NeetCode
OA · Interview Prep
The 150 (and Blind 75) organized by pattern, with clean explanations and a study roadmap.
Use for  OA prep that builds pattern recognition, not memorization.
H
Handshake
Campus Recruiting
The university-recruiting portal companies use to post intern/new-grad roles and events to students.
Use for  early roles + recruiter events aimed at students.