Resume, Portfolio & GitHub Profile Module 1 – How applications are read
What a resume is for and who reads it
The two jobs a resume does, who reads an application from upload to interview, how much of page one a first screen reaches, and what a CV or a biodata is.
What you will learn
- Explain the two jobs of a resume, earning the interview and then guiding it
- Name the readers of an application and what each one looks for
- Estimate how many words a first screen reaches and choose what goes at the top of page one
- Distinguish a job resume from an academic CV and a marriage biodata
What you’ll learn
What you will learn
- Explain the two jobs of a resume, earning the interview and then guiding it
- Name the readers of an application and what each one looks for
- Estimate how many words a first screen reaches and choose what goes at the top of page one
- Distinguish a job resume from an academic CV and a marriage biodata
On this page
Canada’s Job Bank tells job seekers that employers spend 30 seconds on average skimming a resume, and an eye-tracking study by the job-search company Ladders measured an average first screen of 7.4 seconds. In that time a resume has to earn a longer read, and once it has, it becomes the page your interviewers prepare their questions from.
This lesson follows one application past each of its readers, measures how much of page one a first screen can reach, and separates a resume from two documents that share its names. You will be able to say what each reader needs from your page, and to decide what goes in its first lines.
A resume has two jobs: earn the conversation, then steer it
Asha Verma, a backend engineer with three years of experience and the invented candidate this track follows, lists Kubernetes among her skills because she once followed a tutorial. The line helps her through the first screen. In the second interview the interviewer reads it out and asks how she rolled back a failed deployment, and she has nothing to say. The line that won the screen has cost her the round.
Those are the two jobs of a resume. The first is to earn the next conversation: Google calls the resume “our first look into your past experiences and impact”. The second starts once you are invited, because the people who interview you read the resume to choose their questions. In Atlassian’s engineering interview guide the hiring manager conversation centres on one or two of your past projects, the people involved and the technical hurdles, and Google’s interview advice tells candidates to collect examples wherever their resume overlaps the job description. The same line does both jobs, as the table shows:
| A line on the resume | What a first screen sees | What an interviewer asks next |
|---|---|---|
| Cut p95 API latency from 420 ms to 180 ms | A measured result in the posting’s area | How did you find the slow queries, and what did the cache cost? |
| Kubernetes, in the skills list only | A term the posting asks for | Walk me through a deployment you had to roll back. |
| Built a Kafka consumer for 2 million events a day | Scale and a named tool | What happens when one event is delivered twice? |
Write every line so that you could talk about it for five minutes: what you did, why, how you measured it and what you would change now. That is MySmartCoPilot guidance, and it follows from the second job. Microsoft’s careers pages make the honesty side explicit: the expectation of an honest account of yourself covers the resume as much as the interviews.
A skill you cannot talk about
Wrong: “Kubernetes” in the skills list after one tutorial. Right: a bullet that says what you did with it (“Moved 14 services to Docker and Kubernetes, so a deploy takes 9 minutes instead of 40”), or nothing at all. The wrong version passes a keyword search and then becomes the question you cannot answer.
Checkpoint
Check: The two jobs of a resume
Four kinds of reader see an application, in turn
Most applications meet the same readers in the same order, although employers merge and skip steps. Step through Asha’s application from the upload to the interviews; each step says who reads it and what that reader decides:
The drawing shows the whole scene; its 6 steps are listed below.
Every step as text
- Asha applies. Asha, a backend engineer with three years of experience, uploads her resume as a PDF and answers the posting's form, such as her city and her notice period. No person has read anything yet.
- Software files it. The applicant tracking system stores the file and parses it, copying her name, e-mail, jobs and education into profile fields and making the text searchable. If the parse fails, the file is still attached and someone types the fields in.
- Form answers can decide. Rules can act on the form's yes or no and multiple-choice answers before anyone reads the resume, and one answer can reject an application on its own. Asha's answers meet the posting's requirements.
- The first person reads. A recruiter compares the top of page one with the posting's minimum qualifications. This is the short first screen, and it may end before the second half of the page.
- The manager reads for depth. The hiring manager, who leads the team, reads the experience and the projects for depth, such as what Asha built, how large it was and what changed because of it.
- Interviewers read it again. Before each round an interviewer reads the resume and picks lines to ask about. Every line Asha wrote can now become a question she has to answer in depth.
The first reader is software. An applicant tracking system: Software an employer uses to receive applications, store resumes, fill candidate profiles from them, search them and move candidates through the stages of hiring. More in “How applicant tracking systems really work” stores the file, copies details such as the name and the jobs into profile fields, and makes the text searchable. Greenhouse, one such system, documents that a resume it cannot read this way “has only been attached to the candidate”, and that someone then types the details in by hand. The form’s answers come next, and rules can reject an application on one answer alone; the next lesson shows how those rules work.
The first person is usually a recruiter, who checks the fit with the posting: Google asks applicants to make sure their resume clearly shows the role’s minimum qualifications, and Microsoft says a team may follow its resume review with a brief screening conversation. Then the hiring manager: The person who leads the team a new hire would join. They read applications for depth and share in the decision to hire. reads for depth, and each interviewer reads the page again before their round. Each reader needs something different from the same page:
- The tracking system needs text it can read, in sections it can recognise.
- The recruiter needs the posting’s requirements in plain sight, near the top.
- The hiring manager and the interviewers need lines with substance: what you built, how big it was, what changed.
Checkpoint
Check: Who reads an application, in order
A first screen reaches only the top of page one
How long does the first person spend? Canada’s Job Bank puts the average skim of a resume at 30 seconds, and cites no study for it. Ladders reported an average first screen of 7.4 seconds in its 2018 eye-tracking study, against 6 seconds in its previous one, and the report gives no sample size. Treat both numbers as a direction, not a measurement: the first read is short.
A short read covers few words. A meta-analysis of 190 studies puts the average silent reading rate of adults at 238 words a minute for English non-fiction, so 7.4 seconds is about 29 words and 30 seconds about 119. The program reads two versions of the top of Asha’s resume at that rate, a biodata-style page and a focused one:
# How far down the page a first screen gets. Two versions of the top of one invented resume are read at 238 words a
# minute, the average silent reading rate of adults for English non-fiction (Brysbaert, 2019), for the two screen
# times this lesson quotes: 7.4 seconds (an eye-tracking study by Ladders) and 30 seconds (Canada's Job Bank).
# Real screens skim instead of reading every word, so treat each result as the reach of a careful reader.
# Press Edit, paste the top of your own resume into MINE and run it again.
import re
WORDS_PER_MINUTE = 238
SCREENS = [7.4, 30]
# A measured result: a number followed by a unit of what changed.
RESULT = re.compile(r"\d[\d,.]*\s?(?:ms|%|minutes|hours|services|users|rows)\b")
BIODATA_STYLE = """\
BIO-DATA
Name: Asha Verma
Father's name: (her father's name)
Date of birth: (her date of birth)
Religion: (her religion)
Marital status: Single
Career objective: To work in a challenging and growth-oriented environment where I can use my skills for the growth of the organisation.
Educational qualifications: B.Tech. Computer Science, Example Institute of Technology, CGPA 8.2/10
Experience: Software Engineer at Example Logistics
"""
FOCUSED = """\
Asha Verma · Backend engineer · Pune · asha.verma@example.com · github.com/asha-verma-example
Backend engineer, three years of Python and PostgreSQL services; cut p95 API latency from 420 ms to 180 ms.
Software Engineer, Example Logistics, Pune, 2023 – present
- Moved 14 services to Docker and Kubernetes, so a deploy takes 9 minutes instead of 40.
"""
MINE = "" # the top of your resume, one line per line of the page
def words_of(text):
"""The words of a text: separators such as "·" and "-" are not words."""
return [w for w in text.split() if re.search(r"\w", w)]
def first_result(words):
"""The position (1, 2, …) and text of the first measured result, or None."""
for i in range(len(words)):
found = RESULT.match(" ".join(words[i:i + 2]))
if found:
return i + 1, found.group(0)
return None
def report(name, text):
words = words_of(text)
result = first_result(words)
print(f"{name} ({len(words)} words). First measured result: {f'word {result[0]}, {result[1]!r}' if result else 'none'}.")
for seconds in SCREENS:
reach = min(int(WORDS_PER_MINUTE * seconds / 60), len(words))
tail = " ".join(words[max(0, reach - 8):reach])
if result and result[0] <= reach:
verdict = "the result is read"
elif result:
verdict = "the result is not reached"
else:
verdict = "no result to judge"
print(f" {seconds:>4} s reads {reach:>3} words, ending '…{tail}': {verdict}")
print()
for seconds in SCREENS:
print(f"In {seconds} s a reader at {WORDS_PER_MINUTE} words a minute gets through {int(WORDS_PER_MINUTE * seconds / 60)} words.")
print()
report("Biodata-style version", BIODATA_STYLE)
report("Focused version", FOCUSED)
if MINE.strip():
report("Your version", MINE) Output
In 7.4 s a reader at 238 words a minute gets through 29 words.
In 30 s a reader at 238 words a minute gets through 119 words.
Biodata-style version (61 words). First measured result: none.
7.4 s reads 29 words, ending '…Single Career objective: To work in a challenging': no result to judge
30 s reads 61 words, ending '…CGPA 8.2/10 Experience: Software Engineer at Example Logistics': no result to judge
Focused version (49 words). First measured result: word 22, '420 ms'.
7.4 s reads 29 words, ending '…420 ms to 180 ms. Software Engineer, Example': the result is read
30 s reads 49 words, ending '…a deploy takes 9 minutes instead of 40.': the result is read
Recorded with Python 3.14.8 on macOS 26 arm64. To run it yourself: mise exec python@3.14.8 -- python3 first_screen.py
Runs on this device, in your browser. The first run downloads Python (about 13.5 MB), which is kept for the next runs.
Your run, in this browser
In 7.4 seconds the biodata-style version shows a heading, the name, four personal details and the first words of a
career objective, and nowhere in its 61 words is there a result anyone could judge. The focused version reaches its first measured result,
“420 ms”, at word 22, inside the 29. Real screens skim rather than read every word: the recruiters in the Ladders study
scanned job titles and the left side of the page, which is why bold titles and short bullets help. Either way, the
first lines of page one carry the decision. To measure your own, press Edit, paste the first lines of your resume
between the quotes of MINE and run the program: it says at which word your first measured result appears.
Key idea
Put the evidence you most want read in the first lines of page one, your name, the role you want and one measured result, because a first screen may end there.
Checkpoint
Check: What a first screen reaches
A resume, a CV and a biodata are different documents
A UK employer asking for a CV and a US employer asking for a resume want the same document. Two other documents share these names but not their purpose, and sending one of them by mistake shows a reader the wrong things:
| Document | Where the name is used | Usual length | What it holds |
|---|---|---|---|
| Resume | The United States and Canada, for jobs outside academia | One page, two with more experience | Your evidence for one kind of job: experience, projects, education, skills |
| CV for a job | The UK, the EU and many other countries | The same as a resume | The same content under another name |
| Academic CV | Teaching and research posts | 2 to 4 pages early on, 4 to 7 later | A complete record: research, teaching, publications, presentations |
| Marriage biodata | Families arranging a marriage | Not a job document | Personal and family details, not evidence of work |
The lengths come from MIT’s careers office, which describes resumes as typically one to two pages and an academic CV: A curriculum vitae for teaching and research posts: a complete record of research, teaching, publications and presentations, which grows longer with a career. as two to four pages for a younger professional and four to seven with more experience. It also notes that in some countries “CV” is used for every kind of application, and the EU’s own format, Europass, is a CV. Canada’s Job Bank asks you to limit a resume to two pages, and the UK’s National Careers Service lists the sections of a job CV: contact details, an introduction, education, work history and references.
Biodata is a different document
In India the word biodata also names the page that families exchange when arranging a marriage, with religion, community, height and family details. Resume templates sometimes carry those fields over. Official guides elsewhere say to leave them out: the National Careers Service says not to include your age, date of birth, marital status or nationality, and Canada’s Job Bank adds weight, height and religious preference. MySmartCoPilot’s Resume Builder keeps the two apart, with separate modes for a resume and a marriage biodata.
Which document to send is the employer’s decision, not yours. Google, for one, says it has no length requirement and does not require cover letters. Another employer, a portal or a college placement office may set its own rules, and those win over any general advice, this track’s included.
Resume Builder Start a resume in the Resume / CV mode, which leaves out the personal fields a marriage biodata asks for.Checkpoint
Check: Resume, CV and biodata
Practise: keep a line, give it when asked, or leave it out
Fifteen lines from a biodata-style page are waiting to be sorted. Decide for each one whether it belongs on the resume, is given only when the employer asks, or has no place in an application; the sample tests check each group against the official guides of this lesson:
Exercise · Easy · Python
Keep a line, give it when asked, or leave it out
Asha is turning a biodata-style page into a resume for a backend role. decide.py holds 15 lines from that page in LINES, each under a short id. Write decide(): it returns a dictionary with one entry for every id in LINES, and each entry is one of the three words in CATEGORIES:
"resume": the line belongs on the resume. Your name, your city, a way to reach you and links to your work go at the top; your results and your degree go in their sections."when-asked": the information is needed later, and only when the employer asks for it, on its own form or sheet. Canada's Job Bank says to keep references on a separate sheet until they are requested, and the UK's National Careers Service says not to put someone else's contact details on a CV. A notice period belongs to the application form or the recruiter call."leave-out": the line has no place in a job application. The National Careers Service says not to include your age, your date of birth, whether you are married or your nationality; Canada's Job Bank adds weight, height and religious preference, and says never to include your Social Insurance Number, so no identity number goes on a resume. Details of your family say nothing about your work, and a career objective that names no skill or result says nothing an employer can check.
The sample tests check the three groups.
Starter code · decide.py
CATEGORIES = ("resume", "when-asked", "leave-out")
LINES = {
"name": "Asha Verma",
"email": "asha.verma@example.com",
"city": "Pune",
"github": "github.com/asha-verma-example",
"date-of-birth": "Date of birth",
"fathers-name": "Father's name and occupation",
"religion": "Religion and community",
"height": "Height and weight",
"marital-status": "Marital status: single",
"objective": "Career objective: to work in a challenging and growth-oriented environment",
"latency": "Cut p95 API latency from 420 ms to 180 ms with PostgreSQL indexes",
"degree": "B.Tech. Computer Science, Example Institute of Technology, 2022",
"references": "References: two professors, with their phone numbers",
"notice-period": "Notice period: 30 days",
"identity-number": "National identity number",
}
def decide():
"""Return {line id: "resume", "when-asked" or "leave-out"} for every line in LINES."""
# Replace this line with your decisions.
return {} The sample tests · test_decide.py
from decide import CATEGORIES, LINES, decide
def test_every_line_has_a_decision():
"""decides every line of LINES, with one of the three categories"""
decisions = decide()
assert set(decisions) == set(LINES)
for line_id, category in decisions.items():
assert category in CATEGORIES, line_id
def test_contact_details_stay():
"""keeps the name, the city, the e-mail and the GitHub link on the resume"""
decisions = decide()
for line_id in ("name", "city", "email", "github"):
assert decisions[line_id] == "resume", line_id
def test_evidence_stays():
"""keeps the measured result and the degree on the resume"""
decisions = decide()
assert decisions["latency"] == "resume"
assert decisions["degree"] == "resume"
def test_personal_attributes_go():
"""leaves out the date of birth, marital status, religion, height and weight (the official guides)"""
decisions = decide()
for line_id in ("date-of-birth", "marital-status", "religion", "height"):
assert decisions[line_id] == "leave-out", line_id
def test_family_identity_and_objective_go():
"""leaves out the family details, the identity number and the objective that names no skill or result"""
decisions = decide()
for line_id in ("fathers-name", "identity-number", "objective"):
assert decisions[line_id] == "leave-out", line_id
def test_references_and_notice_wait():
"""gives the references and the notice period only when the employer asks"""
decisions = decide()
assert decisions["references"] == "when-asked"
assert decisions["notice-period"] == "when-asked" A hint
Sort the easy ones first. The contact details and the two lines about Asha's work and degree are "resume". Then ask of each personal line: would an official guide tell her to leave it off? Only two lines are "when-asked", and both are details the employer needs once it is seriously considering her.
Results of the sample tests
| Test | Result | Details |
|---|
What your code printed
The sample tests run on this device, in your browser (Pyodide): nothing is sent to mysmartcopilot.com. The first run downloads Python (about 13.5 MB), which is kept for the next runs. A check in your browser is feedback for you, not proof that the code is right for every input.
Then test the four ideas of this lesson, one question at a time; the idea you have answered worst so far comes up first:
Practice that adapts to you
Practise this lesson
10 questions about 4 ideas of this lesson. Each answer is explained at once, and what you get right is kept in this browser.
Interview questions
Warm-up (fresher to mid-level): What is a resume for, beyond getting you shortlisted?
It has two jobs. The first is to earn the next conversation: a recruiter reads the top of page one against the posting’s requirements, often for well under a minute, so the strongest evidence has to be there. The second job starts once you are invited, because the interviewers read the resume to choose their questions. Every line is therefore a promise that you can explain it in depth: what you did, how you measured it and what you would change. A good resume is one where a screener finds the fit in seconds and an interviewer finds five minutes of substance behind each line.
An interviewer may follow that answer with two questions of their own. Choose the reply you would give, and read why the others fall short:
Checkpoint
Interview round: two follow-up questions
Two questions of this module’s bank put both jobs to work:
Model answers open with any pass: ₹79 for 1 week ($2.99), one payment that never renews.
-
Fresher to mid
An interviewer picks a technology from your skills list, one you used once in a course, and asks how you would debug it in production. What do you say in the moment, and what do you change on your resume afterwards?
-
Fresher to senior
A recruiter tells you she spends about 30 seconds on a first screen. Rewrite the top third of your resume for her: what goes there, in what order, and how would you check that the rewrite works?
Flashcards · 8 cards
Recall it, then check
Say the answer to yourself before you look: recalling it is what makes it stick.
-
What are the two jobs of a resume?
First it has to win you the next conversation. Once you are invited, interviewers pick their questions from it, so each line has to hold up when someone asks about it.
-
Which test should every line of a resume pass before you keep it?
Could you talk about it for about five minutes: what you did, why, how you measured it and what you would now do differently? A line you cannot explain may get you through a screen and then cost you the interview.
-
In what order do the readers of a typical application see it?
Software first: a tracking system stores the file and indexes its text. A recruiter then checks the fit with the posting, the hiring manager reads for depth, and each interviewer rereads the page before their round. Some employers merge or skip steps.
-
What does each reader of an application need from the page?
The tracking system needs readable text in sections it can recognise. The recruiter needs the posting's requirements easy to spot near the top. Hiring managers and interviewers need substance: what you built, how big it was and what changed.
-
About how many words does a short first screen cover?
At an average adult silent reading rate of 238 words a minute, a 7.4-second look takes in about 29 words and a 30-second skim about 119. Your name, your target role and one measured result should sit in the opening lines.
-
How do a resume, a job CV, an academic CV and a marriage biodata differ?
A resume (US and Canada) and a CV for a job (UK, EU and elsewhere) are one document under two names. An academic CV records research and teaching in full and grows long. A marriage biodata holds family details and is not a job document.
-
Which personal details do official guides tell job seekers to leave off?
The UK's National Careers Service names age, date of birth, marital status and nationality; Canada's Job Bank adds weight, height and religious preference. Templates modelled on a biodata sometimes keep such fields by mistake.
-
Whose rules decide which document you send, and in what form?
The employer's. A company, a job portal or a college placement office may set its own length, format or cover-letter rules, and those come before any general advice.
Key takeaways
- A resume earns the next conversation and then becomes the script of the interview, so every line must be one you can explain in depth.
- An application meets software first, then a recruiter, a hiring manager and the interviewers, and each needs something different from the same page.
- A first screen is short: at 238 words a minute, 7.4 seconds covers about 29 words and 30 seconds about 119, so the first lines of page one carry your strongest evidence.
- A resume, called a CV in many countries, is neither an academic CV nor a marriage biodata, and the employer decides which document it wants and in what form.
Terms in this lesson
- academic CV
- A curriculum vitae for teaching and research posts: a complete record of research, teaching, publications and presentations, which grows longer with a career.
- hiring manager
- The person who leads the team a new hire would join. They read applications for depth and share in the decision to hire.
References
- Our hiring process (How we hire) (Google Careers)
- Interviewing at Google: best practices, advice and tips (Google Careers)
- How we hire (hiring tips) (Microsoft Careers)
- Atlassian engineering interview guide (Atlassian)
- Unsuccessful resume parse (Greenhouse Support)
- How to write a good resume (Job Bank, Government of Canada)
- Eye-Tracking Study (archived copy of the report) (Ladders)
- How many words do we read per minute? A review and meta-analysis of reading rate (Journal of Memory and Language (Brysbaert))
- How to write a CV (National Careers Service (UK))
- Create your Europass CV (Europass, European Union)
- Curricula vitae (CVs) (MIT Career Advising and Professional Development)
- Resumes (MIT Career Advising and Professional Development)
Related tools
Report a problem with this lesson
Kept only in this browser. Your Learn progress