From a pile of CVs to a ranked shortlist
How a growing digital agency swapped hours of reading CVs for a scored, sortable sheet, with a person still making every hiring call.
01 At a glance
The short version
A growing digital agency hires most months and gets about 50 applications for every role. We set up a workflow that reads each CV as it arrives, scores it from 1 to 10 and adds it to one sheet the team can sort by score.
Growing digital agency
About 40 staff. Hires developers, designers and account managers, with about three roles open each month.
Every CV read by hand
About 50 applications a role. Each CV takes around 8 minutes to read and type up, and good people wait in the inbox.
A workflow that reads and scores
Each CV email is filed, read by AI and scored 1 to 10 against the role. One row lands in a Google Sheet.
Three minutes a CV
Down from 8 by month 3, returning 30 hours of review time across 90 days. The hiring manager still decides who interviews.
The shift
Before: every CV opened, read and typed into a tracker by hand, in whatever order the emails arrived. After: every CV arrives already summarised and scored, so the team starts with the strongest applicants.
02 The pain
Every role starts
with a pile of CVs
Hiring is about judging people. Most of the time goes on reading and retyping.
Every CV read from the top
Someone opens each email, downloads the file and reads it to find the education, the jobs and the skills. At 50 applications a role, that is a long afternoon for every role.
Details retyped into a tracker
Name, email and phone number go into a spreadsheet by hand. Typos creep in, and one wrong email address means a good candidate never hears back.
Scoring depends on who reads it
A tired reader at 4pm scores differently from a fresh one at 9am. Two people can rate the same CV differently, and nobody can say why.
Good applicants wait in the inbox
When reading takes this long, the CVs at the bottom of the pile get looked at last. By then the best candidates may have taken another job.
03 The solution
A workflow that reads,
scores and files every CV
A CV arrives by email. The workflow files it, reads it and scores it against the job requirements. It then adds one row to a Google Sheet. It checks for new email every minute, so no CV sits unread.
The workflow watches the hiring inbox. When an email arrives with an attachment, it saves the CV to a Drive folder and turns the PDF into text.
One AI step pulls out the name, email and phone number. A second writes a short summary of education, work history and skills, then scores the CV from 1 to 10 with a reason.
A short script splits the AI's answer into columns. One row is added to the Applicant List sheet: contact details, summary, score and reason.
Human review stayed in
A person makes every hiring call. The score tells the team where to look first. A recruiter opens the CVs behind the top scores, reads the reasons and decides who gets an interview. Nobody is turned down by a score alone.
04 Implementation
What we set up,
and what each part does
Eight parts, each with one job, running in this order. Most of the setup is connecting accounts and writing the job requirements.
| Part | What it gave the team |
|---|---|
Gmail trigger | Spots a new CV email within a minute and picks up the attachment |
Drive filing | Saves every CV in one folder, so the original is always to hand |
PDF to text | Turns the CV file into plain text the AI can read |
Details finder | Pulls out the name, email address and phone number |
AI scorer | Summarises education, work history and skills, then scores 1 to 10 against the job requirements (OpenAI GPT-4o mini) |
Code step | Splits the AI's answer into separate fields, so the score gets its own column |
Merge | Joins the contact details and the scored summary into one record |
Google Sheet | Adds one row per candidate to the Applicant List |
Connect the hiring Gmail, the Drive folder and the Google Sheet. Set up the sheet columns.
Write the job requirements into the scorer. Run it on past CVs the team has already rated and compare the scores.
Agree who sees the sheet, how the score is used and how to change the requirements for each new role.
05 Under the hood
The script behind
the score column
The AI writes its answer as text. A short script, 38 lines of JavaScript, reads that text and splits it into sections and a score. It then hands back one flat row, which is why the sheet can be sorted by score. These are the first 29 lines.
A small finder. Give it a heading such as Skill Set and it returns the text under that heading.
It runs the finder four times: education, job history, skills and the evaluation.
It finds the score, such as 4/10, and the reason. Each gets its own column, so the team can filter to scores of 8 to 10.
06 The score
One number and
one reason per CV
The scorer reads the CV against the job requirements. It judges three things: education, work experience and skills. Then it gives a score and a short reason.
| Band | Score | What the scorer means |
|---|---|---|
| Weak match | 1 to 3 | Little of what the role needs |
| Moderate match | 4 to 6 | Some of what the role needs, with gaps |
| Strong match | 7 to 8 | Most of what the role needs |
| Excellent match | 9 to 10 | A perfect fit, or better than the role asks for |
Same three sections every time
Every CV gets the same summary: education, job history and skill set. Reviewers compare like with like.
A score with a reason
The reason sits next to the number. A reviewer can see why a CV scored 4 before deciding whether to agree.
Personal details kept apart
Contact details go in their own columns. The AI is told to leave them out of the summary, so it stays on skills and experience.
Short and formal
The instructions rule out chatty wording and padding, so every summary reads the same way.
07 The sheet
One row per candidate,
ready to sort
Every CV ends up as one row in a Google Sheet called Applicant List. The columns are always the same.
| Column | What goes in it |
|---|---|
| Name, email, phone | Found by the details step, so the team can reply without opening the CV |
| Educational qualifications | A short summary of study and qualifications |
| Job history | Roles, employers and what the person did, in brief |
| Skill set | The skills the CV shows, matched to the role |
| Score | A number out of 10 |
| Justification | A short reason for the score |
Sort by score
Show only 8 to 10 and the shortlist fits on one screen.
The CV is still there
Each file is saved in a Drive folder, so the team can open the CV behind any row.
Details already filled in
Name, email and phone arrive in their own columns. No typing, so no typos.
08 The outcome
What changes,
and what we delivered
Each pain point saw a matching change. The biggest was reading time, falling from about 8 minutes a CV to about 3 by month 3.
| Area | Before | After 90 days |
|---|---|---|
| Reading CVs | Every CV opened and read in full, about 8 minutes each | A summary and score read first, about 3 minutes a CV by month 3 |
| Contact details | Typed into a tracker by hand | Filled in by the workflow, with the original CV filed in Drive |
| Scoring | Depends on who reads it and when | Same job requirements and same 1 to 10 scale on every CV |
| Waiting applicants | The best candidates sit in the inbox | Every CV scored soon after it arrives, so the strongest are seen first |
The 90-day rollout
Went live on one open role. The team read the summary and checked the CV behind it, about 5 minutes each.
Adjusted the job requirements wherever the score and the team disagreed. Reading time dropped to about 4 minutes.
Used the score to set the reading order on every role. The team opened the full CV for top scores, settling at 3 minutes each.
Measured operational return
These numbers reflect verified time tracking and hiring throughput across live applicant cohorts after 90 days of active use.
09 The numbers
Cost per CV
down to $3.27
Screening 150 CVs a month cost about $1,200 in staff time before. By month 3 the same work cost $490 in total.
The team reads a summary and a score first, and opens the full CV where it counts.
Screening time for 150 CVs. It falls as the team learns to trust the score.
Staff time plus the $40 a month running cost.
Month by month
| Measure | Before | Month 1 | Month 2 | Month 3 |
|---|---|---|---|---|
| Minutes per CV | 8 | 5 | 4 | 3 |
| Screening hours | 20.0 | 12.5 | 10.0 | 7.5 |
| Staff cost at $60 an hour | $1,200 | $750 | $600 | $450 |
| Running cost | $0 | $40 | $40 | $40 |
| Total cost | $1,200 | $790 | $640 | $490 |
| Cost per CV | $8.00 | $5.27 | $4.27 | $3.27 |
hours back for the team over 90 days (7.5 + 10.0 + 12.5). After running costs that saves $1,680, or gives time to read 225 more CVs at today's pace of 8 minutes each.