Skip to content

Every 15 minutes

Screen CVs from a Drive folder into Airtable

Each CV dropped into your Drive folder is read, scored against the job, and saved as a candidate record in Airtable.

Runs
Every 15 minutes
Apps
Airtable, Google Drive
AI
Yes, uses the built-in AI allowance
Access
Drive read; Airtable read+write

Send this to your assistant

Create a ClickRuntime automation: when a new CV lands in my Drive 'Applicants' folder, pull out name, email and skills, score it against the job description in my Airtable 'Jobs' table, and create a candidate record with the Drive link. Email me strong matches.

Paste it into your assistant. It tells you what it will send or change before it runs live.

First time? Adding ClickRuntime to your assistant takes about two minutes.

Why use it

Why teams use this automation

A small company hiring for a few roles collects CVs from email, referrals and job boards into one Drive folder. The hiring manager means to read them as they come in, but a busy week passes and there are sixty PDFs with names like 'CV_final_v2'. Nobody knows which candidates have been looked at, and good people accept other offers while they wait.

Reading each CV as it lands, scoring it against the job description already kept in Airtable, and creating a candidate record turns the folder into a ranked pipeline. The hiring manager starts from the strongest candidates and the Drive link is one click away.

What you get out of it

  • Every CV gets a first read

    No CV sits unopened in the folder. Each one becomes a record with contact details, skills and a score.

  • Scores use your own job description

    The job text comes from your Airtable Jobs table, so updating the role there changes how new CVs are scored.

  • Strong matches reach you straight away

    Candidates scoring 8 or more trigger an email with their name and the reason, so you can reply the same day.

  • Files stay where they are

    The CV stays in Drive and the record links to it, so nothing is duplicated or reshared.

How it works

What happens, step by step

  1. Every 15 minutes, ClickRuntime checks your Applicants folder in Drive for new files.

  2. It downloads each new CV and reads the text.

  3. AI pulls out the name, email and key skills and scores the CV against the job description in Airtable.

  4. A candidate record is created with the score, a short reason and a link to the CV.

  5. You get an email for each candidate scoring 8 or more. The newest file time is remembered, so nothing is read twice.

Before it runs live

  • Connect Airtable
  • Connect Google Drive

What you get

RunsEvery 15 minutes
Screen CVs from a Drive folder into Airtabletoday, 9:00Succeeded
Email · Strong candidateStrong candidate: Maya Patel (9/10) Six years running B2B onboarding at Contoso Software, matches the Customer Success Lead role closely.

Build your own

Need it to work differently?

This template is a starting point. Copy the prompt and change it, or describe a different automation from scratch, with your own conditions, more apps or an AI step. Your assistant writes it, tests it and runs it on ClickRuntime.
  • 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 Airtable and Google Drive steps into one automation

Under the hood

The code that runs this automation

This is the Python script that runs each time the automation starts. Your AI assistant writes it for you when you send the prompt, and you allow each step in your assistant. To change how the automation works, describe the change to your assistant and it updates the script for you. For every function it can use, see the script reference.
screen_candidate_cvs_from_drive_into_airtable.pyexample
import io
from pypdf import PdfReader
from google.oauth2.credentials import Credentials
from googleapiclient.discovery import build
from clickruntime import on_trigger, credentials, http, ai, notify, state, report_fetched
BASE_ID, FOLDER_ID, JOB_RECORD = "appXXXXXXXXXXXXXX", "1FolderIdOfApplicants", "recXXXXXXXXXXXXXX"
SCHEMA = {"type": "object", "properties": {"name": {"type": "string"}, "email": {"type": "string"}, "skills": {"type": "string"},
          "score": {"type": "integer"}, "reason": {"type": "string"}}, "required": ["name", "score", "reason"]}
@on_trigger
def run(event):
    drive = build("drive", "v3", credentials=Credentials(credentials.connection("google", "work")), cache_discovery=False)
    since = state.get("since") or "2026-01-01T00:00:00Z"
    files = drive.files().list(q=f"'{FOLDER_ID}' in parents and createdTime > '{since}' and trashed = false",
                               orderBy="createdTime", fields="files(id,name,createdTime,webViewLink)").execute()["files"]
    report_fetched(len(files))
    if not files:
        return {"new": 0}
    api, headers = f"https://api.airtable.com/v0/{BASE_ID}", {"Authorization": f"Bearer {credentials.connection('airtable', 'work')}"}
    job = http.get(f"{api}/Jobs/{JOB_RECORD}", headers=headers).json()["fields"].get("Description", "")
    for f in files:
        text = "\n".join(p.extract_text() or "" for p in PdfReader(io.BytesIO(drive.files().get_media(fileId=f["id"]).execute())).pages)[:8000]
        c = ai.generate(f"Job:\n{job[:3000]}\n\nCV:\n{text}", json_schema=SCHEMA, max_output_tokens=250,
                        system="Extract name, email and key skills, score the CV 1-10 against the job, give a one-line reason.").json
        http.post(f"{api}/Candidates", headers=headers, json={"typecast": True, "records": [{"fields": {
            "Name": c["name"], "Email": c.get("email", ""), "Skills": c.get("skills", ""), "Score": c["score"],
            "Reason": c["reason"], "CV": f["webViewLink"]}}]}).raise_for_status()
        if c["score"] >= 8:
            notify.email_me(f"Strong candidate: {c['name']} ({c['score']}/10)", f"{c['reason']}\n{f['webViewLink']}")
        state.set("since", f["createdTime"])
    return {"new": len(files)}

FAQ

Common questions

What if a CV is a scanned image rather than text?
Scanned PDFs have no text to read, so the record is created with the file name and link and a note that it needs a manual look. Most CVs exported from a word processor have readable text.
How does it know which job a CV is for?
By default it scores against one open role named in the script. If you hire for several, use a subfolder per role and point each one at its job record.
Can candidates see their score?
No. The score and reason live only in your Airtable base. Nothing is sent to the candidate.
What permissions does it need?
Drive read; Airtable read+write. Nothing else in your accounts is used.
Does it need AI?
Yes. It uses ClickRuntime's built-in AI, so you don't need an OpenAI or Anthropic key. Every plan includes a monthly AI allowance.
How many runs does it use?
One run each time it checks. Checks that find nothing new and stop right away aren't counted.
Can I change how it works?
Yes. Describe the change to your AI assistant, for example a different schedule, channel or filter. It updates the automation, tests it and tells you what changed.

Set up “Screen CVs from a Drive folder into Airtable” from your assistant

Copy the prompt above, or connect your assistant first. Free plan, no credit card.