On a schedule
Get a morning email of today's meetings with prep notes
Each weekday at 7am you get an email listing today's meetings with times, attendees and a one-line note on how to prepare.
- Runs
- On a schedule
- Apps
- Gmail, Google Calendar
- AI
- Yes, uses the built-in AI allowance
- Access
- Calendar read; Gmail gmail.send
Send this to your assistant
Create a ClickRuntime automation: every weekday at 7am, email me today's meetings with times, attendees and a one-line prep note for each.
First time? Adding ClickRuntime to your assistant takes about two minutes.
Why use it
Why teams use this automation
An account director has six meetings on a typical day, spread across clients, suppliers and her own team. She opens her calendar between calls and only then remembers she promised to bring figures to the next one.
A short brief in her inbox before the day starts gives her the shape of the day and a nudge for each meeting. Five minutes with a coffee replaces a scramble five minutes before each call.
What you get out of it
Walk into meetings prepared
A one-line prep note for each meeting reminds you what to bring or decide. Small promises from last week stop slipping.
The day at a glance
Times and attendees in one list help you spot back-to-back calls and plan breaks before the day fills up.
Read it anywhere
Email works on any device, so you can check your day on the train without opening the calendar app.
A calm start
Knowing what is coming means fewer surprises. You can reshuffle or decline early rather than at the last minute.
How it works
What happens, step by step
Every weekday at 7am, ClickRuntime reads today's events from your Google Calendar.
It lists each meeting with its time and attendees.
AI adds a one-line prep note for each meeting based on its title and description.
The brief is sent to your inbox by email.
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
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 Gmail and Google Calendar steps into one automation
Under the hood
The code that runs this automation
import base64
from datetime import datetime, time, timezone
from email.message import EmailMessage
from google.oauth2.credentials import Credentials
from googleapiclient.discovery import build
from clickruntime import on_trigger, credentials, ai
def send(gmail, to, subject, text):
msg = EmailMessage()
msg["To"], msg["Subject"] = to, subject
msg.set_content(text)
gmail.users().messages().send(userId="me", body={"raw": base64.urlsafe_b64encode(msg.as_bytes()).decode()}).execute()
@on_trigger
def run(event):
creds = Credentials(credentials.connection("google", "work"))
today = datetime.now(timezone.utc).date()
items = build("calendar", "v3", credentials=creds, cache_discovery=False).events().list(
calendarId="primary", timeMin=datetime.combine(today, time.min, timezone.utc).isoformat(),
timeMax=datetime.combine(today, time.max, timezone.utc).isoformat(), singleEvents=True, orderBy="startTime").execute()["items"]
lines = [f"{e['start'].get('dateTime', 'All day')[11:16]} {e.get('summary', '')} with "
f"{', '.join(a['email'] for a in e.get('attendees', []))}: {e.get('description', '')[:200]}" for e in items]
brief = ai.generate("For each meeting, keep the time, title and attendees and add a one-line prep note:\n" + "\n".join(lines),
max_output_tokens=900).text if lines else "No meetings today."
send(build("gmail", "v1", credentials=creds, cache_discovery=False), "me", f"Today: {len(items)} meetings", brief)
return {"meetings": len(items)}FAQ
Common questions
Where do the prep notes come from?
Does it include all-day events?
Can I get it for more than one calendar?
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
Get a research brief before every external meeting
An hour before any meeting with people outside your company, you get an email about who they are, recent news and what you last discussed.
See how it worksBuild a daily timesheet from your calendar and sent email
Each evening you get a timesheet of the day grouped by client, built from your meetings and sent emails.
See how it worksDraft follow-ups for prospects who have gone quiet
Each morning you get ready-to-send follow-up drafts in Gmail for prospects who have not replied in a week, plus a slot in your calendar to send them.
See how it worksKeep exploring
Set up “Get a morning email of today's meetings with prep notes” from your assistant
Copy the prompt above, or connect your assistant first. Free plan, no credit card.