The moment it happens
Screen job applications with AI and log them in a sheet
Every application is rated against your job description, logged in a sheet, and both HR and the candidate get an email.
- Runs
- The moment it happens
- Apps
- Gmail, Google Sheets
- AI
- Yes, uses the built-in AI allowance
- Access
- Sheets read+write; Gmail gmail.send
Send this to your assistant
Create a ClickRuntime automation: when an application arrives on my trigger link, rate the CV against the job description, add a row with the score to my sheet, and email HR and the candidate.
First time? Adding ClickRuntime to your assistant takes about two minutes.
Why use it
Why teams use this automation
A growing cafe chain posts a shift manager role and gets eighty applications in a week. The owner reads them at night, loses track of who she has seen, and some candidates never hear back at all.
Rating each application as it arrives gives her a sorted list in a sheet and a first view of who fits. Every candidate gets a confirmation that their application was received, which protects the business's reputation as an employer.
What you get out of it
A shortlist without reading every CV first
Each application comes with a score and a short reason. You start with the strongest and still have every CV on file.
Every candidate hears back
An acknowledgement goes out as soon as each application arrives. Candidates are not left wondering whether it arrived.
One sheet for the whole role
Names, contact details, scores and reasons sit in one place the hiring team can sort and filter.
The same yardstick for everyone
Every CV is compared with the same job description, so the first applicant and the last get the same consideration.
How it works
What happens, step by step
It starts the moment an application is sent to your trigger link.
AI compares the CV with your job description and gives a score out of 10 with a short reason.
A row with the candidate's name, email, score and reason is added to your applicants sheet.
HR gets an email with the score, and the candidate gets a confirmation that their application arrived.
Before it runs live
- Connect Google through your own Google app (a one-time, 10-minute setup), so it works with your own Gmail
- Connect your Google Sheets account and pick the spreadsheets it may use
- Paste your automation's link into the other app's webhook settings
What you get
Build your own
Need it to work differently?
Your own rules
Conditions, thresholds, filters and exceptions, written the way you'd explain them to a colleague.
Any number of apps
One automation can read from one app and update several others. Over 248 apps are ready, and anything with an API works too.
AI where it helps
Summaries, classification, extraction and drafts use ClickRuntime's built-in AI, with no extra key.
On a schedule or on each event
Runs as often as every 5 minutes, or the moment an app sends an event, and keeps track of what it already handled.
Changes you can ask for
- Act only on the items that match your own rules, and skip the rest
- Change what the AI looks for, or how it writes the result
- Add another app, for example also send it to Slack
- Combine it with other Gmail and Google Sheets steps into one automation
Under the hood
The code that runs this automation
import base64
from email.message import EmailMessage
from google.oauth2.credentials import Credentials
from googleapiclient.discovery import build
from clickruntime import on_event, credentials, ai
SHEET_ID, HR_EMAIL = "your-applicants-sheet-id", "hr@example.com"
JOB = "Shift manager: 2+ years supervising staff, cash handling, food safety certificate."
def send(gmail, to, subject, text):
msg = EmailMessage()
msg["To"], msg["Subject"] = to, subject
msg.set_content(text)
gmail.users().messages().send(userId="me", body={"raw": base64.urlsafe_b64encode(msg.as_bytes()).decode()}).execute()
@on_event
def handle(event):
a = event.event
schema = {"type": "object", "properties": {"score": {"type": "integer"}, "reason": {"type": "string"}}, "required": ["score", "reason"]}
res = ai.generate(f"Rate this CV 1-10 against the job.\nJob: {JOB}\nCV: {a.get('cv', '')}", json_schema=schema).json
creds = Credentials(credentials.connection("google", "work"))
build("sheets", "v4", credentials=creds, cache_discovery=False).spreadsheets().values().append(
spreadsheetId=SHEET_ID, range="Applicants!A:D", valueInputOption="USER_ENTERED",
body={"values": [[a.get("name"), a.get("email"), res["score"], res["reason"]]]}).execute()
gmail = build("gmail", "v1", credentials=creds, cache_discovery=False)
send(gmail, HR_EMAIL, f"New applicant: {a.get('name')} ({res['score']}/10)", res["reason"])
send(gmail, a.get("email"), "We received your application", "Thanks for applying. We will be in touch within a week.")
return {"score": res["score"]}FAQ
Common questions
Does AI make the hiring decision?
What does the candidate's email say?
Where do applications come from?
What permissions does it need?
Does it need AI?
How many runs does it use?
Can I change how it works?
Related
You might also like
Add event sign-ups to a sheet and send a confirmation
Each registration lands in your Attendees sheet and the person gets a confirmation email straight away.
See how it worksLog PDF invoices from Gmail in a spreadsheet
Every invoice that arrives by email is added as a row in your Invoices sheet with supplier, date, number and total.
See how it worksDraft a LinkedIn post from your content sheet every weekday
Each weekday you get an email with a ready-to-edit LinkedIn post about the next idea in your Content sheet.
See how it worksKeep exploring
Set up “Screen job applications with AI and log them in a sheet” from your assistant
Copy the prompt above, or connect your assistant first. Free plan, no credit card.