Daily
Score job listings against your CV into Airtable
New job listings in your sheet are scored against your CV each day, and the good matches land in Airtable with a tailored summary.
- Runs
- Daily
- Apps
- Airtable, Google Sheets
- AI
- Yes, uses the built-in AI allowance
- Access
- Sheets read; Airtable write
Send this to your assistant
Create a ClickRuntime automation: every morning, score the new job listings in my 'Jobs' sheet against my CV, and add the ones above 7 out of 10 to my Airtable 'Applications' table with a short tailored summary.
First time? Adding ClickRuntime to your assistant takes about two minutes.
Why use it
Why teams use this automation
Someone looking for their next role saves interesting listings into a sheet all week: links from job boards, newsletters and friends. By Friday there are forty rows and no time to read them properly. The strong matches sit next to roles that need a different skill set, and the best ones go stale while the list grows.
Scoring each new listing against the CV every morning, and moving only the strong matches into an Airtable tracker with a note on why they fit, turns a pile of links into a short list to apply to. The same set-up works for a recruiter scoring candidates in a sheet against one role.
What you get out of it
A short list every morning
Only listings scoring above 7 reach the Applications table, so the tracker holds roles worth applying to.
A tailored angle for each match
Each record includes two or three lines on which parts of your experience fit the role, ready for a cover note.
Listings are scored once
Rows already scored are remembered, so each day's run reads only what was added since.
Your tracker stays in Airtable
Applications sit in a table you can move through stages such as Applied, Interview and Offer.
How it works
What happens, step by step
Every morning, ClickRuntime reads your Jobs sheet.
It skips any listing it has already scored on an earlier day.
AI compares each new listing with your CV and gives it a score out of 10 with a short reason.
Listings scoring above 7 are added to your Airtable Applications table with a tailored summary.
Before it runs live
- Connect Airtable
- Connect your Google Sheets account and pick the spreadsheets it may 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
- Run it at a different time, more or less often, or only on weekdays
- 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 Sheets 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, ai, state
BASE_ID = "appXXXXXXXXXXXXXX"
SHEET_ID = "1AbCdEfGhIjKlMnOpQrStUvWxYz"
CV = "Product designer, 7 years, B2B SaaS, design systems, Figma, user research, remote."
SCHEMA = {"type": "object", "properties": {"score": {"type": "integer"}, "summary": {"type": "string"}},
"required": ["score", "summary"]}
@on_trigger
def run(event):
sheets = build("sheets", "v4", credentials=Credentials(credentials.connection("google", "work")), cache_discovery=False)
rows = sheets.spreadsheets().values().get(spreadsheetId=SHEET_ID, range="Jobs!A2:D").execute().get("values", [])
done = int(state.get("rows_scored") or 0)
headers = {"Authorization": f"Bearer {credentials.connection('airtable', 'work')}"}
matches = 0
for title, company, link, desc in [(r + ["", "", "", ""])[:4] for r in rows[done:]]:
result = ai.generate(f"CV:\n{CV}\n\nJob: {title} at {company}\n{desc[:4000]}", json_schema=SCHEMA, max_output_tokens=200,
system="Score the fit 1-10 and write 2-3 lines on which experience matches the role.").json
if result["score"] > 7:
matches += 1
http.post(f"https://api.airtable.com/v0/{BASE_ID}/Applications", headers=headers, json={"typecast": True,
"records": [{"fields": {"Role": title, "Company": company, "Link": link, "Score": result["score"],
"Summary": result["summary"], "Status": "To apply"}}]}).raise_for_status()
state.set("rows_scored", len(rows))
return {"scored": len(rows) - done, "matches": matches}FAQ
Common questions
Where does my CV go?
What if a listing only has a link?
Can I change the cutoff from 7?
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
Research companies from a sheet into Airtable
Companies you add to a sheet are looked up and saved in Airtable with industry, size and a short summary.
See how it worksSave every form entry to Airtable and a sheet
Each form submission becomes an Airtable record and a sheet row, and you get an email confirming it arrived.
See how it worksLog every sale to Airtable and a sheet
Each sale from your store is recorded in Airtable and a Google Sheet, and a note goes to Slack.
See how it worksKeep exploring
Set up “Score job listings against your CV into Airtable” from your assistant
Copy the prompt above, or connect your assistant first. Free plan, no credit card.