Every 15 minutes
Screen new résumés from Google Drive into Notion
Each new CV dropped into your Drive folder is read, scored against the job, and added as a card on your Notion hiring board.
- Runs
- Every 15 minutes
- Apps
- Google Drive, Notion
- AI
- Yes, uses the built-in AI allowance
- Access
- drive.readonly; Notion insert content
Send this to your assistant
Create a ClickRuntime automation: when a new résumé lands in my Drive Applications folder, pull out the candidate's details, score them against the job, and add a card to my Notion hiring database.
First time? Adding ClickRuntime to your assistant takes about two minutes.
Why use it
Why teams use this automation
A small agency hiring a designer receives CVs by email, from recruiters and through referrals, and saves them all into one Google Drive folder. By the end of the week there are forty files with names like CV_final2.pdf, and nobody has had time to open them, let alone log them on the hiring board in Notion.
This automation checks the folder every 15 minutes. For each new file it reads the text, has AI pull out the name, contact details and a fit score against the job, and adds a card to your Notion board with a link to the original file.
What you get out of it
Every CV is logged
Files dropped into the folder by anyone appear on the board. No candidate is lost because a file was saved and forgotten.
A head start on screening
A score and short summary on each card show who to read first. Strong candidates hear back sooner.
Consistent information per candidate
Name, email, current role and years of experience sit in the same fields every time. Comparing candidates is easier than opening files side by side.
The original stays one click away
Each card links to the file in Drive. The full CV is there when you want the detail.
How it works
What happens, step by step
Every 15 minutes, ClickRuntime looks for new files in your Drive Applications folder.
It reads the text of each new CV.
AI pulls out the candidate's name, email and current role, and scores them against the job description.
A card with those details, the score and a link to the file is added to your Notion hiring board.
Before it runs live
- Connect Google Drive
- Connect Notion and share the database you want it to use
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 Drive and Notion steps into one automation
Under the hood
The code that runs this automation
from google.oauth2.credentials import Credentials
from googleapiclient.discovery import build
from clickruntime import on_trigger, credentials, http, state, ai, report_fetched
FOLDER_ID, HIRING_DB = "your-folder-id", "your-notion-database-id"
JOB = "Senior product designer: 5+ years, strong portfolio in web apps, experience with design systems."
SCHEMA = {"type": "object", "properties": {"name": {"type": "string"}, "email": {"type": "string"}, "role": {"type": "string"}, "score": {"type": "integer"}, "summary": {"type": "string"}}, "required": ["name", "score", "summary"]}
@on_trigger
def run(event):
drive = build("drive", "v3", credentials=Credentials(credentials.connection("google", "work")), cache_discovery=False).files()
seen = set(state.get("seen") or [])
files = [f for f in drive.list(q=f"'{FOLDER_ID}' in parents and trashed=false", fields="files(id,name,webViewLink)", orderBy="createdTime desc", pageSize=50).execute()["files"] if f["id"] not in seen]
report_fetched(len(files))
if not files:
return {"summary": "Nothing new"}
for f in files[:10]:
try:
text = drive.export(fileId=f["id"], mimeType="text/plain").execute().decode("utf-8", "ignore")
except Exception:
text = f["name"]
c = ai.generate(f"Job: {JOB}\n\nCV:\n{text[:8000]}", system="Extract candidate details and score fit 1-10.", json_schema=SCHEMA, max_output_tokens=200).json
http.post("https://api.notion.com/v1/pages", headers={"Authorization": f"Bearer {credentials.connection('notion', 'work')}", "Notion-Version": "2022-06-28"}, json={"parent": {"database_id": HIRING_DB}, "properties": {
"Name": {"title": [{"text": {"content": c["name"]}}]}, "Email": {"email": c.get("email") or None}, "Score": {"number": c["score"]},
"Summary": {"rich_text": [{"text": {"content": c["summary"][:1900]}}]}, "CV": {"url": f["webViewLink"]}}}).raise_for_status()
seen.add(f["id"])
state.set("seen", list(seen)[-1000:])
return {"added": min(len(files), 10)}FAQ
Common questions
Which file types are read?
Are candidates rejected automatically?
Where do I put the job description?
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
Turn recordings in Google Drive into summarised notes in Notion
Drop an audio recording in your Drive folder and get a Notion page with its summary and action items.
See how it worksReview new contracts in Drive and log the findings in Notion
When a contract or finance document lands in your Drive folder, AI reviews it for risky terms and the findings are saved as a Notion page.
See how it worksCatalogue new Drive photos in a Notion gallery
Photos added to your Drive portfolio folder are described, tagged and catalogued in your Notion gallery database.
See how it worksKeep exploring
Set up “Screen new résumés from Google Drive into Notion” from your assistant
Copy the prompt above, or connect your assistant first. Free plan, no credit card.