Every 15 minutes
Email action items from new meeting notes
When a meeting notes doc appears in your folder, attendees get an email with a short summary and their action items.
- Runs
- Every 15 minutes
- Apps
- Gmail, Google Docs
- AI
- Yes, uses the built-in AI allowance
- Access
- Docs read; Gmail gmail.send
Send this to your assistant
Create a ClickRuntime automation: every 15 minutes, check my Meeting Notes folder for new docs, pull out a summary and action items and email them to the attendees listed in the doc.
First time? Adding ClickRuntime to your assistant takes about two minutes.
Why use it
Why teams use this automation
A project lead at a small agency takes notes in every client call. The notes are good, but the follow-up email that turns them into who-does-what by when often goes out a day late, or not at all, and tasks fall through the gap.
Sending the summary and action items as soon as the notes are saved means everyone leaves the meeting with the same list. The notes doc stays the source, and the email is the nudge people actually read.
What you get out of it
Follow-up goes out the same hour
Attendees get the recap while the meeting is fresh. Tasks start sooner and fewer get forgotten.
Everyone works from one list
The same action items reach every attendee. Disagreements about who agreed to what are settled by the email.
Notes stay where you write them
You keep taking notes in Google Docs as usual. There is no new tool or template for the team to learn.
Less admin after each call
Writing recap emails is time you no longer spend. Back-to-back meeting days stop ending with an inbox of follow-ups to send.
How it works
What happens, step by step
Every 15 minutes, ClickRuntime checks your Meeting Notes folder in Google Drive for new docs.
It skips docs it has already handled, so no one gets the same recap twice.
AI reads the notes and writes a short summary plus a list of action items with owners.
The recap is emailed from your Gmail to the attendees listed in the doc.
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 Docs
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
- 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 Docs steps into one automation
Under the hood
The code that runs this automation
import re, base64
from email.mime.text import MIMEText
from google.oauth2.credentials import Credentials
from googleapiclient.discovery import build
from clickruntime import on_trigger, credentials, state, ai, report_fetched
FOLDER_ID = "your-folder-id"
@on_trigger
def run(event):
creds = Credentials(credentials.connection("google", "work"))
seen = state.get("seen") or []
files = build("drive", "v3", credentials=creds, cache_discovery=False).files().list(
q=f"'{FOLDER_ID}' in parents and mimeType='application/vnd.google-apps.document'", fields="files(id,name)").execute()["files"]
new = [f for f in files if f["id"] not in seen]
report_fetched(len(new))
if not new:
return {"sent": 0}
docs = build("docs", "v1", credentials=creds, cache_discovery=False).documents()
gmail = build("gmail", "v1", credentials=creds, cache_discovery=False)
for f in new:
body = docs.get(documentId=f["id"]).execute()["body"]["content"]
text = "".join(e["textRun"]["content"] for p in body for e in p.get("paragraph", {}).get("elements", []) if "textRun" in e)
to = sorted(set(re.findall(r"[\w.+-]+@[\w-]+\.[\w.]+", text))) or ["me"]
recap = ai.generate(f"Summarise these meeting notes in 3 sentences, then list action items with owners:\n{text[:12000]}", max_output_tokens=600).text
msg = MIMEText(recap)
msg["To"], msg["Subject"] = ", ".join(to), f"Recap: {f['name']}"
gmail.users().messages().send(userId="me", body={"raw": base64.urlsafe_b64encode(msg.as_bytes()).decode()}).execute()
seen.append(f["id"])
state.set("seen", seen[-500:])
return {"sent": len(new)}FAQ
Common questions
How does it know who attended?
Will it email notes that are still being written?
Can it include due dates and owners?
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
Draft RFP answers in a Google Doc when one arrives by email
When an RFP lands in Gmail, every question in it is answered in a draft Google Doc and you get an email with the link.
See how it worksGet an AI client brief as a Google Doc by email
Submit a client name and receive an email linking to a Google Doc brief on that company, ready before the meeting.
See how it worksWrite a daily email digest into a Google Doc
Every evening, a short summary of the day's email is added to the top of a running Google Doc.
See how it worksKeep exploring
Set up “Email action items from new meeting notes” from your assistant
Copy the prompt above, or connect your assistant first. Free plan, no credit card.