Every 30 minutes
Score CVs in a Drive folder and keep a ranked report Doc
Every CV you drop into your Applicants folder is scored against the job description and added to a ranked summary in a Google Doc.
- Runs
- Every 30 minutes
- Apps
- Google Docs, Google Drive
- AI
- Yes, uses the built-in AI allowance
- Access
- Drive read (folder); Docs write
Send this to your assistant
Create a ClickRuntime automation: score every CV in my Drive 'Applicants' folder against this job description and keep a ranked summary in a Google Doc.
First time? Adding ClickRuntime to your assistant takes about two minutes.
Why use it
Why teams use this automation
The founder of a ten-person company posts a role and gets ninety applications. The CVs land in a Drive folder and she opens them one by one in the evenings, forgetting by number forty what made number six stand out.
Scoring each CV against the same job description and keeping a running ranked list lets you start with the strongest candidates and compare people fairly.
What you get out of it
Start with the strongest applicants
A ranked list means your limited time goes to the CVs most likely to fit.
The same yardstick for everyone
Every CV is compared with the same job description, which keeps the first pass consistent.
Reasons, not just numbers
Each entry has a short note on strengths and gaps, so you know why a CV scored as it did.
Easy to share with the hiring panel
The report is a normal Google Doc that colleagues can read and comment on.
How it works
What happens, step by step
Every 30 minutes ClickRuntime checks your Applicants folder in Google Drive for new CVs.
It skips CVs it has already scored.
AI compares each new CV with your job description and gives a score out of 10 with a short note on strengths and gaps.
Each scored candidate is added to your report Google Doc.
Before it runs live
- Connect Google Docs
- Connect Google Drive
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 Google Docs and Google Drive steps into one automation
Under the hood
The code that runs this automation
from clickruntime import on_trigger, credentials, http, state, ai, report_fetched
FOLDER, DOC = "your-applicants-folder-id", "your-report-doc-id"
JOB = "Senior backend engineer: Python, Postgres, AWS, 5+ years, has led a small team."
D = "https://www.googleapis.com/drive/v3/files"
@on_trigger
def run(event):
h = {"Authorization": f"Bearer {credentials.connection('google', 'work')}"}
since = state.get("since") or "2026-01-01T00:00:00Z"
files = http.get(D, headers=h, params={"q": f"'{FOLDER}' in parents and createdTime > '{since}' and trashed = false",
"orderBy": "createdTime", "fields": "files(id,name,mimeType,createdTime)"}).json()["files"]
report_fetched(len(files))
if not files:
return {"new": 0}
lines = []
for f in files:
if f["mimeType"] == "application/vnd.google-apps.document":
text = http.get(f"{D}/{f['id']}/export", headers=h, params={"mimeType": "text/plain"}).text
else:
text = http.get(f"{D}/{f['id']}", headers=h, params={"alt": "media"}).content.decode("utf-8", "ignore")
note = ai.generate(f"Job: {JOB}\nCV:\n{text[:12000]}\nReply: score/10, one-line summary, strengths, gaps.", max_output_tokens=200).text
lines.append(f"{f['name']}\n{note.strip()}\n\n")
http.post(f"https://docs.googleapis.com/v1/documents/{DOC}:batchUpdate", headers=h, json={"requests": [
{"insertText": {"endOfSegmentLocation": {}, "text": "".join(lines)}}]})
state.set("since", files[-1]["createdTime"])
return {"scored": len(files)}FAQ
Common questions
Does the AI make the hiring decision?
Which file types does it read?
What does the report look like?
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
Create document drafts from new contract PDFs in Drive
Each contract PDF added to your Drive folder produces a draft from your Doc template with the parties, dates and amounts filled in.
See how it worksTurn PDFs in Drive into two versions of a multiple-choice test
Drop a PDF into your Drive folder and get two different multiple-choice tests on it as Google Docs.
See how it worksGet a Slack summary of each new doc in a Drive folder
Every document that lands in your Drive Inbox folder is summarised and the summary is sent to you in Slack.
See how it worksKeep exploring
Set up “Score CVs in a Drive folder and keep a ranked report Doc” from your assistant
Copy the prompt above, or connect your assistant first. Free plan, no credit card.