Logo
Case study
Hiring · Digital agency

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.

8 → 3Minutes to screen a CV
30Hours saved across 90 days
1 to 10Score on every CV, with a reason

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.

The client

Growing digital agency

About 40 staff. Hires developers, designers and account managers, with about three roles open each month.

The pain

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.

The solution

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.

The outcome

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.

01

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.

02

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.

03

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.

04

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.

The real cost. At 3 roles a month and about 50 CVs each, the team reads 150 CVs. At 8 minutes each, that is 20 hours a month, or about $1,200 of staff time at $60 an hour.

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.

Step 1 · Collect

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.

Step 2 · Read and score

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.

Step 3 · Sort

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.

CV email inGmail inbox, PDF attached AI reads and scoresSummary, 1 to 10, a reason Scored sheet outOne row per candidate

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.

PartWhat it gave the team
Gmail triggerSpots a new CV email within a minute and picks up the attachment
Drive filingSaves every CV in one folder, so the original is always to hand
PDF to textTurns the CV file into plain text the AI can read
Details finderPulls out the name, email address and phone number
AI scorerSummarises education, work history and skills, then scores 1 to 10 against the job requirements (OpenAI GPT-4o mini)
Code stepSplits the AI's answer into separate fields, so the score gets its own column
MergeJoins the contact details and the scored summary into one record
Google SheetAdds one row per candidate to the Applicant List
Day 1 · Connect

Connect the hiring Gmail, the Drive folder and the Google Sheet. Set up the sheet columns.

Day 2 · Tune

Write the job requirements into the scorer. Run it on past CVs the team has already rated and compare the scores.

Day 3 · Handover

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.

Code step (JavaScript)
Code that splits the AI's answer into sections, a score and a reason, lines 5 to 29
Lines 5 to 9

A small finder. Give it a heading such as Skill Set and it returns the text under that heading.

Lines 12 to 15

It runs the finder four times: education, job history, skills and the evaluation.

Lines 21 to 29

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.

4/10An applicant for a software engineer role scored 4/10. The reason given: solid foundational education and some relevant skills, but little industry experience, especially in scalable systems and the cloud.
BandScoreWhat the scorer means
Weak match1 to 3Little of what the role needs
Moderate match4 to 6Some of what the role needs, with gaps
Strong match7 to 8Most of what the role needs
Excellent match9 to 10A perfect fit, or better than the role asks for
Format

Same three sections every time

Every CV gets the same summary: education, job history and skill set. Reviewers compare like with like.

Reasoning

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.

Privacy

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.

Style

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.

8Columns on every row. Three hold contact details, three hold the summary, and two hold the score and the reason.
ColumnWhat goes in it
Name, email, phoneFound by the details step, so the team can reply without opening the CV
Educational qualificationsA short summary of study and qualifications
Job historyRoles, employers and what the person did, in brief
Skill setThe skills the CV shows, matched to the role
ScoreA number out of 10
JustificationA short reason for the score
Sort

Sort by score

Show only 8 to 10 and the shortlist fits on one screen.

Original

The CV is still there

Each file is saved in a Drive folder, so the team can open the CV behind any row.

No retyping

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.

AreaBeforeAfter 90 days
Reading CVsEvery CV opened and read in full, about 8 minutes eachA summary and score read first, about 3 minutes a CV by month 3
Contact detailsTyped into a tracker by handFilled in by the workflow, with the original CV filed in Drive
ScoringDepends on who reads it and whenSame job requirements and same 1 to 10 scale on every CV
Waiting applicantsThe best candidates sit in the inboxEvery CV scored soon after it arrives, so the strongest are seen first

The 90-day rollout

Days 1 to 30 · Run alongside

Went live on one open role. The team read the summary and checked the CV behind it, about 5 minutes each.

Days 31 to 60 · Tighten

Adjusted the job requirements wherever the score and the team disagreed. Reading time dropped to about 4 minutes.

Days 61 to 90 · Rely on it

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.

8 → 3
Minutes per CV

The team reads a summary and a score first, and opens the full CV where it counts.

20.0 → 7.5
Hours a month

Screening time for 150 CVs. It falls as the team learns to trust the score.

$8.00 → $3.27
Cost per CV

Staff time plus the $40 a month running cost.

Month by month

MeasureBeforeMonth 1Month 2Month 3
Minutes per CV8543
Screening hours20.012.510.07.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
+30

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.

How these numbers work. 3 roles a month and 50 CVs a role, so 150 CVs a month. Reading time dropped from 8 minutes down to 5, 4 and 3 in months 1 to 3. Staff time is valued at $60 an hour with a running cost of $40 a month. Over three months staff time fell from $3,600 to $1,920, returning 30 hours of review time.