Daily
Log job postings that match your CV in a sheet
Each morning, new postings from your job feeds are scored against your CV and the good matches are added to your Jobs sheet.
- Runs
- Daily
- Apps
- Google Drive, Google Sheets
- AI
- Yes, uses the built-in AI allowance
- Access
- Drive read; Sheets read+write
Send this to your assistant
Create a ClickRuntime automation: every morning, read my CV from Drive, check new postings from my job feeds, score each against my CV and add good matches to my Jobs sheet.
First time? Adding ClickRuntime to your assistant takes about two minutes.
Why use it
Why teams use this automation
A data analyst looking for a new role follows several job boards. Every morning she scrolls through dozens of listings, most of them wrong for her, and keeps the promising ones in a sheet by hand. It takes an hour and the good roles are easy to miss.
Scoring each new posting against her CV and logging only the strong matches gives her a short list to act on, and the sheet doubles as a record of her search.
What you get out of it
Spend time applying, not scrolling
A short list of good matches each morning frees the hour you would spend reading every listing.
Matches based on your real experience
Postings are compared with your CV, not just keywords, so roles that fit your background stand out.
A record of your search
The sheet keeps every match with its link and score, so you can track applications, follow-ups and replies in one place.
Update your CV, update the matching
When you revise your CV in Drive, the next morning's scoring uses the new version automatically.
How it works
What happens, step by step
Every morning ClickRuntime reads your CV from Google Drive and the latest postings from the job feeds you chose.
It skips any posting it has already scored.
AI scores each new posting against your CV and gives a one-line reason.
Postings above your cut-off are added to your Jobs sheet with the title, company, link, score and reason.
Before it runs live
- Connect Google Drive
- 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 Google Drive and Google Sheets steps into one automation
Under the hood
The code that runs this automation
import feedparser
from googleapiclient.discovery import build
from google.oauth2.credentials import Credentials
from clickruntime import on_trigger, credentials, state, ai, http
CV_DOC, SHEET_ID = "your-cv-doc-id", "your-spreadsheet-id"
FEEDS = ["https://jobs.example.com/rss?q=data+analyst"]
SCHEMA = {"type": "object", "properties": {"score": {"type": "integer"}, "reason": {"type": "string"}}}
@on_trigger
def run(event):
creds = Credentials(credentials.connection("google", "work"))
cv = http.get(f"https://www.googleapis.com/drive/v3/files/{CV_DOC}/export", params={"mimeType": "text/plain"},
headers={"Authorization": f"Bearer {creds.token}"}).text[:5000]
seen = state.get("seen") or []
posts = [e for f in FEEDS for e in feedparser.parse(http.get(f).text).entries if e.link not in seen][:30]
rows = []
for p in posts:
r = ai.generate(f"CV:\n{cv}\n\nJob: {p.title}\n{p.get('summary', '')[:2000]}\nScore fit 1-10 with a one-line reason.",
json_schema=SCHEMA, max_output_tokens=80).json
if r["score"] >= 7:
rows.append([p.title, p.get("author", ""), p.link, r["score"], r["reason"]])
seen.append(p.link)
if rows:
build("sheets", "v4", credentials=creds, cache_discovery=False).spreadsheets().values().append(spreadsheetId=SHEET_ID,
range="Jobs!A:E", valueInputOption="USER_ENTERED", body={"values": rows}).execute()
state.set("seen", seen[-2000:])
return {"scored": len(posts), "matches": len(rows)}FAQ
Common questions
Which job feeds can it read?
What score counts as a good match?
Will the same job be added twice?
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 video ideas in a sheet into finished videos in Drive
Every hour the next ready idea in your Videos sheet becomes a video in your Drive, with the link and status written back to the sheet.
See how it worksTurn a sheet of topics into article drafts in Drive
Each day the next topic in your Content sheet becomes a 1,000-word article draft in Google Docs, with its link added to the sheet.
See how it worksTurn new words in your vocabulary sheet into Anki flash cards
Every Sunday the new words in your Vocab sheet get a translation, pinyin and an example sentence, and a ready-to-import Anki file is saved to Drive.
See how it worksKeep exploring
Set up “Log job postings that match your CV in a sheet” from your assistant
Copy the prompt above, or connect your assistant first. Free plan, no credit card.