Skip to content

Screen every job applicant against the role and get a scored shortlist

Starts when new applications arrive for a role. Ends with a scored shortlist, a written reason for each candidate, and unreadable files sent to a person.

Bring the step you are stuck on: 30 minutes, a straight answer and the next step. If you would rather have it built, a reply within 5 working days.

The route

Results sheet

7 steps: 3 rule steps, 1 AI step and 1 person step

Copy, share, discuss

Copy

Available once this workflow passes its checks.

Share

todkett.com/automations/hr-recruiting/ai-resume-screening/

Discuss

Opens when the first workflow passes its checks. No GitHub account? Ask about this by form.

How the library, the tracks and the talk work: the community page.

At a glance

Starts when
A schedule per open role pulls the new applications for that role.
Input
New applications for one role, pulled from the applicant tracking system across every page.
Output
A scored shortlist, a written reason for each candidate, and unreadable files sent to a person.
AI
Uses AIScoring each readable resume against the role checklist, with a written reason.
Tools
BambooHR, OpenRouter, Google Sheets
Last stress test
No recorded run yet

01Steps

The steps

7 steps: 3 rule steps, 1 AI step and 1 person step. Example: your first job post gets 150 applicants and nobody is a recruiter. Resumes arrive in mixed formats, location rules get applied unevenly on a busy day, and good people are missed.

  1. 01Trigger

    Pull new applications

    New applications for one role, pulled from the applicant tracking system across every page.

  2. 02Rule step

    Location rules

    Location rules run first: applicants outside the area never reach the AI step.

  3. 03Rule step

    Read the resume

    Read the resume in any format, or fall back to the application answers when no file can be read.

  4. 04Person step

    Unreadable files to a person

    Unreadable files and applicants with no address go to a person, never to an automatic rejection.

  5. 05AI step

    AI scores, three votes

    AI scores the candidate against the role checklist and writes a reason, three times per candidate.

  6. 06Rule step

    Check and compute the match

    Code checks the answer format, retries an incomplete answer and computes the match from the three scores.

  7. 07Output

    Write the results

    Score, reason and decision written to a results sheet and to the applicant record.

    Results sheet

02Where AI is used

Where AI is used, and what stays with you

AI reads, judges or drafts. Fixed rules check, decide and route. A person approves anything that goes out.

AI step

Step 05

Scoring each readable resume against the role checklist, with a written reason.

Reading resumes is language work. Location rules, thresholds and the match itself stay in code.

What the model reads

  • The resume text of applicants who passed the location rules, capped at 60,000 characters.
  • The role checklist it scores against.

What it never sees or decides

  • Applicants outside the area: location rules remove them before any AI cost.
  • Files nobody can read: those go to a person.
  • The match or the threshold: code computes the match from three votes.

Model calls: 3 model calls per candidate.

Fixed rules

They check, decide and route. 3 rule steps.

  • 02Location rules
  • 03Read the resume
  • 06Check and compute the match

A person

  • 04Unreadable files and applicants with no address go to a person, never to an automatic rejection.

03Checks

Checks around the AI

What runs before the model, and what checks its answer after, in plain words. Build these into your version too.

  1. 01Location rules run before any AI cost.
  2. 02A has-document check picks how to read each file: text, image or none.
  3. 03Unreadable or address-less candidates go to a person, never to an automatic rejection.
  4. 04Resume text is capped at 60,000 characters.
  5. 05The model must answer in strict JSON; a broken answer is retried automatically.
  6. 06Three votes per candidate; code computes the match percentage.
  7. 07Spreadsheet formula injection is blocked in the output.

04The 8 checks

Stress test

The 8 checks we run on every workflow, and you can run too. A check marked Not needed says why.

Status
Not yet0 of 8 that apply have a recorded pass
Last run
No recorded run yet
Model review
Still open

Checks marked Not yet are still open. 2 of them were seen in the workflow design on 23 Oct 2026; a check shows Passed only once its test run is recorded.

  1. ST1Test set

    Status: Not yet

    No recorded test yet.

  2. ST2Prompt attack

    Status: Not yet

    No recorded test yet.

  3. ST3Run twice

    Status: Not yet

    No recorded test yet.

  4. ST4Failure recovery

    Status: Not yet

    Seen in the workflow design on 23 Oct 2026. The recorded test run is still open.

  5. ST5Load and limits

    Status: Not yet

    No recorded test yet.

  6. ST6Failure alert

    Status: Not yet

    No recorded test yet.

  7. ST7Human sign-off

    Status: Not yet

    No recorded test yet.

  8. ST8Rules around the AI

    Status: Not yet

    Seen in the workflow design on 23 Oct 2026. The recorded test run is still open.

0 passed · 0 not needed · 8 not yet

What we test

We show what we tested, never the test data. The example below is made up.

05Test replay

How to test it

Before you trust a workflow, try to break it. The sample record runs the route step by step. Each break test below gets its own replay once its recorded run exists.

Record
APP-2071
Data
Sample run, made-up data
  1. 01Pull new applications

    Application in for the support lead role

    Done
  2. 02Location rules

    Based in Bangalore: passes the location rule

    Done
  3. 03Read the resume

    PDF resume read as text

    Done
  4. 04Unreadable files to a person

    File readable: no person needed

    Skipped
  5. 05AI scores, three votes

    Scored three times against the checklist, with a reason

    Done
  6. 06Check and compute the match

    Answers valid; match computed in code

    Done
  7. 07Write the results

    One row in the results sheet

    Results sheet
    Arrived

APP-2071 reached the last station: Results sheet. One row in the results sheet.

Sample run on made-up data. No stress-test run is recorded yet, so this plays the example, not a test. Nothing runs live.

The break tests for this workflow

  • ST3

    Same input sent twice

    No recorded run to replay yet.

    Not yet
  • ST2

    Instructions hidden in the input

    No recorded run to replay yet.

    Not yet
  • ST4

    A connected service fails

    Seen in the workflow design. No recorded run to replay yet.

    Not yet
  • ST8

    The AI returns a broken answer

    Seen in the workflow design. No recorded run to replay yet.

    Not yet

06Example

The example, in and out

Made-up data, written to show the steps; no recorded run stands behind it yet. Fernway is a made-up small software company, and its address ends in .example, so it cannot belong to a real business.

InputExample

Example on made-up data: a support lead role at Fernway, based in Bangalore. Three applications: one in Bangalore with a PDF resume, one outside the area, one with a resume that is only a scanned image.

OutputExample

Outside the area: handled by the location rule, no AI call. Scanned image with no readable text: sent to a person. PDF resume: scored against the role checklist with a written reason, three votes, the match computed in code, and one row written to the results sheet.

07Limits

When not to automate this

  • It does not make hiring decisions. A person decides who moves on.
  • Rules on automated decisions about job applicants differ by place, for example New York City and the EU. Check the rules where you hire before using it.
  • With a handful of applicants a month, reading them yourself is faster than setting this up.

08What you need

What you need to run it

Each connected tool and the access it needs
ToolAccess
BambooHRRead the applications for one role and write the score and reason back
Google SheetsWrite one results sheet per role
OpenRouterOne API key with a credit limit, for the scoring step
Where it runs
In n8n, self-hosted or n8n cloud.
Model calls
3 model calls per candidate.
Running costs
Yours, paid to each service directly. Scope in writing first. A quote before any build. No prices on the site yet.

How to adapt it

Changes we have made or tested on this workflow.

  1. 01Take three AI votes per candidate and compute the match percentage in code, instead of one score.
  2. 02Run one copy per open role, each on its own schedule and role checklist.

What changed

  1. ContentFirst version, written from the 23 Oct 2026 catalog.

09FAQ

Questions people ask about it

Does AI reject candidates?

No. AI scores each readable resume and writes a reason. Location rules run first in code, and unreadable files go to a person. A person's sign-off on every rejection is check ST7, and it has not been recorded as passed yet.

Which resume formats does it read?

PDF, Word, older .doc files, RTF, HTML and images. When no file can be read, it uses the answers from the application form instead.

How is the match worked out?

The current version asks the model three times per candidate. Code checks each answer and computes the match percentage from the three scores, so one odd answer does not decide the result.

10Related

Stuck on your version of this workflow?

Bring the step that does not work. In 30 minutes you get a straight answer and the next step. If you would rather have it built, tell us your tools and the rules you already follow. Scope in writing first. A quote before any build. No prices on the site yet.