Skip to content
Case study · Recruiting agency

Every applicant scored and ranked about 20 seconds after they apply.

A recruiting agency in Charlotte, North Carolina, stopped reading every resume first. AI reads each application, scores it against the role and ranks it in Google Sheets, so recruiters start at the top of the list.

Industry
Recruitment & staffing
Function
Candidate screening
Scope
AI resume screening
Executive summary

The 30-second version

A recruiting agency in Charlotte, NC receives 500+ applications a month through a Tally form, each with a resume in whatever format the candidate had. Someone had to open, read and judge every one before a shortlist existed. We built an n8n workflow that reads each resume, scores it against the role and logs a ranked row in Google Sheets about 20 seconds after the candidate applies. Before choosing the AI model, we tested 7 model setups on the same resumes and picked the one with the best balance of ranking accuracy, speed and cost: under $2 in AI fees per 500 resumes.

Challenge

Read everything first

Every application opened, read and judged by a person before anyone knew who was worth a call.

Solution

AI first-pass screening

Tally → n8n → AI reads and scores → a ranked row in Google Sheets, with no copying or pasting.

Key results

~20 s per applicant

Every good-fit test candidate ranked above every poor fit, from PDFs, scans and phone photos alike.

Outcome

Recruiters start at the top

The first pass is done before anyone opens the sheet, for less than $2 in AI fees per 500 resumes.

Client overview

Who we built this for

The agency is not named. The profile below reflects the real engagement.

Industry
Recruitment & staffing
Location
Charlotte, North Carolina, USA
Team involved
Agency owner & recruiters
Application intake
Tally form: answers + resume upload
Volume
500+ applications a month
Where results live
Google Sheets, one ranked row per applicant
Project scope
AI resume parsing, scoring & ranking
Handover
Documented, so the owner manages it day to day
The business challenge

Finding candidates wasn’t the problem. Reading all of them was.

The owner’s brief was blunt: screen every applicant and log ranked results, with zero manual work, at 500+ submissions a month.

Reading time at volume

At 500+ applications a month, a careful first read of each one adds up to dozens of recruiter hours, before a single phone call.

Resumes in every format

Two-column templates, tables, dense one-pagers, scanned PDFs, phone photos. Basic PDF-to-text tools break on half of them.

Judgement varied by reader

Two recruiters reading the same resume could rank it differently. There was no shared yardstick for “good fit”.

Strong candidates wait

Good applicants sat in the queue with everyone else. In a market where the typical role takes 39–44 days to fill, slow first contact costs placements.

Copy and paste into the sheet

Name, email, LinkedIn and notes typed by hand into a spreadsheet, one applicant at a time.

It had to stay cheap

A tool that costs more per applicant than it saves isn’t a tool. Running cost at 500+ a month was a hard requirement.

Before · the manual workflow

Six manual steps for every applicant

Repeated 500+ times a month, with the ranking living in each recruiter’s head.

  1. Step 1

    Check

    Look for new Tally submissions.

    Batch, not live
  2. Step 2

    Download

    Open the resume file, whatever format it’s in.

    Every format
  3. Step 3

    Read

    Work out experience, skills and location.

    Minutes each
  4. Step 4

    Judge

    Compare against the role from memory.

    Inconsistent
  5. Step 5

    Type up

    Copy name, email and LinkedIn into the sheet.

    Manual entry
  6. Step 6

    Rank

    Sort by gut feel into a shortlist.

    Days later
Objectives

What success needed to look like

Taken straight from the owner’s brief, then turned into targets we could test against.

Zero manual entry

Every applicant lands in the sheet with name, email, LinkedIn, score and summary, without anyone typing.

Target: no copy and paste

Any resume format

Read two-column layouts, tables, scans and phone photos as reliably as a clean PDF.

Target: every test format parsed

A ranking you can trust

Good fits must land above poor fits, every time, with a reason a recruiter can check.

Target: no poor fit above a good fit

Fast enough to act on

The score should be there before a recruiter next looks at the sheet, not the next morning.

Target: under 30 seconds per applicant

Cheap at 500+ a month

Running cost per applicant has to be small enough that volume never becomes a budget question.

Target: a few dollars a month in AI fees

The owner can run it

Change the role, the criteria or the sheet without calling a developer.

Target: documented handover
Solution overview

Why n8n, and why two AI steps instead of one

The brief asked us to recommend a stack: Zapier, Make, n8n or custom code. We chose n8n. Zapier and Make bill per task, and this workflow runs several steps per applicant, so at 500+ a month the platform fee would grow with every hire. n8n runs the same flow on a flat-cost server, keeps the logic visible to the owner, and still connects natively to Tally and Google Sheets.

Inside the workflow, we split the AI work into read, extract and score. A document model turns any resume into clean text. A small language model pulls out the candidate’s details into a fixed structure, then scores them against a weighted rubric for the role. Small, focused steps are cheaper, faster and easier to check than one large prompt that does everything.

Our thinking

Finding the balance between accuracy, speed and cost.

The most expensive model is rarely the right one for screening. Before choosing, we ran the same mixed-format test set through 7 model setups and compared them on ranking accuracy, speed, consistency and cost. Here is what we measured.

Trade-off

AI cost per 500 resumes vs. processing time

Each dot is one model setup. Down and to the left is better. Every setup ranked candidates correctly except one.

Chosen setupOther setups testedRanked a poor fit above a good fit
Running cost

Monthly AI fees as applications grow

Calculated from measured cost per resume. Even at 2,000 applications a month, the chosen setup stays under $8.

GPT-5.4 mini (chosen)GPT-5.1 (largest tested)GPT-4o mini (cheapest)
All 7 setups on the same test set
Model setupAI cost / 500 resumesProcessing time / resumeGood fits ranked above poor fitsScore swing between runsVerdict
GPT-5.4 mini, no reasoning$1.819.0 s100%4.3 ptsChosenFastest, correct ranking, current model
GPT-4o mini$0.3311.3 s100%2.4 ptsRunner-upCheapest and steadiest, older generation
GPT-5.4 nano$0.5710.8 s100%5.1 ptsViableGood value, slightly noisier
GPT-4.1 mini$0.7610.2 s100%7.8 ptsViableScores drift more between runs
GPT-5 mini, minimal reasoning$0.9314.7 s100%3.9 ptsSlowerSlowest setup tested
GPT-5.1, no reasoning$4.4012.3 s100%5.5 ptsOverkill2.4× the cost, no ranking gain
GPT-5.4 mini, low reasoning$2.5011.1 s93%10.8 ptsRejectedMore thinking, worse screening
Finding 01

Ranking is easy; consistency is not

Six of seven setups put every good fit above every poor fit. What separated them was speed, cost and how much a score moved when the same resume ran twice.

Finding 02

More “thinking” made it worse

Turning on reasoning raised cost by 38%, slowed each resume by 2 seconds and more than doubled the score swing. For a fixed rubric, the model overthought it.

Finding 03

Cost is not the constraint

At 500 applications a month, the cheapest and chosen setups differ by about $1.50. That made speed and model longevity the deciding factors, not price.

Finding 04

Facts belong in code

Every model read names, emails and LinkedIn URLs correctly. Years of experience was the weak spot when a resume’s summary and dates disagreed, so dates are counted by the workflow, not guessed by AI.

Finding 05

Read once, score separately

The document model reads a resume in about 4 seconds for a fraction of a cent. Keeping it separate from scoring means a format problem never costs a scoring run.

Finding 06

Fixed output, zero parsing failures

Every AI response is forced into a fixed schema. Across every test run, not one came back in a shape the sheet couldn’t take.

How it works

From application form to ranked spreadsheet.

The agency kept the tools it already used. Tally stays the front door, Google Sheets stays the shortlist. n8n does everything in between.

01Candidates apply
Tally application formAnswers plus a resume upload
Any resume formatPDFs, tables, scans, phone photos
The role’s requirementsSkills, experience, education, location
02Automation layern8n + AI
ReadDocument AI turns the resume into clean text (~4 s)
ExtractName, email, LinkedIn, roles, skills, education
ScoreWeighted rubric, matched and missing skills, summary
ValidateFixed schema; experience counted from dates
OrchestrateRetries, error alerts, file storage
03Google SheetsThe ranked shortlist
Name, email, LinkedIn
Score & recommendation
Two-sentence summary
Matched & missing skills
Link to the original resume
04Outcomes
Scored in ~20 secondsFrom submit to ranked row
Recruiters start at the topBest fits first, every role
One yardstickEvery applicant judged the same way
Under $2 per 500AI fees stay a rounding error
End resultThe agency keeps its form and its spreadsheet. The reading, typing and first-pass ranking happen on their own, and recruiters make every hiring decision.
Worked example

One role, two applicants, the real output.

Two fictional test resumes for the same Sales Executive role. The scores, skills and summaries below are exactly what GPT-5.4 mini returned in testing.

01The resume
Marcus Bell
Account Executive · Charlotte, NC · linkedin.com/in/marcusbell
Summary

Account Executive with 5 years of experience.

Experience

Account Executive, Piedmont Office Supply · 2021–present

  • Owned day-to-day sales work, supporting a team of 8.
  • Used CRM and lead generation to improve weekly reporting and follow-up.

Associate, Earlier Employer LLC · 2019–2021

Skills

Sales, CRM, Lead Generation, Communication, Negotiation

Education

B.S. Business Administration, UNC Charlotte

02The role’s criteria
Role
Sales Executive
Required skills
Sales · Communication · Lead Generation · CRM
Preferred skills
Negotiation · Microsoft Excel · Presentation Skills
Experience
2+ years
Education
Diploma or above
Location
United States

Weighting: required skills 40% · experience 35% · preferred skills 10% · education 10% · location 5%

03The AI’s assessment
89/100
Strong match
Required skills
SalesCommunicationLead GenerationCRM
Preferred skills
NegotiationMicrosoft ExcelPresentation Skills
Summary

“Marcus Bell is a strong match for the Sales Executive role. He exceeds the minimum experience requirement, matches all required skills, has one preferred skill, and is based in the United States. The main minor gap is that his education does not exactly align with the Diploma requirement, but overall the profile is highly relevant.”

04The row in Google Sheets
NameEmailLinkedInScoreRecommendationMissing required
Marcus Bellmarcus.bell@example.comlinkedin.com/in/marcusbell89Strong MatchNone
01The resume
Danielle Ortiz
Retail Associate · Raleigh, NC · linkedin.com/in/danielleortiz
Experience

Retail Associate, Triangle Outfitters · 2025–present

  • Owned day-to-day retail work, supporting a team of 4.
  • Used customer service and Microsoft Excel to improve weekly reporting and follow-up.
Skills

Retail, Customer Service, Microsoft Excel

Education

High School Diploma

Two-column template in the original PDF.

02The role’s criteria
Role
Sales Executive
Required skills
Sales · Communication · Lead Generation · CRM
Preferred skills
Negotiation · Microsoft Excel · Presentation Skills
Experience
2+ years
Education
Diploma or above
Location
United States

Weighting: required skills 40% · experience 35% · preferred skills 10% · education 10% · location 5%

03The AI’s assessment
25/100
Weak match
Required skills
SalesCommunicationLead GenerationCRM
Preferred skills
NegotiationMicrosoft ExcelPresentation Skills
Summary

“Danielle Ortiz is a retail associate with customer service and Excel experience, but the profile does not show the core sales experience or required skills for a Sales Executive role. She meets the education and location requirements, and has one preferred skill, but overall the match is weak due to missing required sales competencies and unclear relevant experience.”

04The row in Google Sheets
NameEmailLinkedInScoreRecommendationMissing required
Danielle Ortizdanielle.ortiz@example.comlinkedin.com/in/danielleortiz25Weak MatchSales, Communication, Lead Generation, CRM

Fictional candidates from our test set; contact details are placeholders. The full row also stores strengths, concerns and a link to the original resume.

After · the automated workflow

The same applicant, ranked in about 20 seconds.

The workflow does the reading, typing and first-pass scoring. Recruiters step in where judgement matters.

  1. Step 1

    Apply

    The candidate submits the Tally form with a resume.

  2. Step 2

    Read

    Any format turned into clean text in about 4 seconds.

  3. Step 3

    Extract

    Contact details, roles, skills and education pulled out.

  4. Step 4

    Score

    Weighted against the role, with a short summary.

  5. Step 5

    Rank

    A new row lands in Google Sheets, sorted by score.

  6. Step 6

    Decide

    A recruiter reviews the top of the list and calls.

Solution breakdown

What makes it different

Plenty of tools can turn a PDF into text. These are the parts that make the score something a recruiter can act on.

A score you can explain

Weighted towards what matters: required skills 40%, experience 35%, preferred skills 10%, education 10%, location 5%. Each row lists the strengths and concerns behind the number, so a recruiter can see why a candidate landed where they did.

Matched and missing skills

Each applicant’s row lists which required skills they have and which they don’t. The gap is visible before the call, not discovered during it.

Reads what others can’t

A document AI model reads the page like a person would, so two-column templates, tables, scans and phone photos all come through.

Only uses what’s on the page

The AI is told to leave a field empty rather than guess, and to judge only on what the resume says. No assumptions about missing information.

Criteria the owner can change

Each role’s required and preferred skills, minimum experience, education and location live in one place. Change them and the next applicant is scored against the new brief.

Built to keep running

Automatic retries on every AI and Google step, an alert if a run fails, and the original resume saved and linked from each row.

Controls

The AI ranks. People decide.

Screening affects people’s livelihoods, so we drew the line on purpose.

What stays with recruiters

  • Who gets a call. The score orders the list; a recruiter decides who to contact.
  • Who goes to the client. No candidate is submitted to a hiring client without a person reviewing them.
  • The criteria. The owner sets and changes what “good fit” means for each role.
  • The second look. The original resume is one click from every row, so any score can be checked.

What we deliberately did not automate

  • Rejections. The workflow never declines or emails a candidate on its own.
  • Hiring decisions. No score triggers an offer, an interview or a submission by itself.
  • Guesswork. Missing information stays missing; the AI does not fill gaps.
  • Personal traits. The rubric scores skills, experience, education and location only.
Exception exampleA resume that can’t be read (a blank page, a corrupted file) is logged with its link and flagged, rather than silently scored as zero.
Implementation

Built, tested, then handed over

Each phase ended with something the owner could check, not just a progress update.

Phase 01

Discovery

Agreed the roles, the scoring criteria and exactly which columns the sheet needed.

Phase 02

Build

Tally to n8n, document reading, extraction, scoring and the Google Sheets log, end to end.

Phase 03

Benchmark

Ran a mixed-format test set through 7 model setups and chose on accuracy, speed and cost.

Phase 04

Launch & handover

Went live with alerts and retries, plus a written guide to changing roles and criteria.

Technology stack

Each piece chosen for one job

Keep the tools the agency already knew, add only what was needed, and keep running costs flat.

Tally

The application form candidates already use, with resume upload.

n8n

The workflow engine. Flat cost per month, however many applicants.

Mistral AI

Reads PDFs, scans and phone photos into clean text.

GPT-5.4 mini

Extracts candidate details and scores them against the rubric.

Google Sheets

The ranked shortlist the recruiters work from.

Google Drive

Keeps every original resume, linked from its row.

Results & business impact

The first pass is done before anyone opens the sheet.

Measured in testing on a mixed-format resume set: clean PDFs, two-column and table layouts, scans and phone photos.

~20 s
from submitted application to a scored, ranked row in Google Sheets
100%
of good-fit test candidates ranked above every poor fit
0
failed or unreadable results in testing, scans and phone photos included
<$2
in AI fees per 500 resumes, at current list prices

At around 6 minutes for a careful first read, 500 applications is about 50 hours of reading a month. The workflow now does that first pass, and recruiters spend their time at the top of the list.

Measurement method and timeframe
Time per applicant Measured
Test resumes sent through the live workflow, one at a time: 16–21 seconds each, 18.4 seconds on average, from upload to the row appearing in Google Sheets. The chosen model’s scoring step was the fastest of the 7 setups tested.
Ranking accuracy Measured
Test set built with known good and poor fits across 5 roles. Every setup scored each resume more than once, to measure consistency. With GPT-5.4 mini, the lowest good fit scored 73 and the highest poor fit 48.
Format coverage Measured
Single-column, two-column, table and dense layouts, two scanned PDFs and one phone-style image. Every resume parsed with correct contact details, on every model.
Running cost Calculated
Token use measured per resume, priced at current OpenAI and Mistral list rates: about $0.0036 per resume for GPT-5.4 mini plus document reading. Hosting for n8n is separate.

Reading time saved is staff capacity, not a cash saving; the 6-minute read is an assumption for illustration. Typical time-to-fill of 39–44 days is SHRM’s 2025–2026 benchmark for non-executive roles. The applicant list at the top of this page is an illustrative interface with sample data.

Opportunities map

Screening was step one. Here’s what’s next.

Once every applicant arrives as structured data, the rest of the recruiting pipeline opens up. Our assessment of what to automate next, by impact and effort.

Quick winsHigh impact · low effort
Instant acknowledgementEvery applicant gets a branded “we’ve got it” email within a minute.
Interview booking for top scorersCandidates above a set score get a calendar link automatically.
Duplicate applicant checkSpot the same person applying twice or for several roles.
Strategic buildsHigh impact · more effort
Talent-pool re-matchingWhen a new role opens, re-score every past applicant against it.
Client-ready shortlistsA formatted shortlist document for the hiring client, built from the top rows.
ATS syncPush scored candidates into an applicant tracking system as the agency grows.
Nice to haveLower impact · low effort
Weekly pipeline digestApplicants per role and score spread, sent every Monday.
Missing-info follow-upAsk applicants for a missing LinkedIn or work-authorisation answer.
LaterLower impact · more effort
Reference-check collectionRequest and collect references for finalists.
Placement analyticsLink scores to who actually got hired, to tune the rubric over time.
Key takeaways

Why it matters

~20 s per applicant
Every application is read, scored and ranked before a recruiter next opens the sheet. Strong candidates no longer wait behind everyone else.
Tested, not assumed
We chose the model by running the same resumes through 7 setups. The most expensive was not the most accurate, and adding “reasoning” made screening worse.
<$2 per 500
AI fees stay a rounding error as volume grows, and n8n keeps the platform cost flat. Volume never becomes a budget question.
FAQ

AI resume screening questions.

What recruiting teams usually ask before automating their first-pass screening. Can’t find yours? Ask us directly below.

How accurate is AI resume screening?

Accurate enough to order a list, which is its job here. In our tests on a mixed-format resume set, every good-fit candidate scored above every poor fit, and every name, email and LinkedIn URL was read correctly. Accuracy depends most on clear criteria for each role, so we agree those first. A recruiter still reviews the shortlist before anyone is contacted.

How much does it cost to run per resume?

For this build, AI fees came to about $0.0036 per resume at current list prices: under $2 for 500 resumes and about $7 for 2,000. Hosting for n8n is a separate flat monthly cost. The build itself is quoted after a free discovery call, based on your roles, volume and tools.

Can it read scanned resumes, photos and two-column templates?

Yes. A document AI model reads each page the way a person would, rather than relying on the PDF’s text layer. In testing it read single-column, two-column, table-based and dense layouts, two scanned PDFs and a phone-style photo, with correct contact details on all of them.

Does the AI reject candidates or make hiring decisions?

No. It reads, scores and ranks. It never declines, emails or submits a candidate on its own, and no score triggers an interview or an offer. Recruiters decide who to call and who goes to the hiring client, and the original resume is one click from every row.

Why n8n instead of Zapier or Make?

Zapier and Make bill per task, and screening one applicant takes several steps, so cost grows with every application. n8n runs the same workflow on a flat-cost server, keeps every step visible to the owner, and connects natively to Tally, Google Sheets and the AI models. For low volumes, Zapier or Make can be the simpler choice.

Will it work with our application form or ATS?

Usually. This agency uses Tally, but the same flow can start from Google Forms, a website form, an email inbox or an applicant tracking system with an API, and write results to Google Sheets, Airtable or the ATS itself. We confirm the connection points during discovery.

How do you choose which AI model to use?

We test, rather than assume. For this build we ran the same resumes through 7 model setups and compared ranking accuracy, speed, consistency between runs and cost. The largest model cost 2.4× more with no ranking gain, and adding “reasoning” made scores less stable, so we chose a fast small model. The model can be swapped later without rebuilding the workflow.

What happens to candidate data?

Resumes are read by the AI providers’ APIs and the results land in the agency’s own spreadsheet, with the original file stored alongside. The AI only scores skills, experience, education and location. Data handling, AI providers and hosting are confirmed per project.

Have a similar process?

How many hours go into reading applications?

Start with a free discovery. We’ll walk through how your team screens candidates today, then prepare a tailored initial plan and proposal. Implementation is quoted after discovery.