Skip to content

The moment it happens

Book interviews automatically when you shortlist a candidate

When you shortlist a candidate, the next free 45-minute slot is booked on your calendar with a Meet link and the candidate gets an invitation email.

Runs
The moment it happens
Apps
Gmail, Google Calendar
AI
Optional
Access
Calendar write; Gmail gmail.send

Send this to your assistant

Create a ClickRuntime automation: when I mark a candidate as shortlisted, find the next free 45-minute slot in my calendar, create the interview with a Meet link and email the candidate an invitation.

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 hiring manager at a growing startup shortlists eight candidates for a role. Each one then takes three or four emails to agree a time, and by the time the last interview is booked, the best candidate has accepted another offer.

Booking the first free slot the moment a candidate is shortlisted removes days of scheduling emails and shows candidates a fast, organised process.

What you get out of it

  • Candidates hear back the same day

    A prompt invitation keeps good candidates engaged and signals that your company moves quickly.

  • No scheduling back-and-forth

    The time is chosen from your real availability, so there is no thread of 'does Tuesday work?'

  • Every interview has a video link

    A Meet link is attached to each event, so nobody scrambles for one at the start of the call.

  • Consistent, friendly invitations

    Each candidate gets a clear email with the role, time and link, written in your company's tone.

How it works

What happens, step by step

  1. When you shortlist a candidate, your hiring tool tells ClickRuntime.

  2. ClickRuntime checks your Google Calendar for the next free 45-minute slot within your working hours.

  3. It creates the interview event with a Meet link and invites the candidate.

  4. The candidate also gets an invitation email with the role, time and link, optionally worded by AI.

Before it runs live

  • Connect Google through your own Google app (a one-time, 10-minute setup), so it works with your own Gmail
  • Connect Google Calendar
  • Paste your automation's link into the other app's webhook settings

What you get

RunsThe moment it happens
Book interviews automatically when you shortlist a candidatejust nowSucceeded
Email · Interview invitationHi Jordan, we'd love to talk about the Product Designer role at Northwind. Your interview is on Wednesday 22 October at 11:00.

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 Gmail and Google Calendar 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.
interview_scheduling.pyexample
import base64
from datetime import datetime, timedelta, timezone
from email.message import EmailMessage
from clickruntime import on_event, credentials, http

CAL = "https://www.googleapis.com/calendar/v3"

@on_event
def handle(event):
    c = event.json or {}
    h = {"Authorization": f"Bearer {credentials.connection('google', 'work')}"}
    start = (datetime.now(timezone.utc) + timedelta(days=1)).replace(hour=10, minute=0, second=0, microsecond=0)
    busy = http.post(f"{CAL}/freeBusy", headers=h, json={"timeMin": start.isoformat(), "timeMax": (start + timedelta(days=7)).isoformat(),
                     "items": [{"id": "primary"}]}).json()["calendars"]["primary"]["busy"]
    def free(s):
        return s.weekday() < 5 and 10 <= s.hour < 16 and all(s + timedelta(minutes=45) <= datetime.fromisoformat(b["start"]) or
                                                               s >= datetime.fromisoformat(b["end"]) for b in busy)
    while not free(start):
        start += timedelta(minutes=15)
    end = start + timedelta(minutes=45)
    ev = http.post(f"{CAL}/calendars/primary/events", headers=h, params={"conferenceDataVersion": 1}, json={
        "summary": f"Interview: {c['name']} ({c['role']})", "start": {"dateTime": start.isoformat()}, "end": {"dateTime": end.isoformat()},
        "attendees": [{"email": c["email"]}], "conferenceData": {"createRequest": {"requestId": event.event_id}}}).json()
    m = EmailMessage(); m["To"] = c["email"]; m["Subject"] = f"Interview for {c['role']}"
    m.set_content(f"Hi {c['name']},\n\nWe'd love to talk. Your interview is on {start:%A %d %B at %H:%M} UTC.\nJoin: {ev.get('hangoutLink')}\n\nReply if the time doesn't work.")
    http.post("https://gmail.googleapis.com/gmail/v1/users/me/messages/send", headers=h, json={"raw": base64.urlsafe_b64encode(m.as_bytes()).decode()})
    return {"booked": start.isoformat()}

FAQ

Common questions

How do I mark a candidate as shortlisted?
Any tool that can send a webhook works, such as your applicant tracker, a form or a button in a spreadsheet. It sends the candidate's name, email and the role.
Which hours does it book in?
Only within the working hours you set, for example 10:00 to 16:00 on weekdays, and never over existing events.
Can the candidate change the time?
Yes. The invitation includes a line asking them to reply if the time does not work, and they can also propose a new time from the calendar invite.
What permissions does it need?
Calendar write; Gmail gmail.send. Nothing else in your accounts is used.
Does it need AI?
No, but you can ask for an AI step (for example a summary). It then uses ClickRuntime's built-in AI allowance.
How many runs does it use?
One run for each event the app sends.
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 “Book interviews automatically when you shortlist a candidate” from your assistant

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