Automate your coaching call emails
Every coaching call I run gets a reminder email the morning of, and a recap email the morning after with the recording, the transcript and the key takeaways. I write neither of them. This guide is the exact build, written for someone who has never opened a terminal.
Want this built for you instead of building it yourself?
Book a call with meWatch the walkthrough
I cover this build as Automation 3 at 10:26. The player above starts there automatically.
What you're building
Two emails that write themselves around every coaching call you run.
The morning of the call. Something checks your calendar, finds today's coaching call, grabs the join link and the guest list, and puts a finished reminder email in your drafts folder. You skim it and hit send.
The morning after. The same system finds the recording and the transcript in your Drive, quietly gives each person who attended view access to both, pulls three takeaways out of the call, and drops a recap email in your drafts. Again you skim and send.
Nothing sends on its own. That is a deliberate choice and I would make it again. An automation that drafts is useful the day it breaks. An automation that sends is a liability the day it breaks.
The piece that makes this possible is the Google Workspace CLI, a free command line tool that lets an AI agent talk directly to Gmail, Calendar, Drive, Sheets and Docs on your behalf. You will not be typing its commands. Claude Code will. You describe what you want in English.
What you'll need
- A Google Workspace or Gmail account, the one your coaching calls live on
- A Mac or Windows machine you can install software on
- A Claude Code subscription. I pay $100 a month and it has replaced more work than any other line item in the business
- About 90 minutes for the first build. The second automation takes 15 minutes because the hard part is already done
- Calls that happen on Google Meet with recording and transcripts turned on. If you use Zoom, the same shape works, the file-finding step just points somewhere else
You do not need to know how to code. You do need to be willing to read what the agent proposes before you approve it, which is a different and much easier skill.
Step 1: Get a terminal you like
A terminal is a window where you type instructions to your computer instead of clicking. Your Mac already has one called Terminal, and it works fine. I use Warp because it looks like a normal app instead of a 1980s film prop, and because it explains errors instead of just printing them.
Download Warp, open it, and sign in. That is the whole step. You now have a window with a blinking cursor. Nothing you do here can break your computer as long as you read before you approve, which is the habit this entire guide is built around.
Step 2: Install Claude Code
Claude Code is the agent that will do the actual building. It runs inside your terminal, reads and writes files on your machine, and runs commands with your permission.
Go to claude.ai/code and follow the install instructions for your machine. When it finishes, type claude in your terminal and press enter. You will get a prompt where you can type in plain English.
One thing worth understanding before you go further. Claude Code is not a chat window that gives you instructions to follow. It does the work itself, on your machine, and it asks permission before anything consequential. When it asks, read the command. If you do not understand it, ask what it does. That single habit is the difference between an agent that is useful and an agent that is dangerous.
Get a new build-with-AI guide every week
Weekly playbooks on prompting, agents, and content systems — free.
You're in. First email lands shortly.
Step 3: Install the Google Workspace CLI
This is the bridge between your agent and your Google account. Once it is installed, your agent can read your calendar, draft emails, find files in Drive and update spreadsheets, all from the terminal.
Do not go hunting for install instructions yourself. Paste this into Claude Code and let it do the work.
I want to install the Google Workspace CLI on this Mac. The tool is called gws. Please: 1. Check whether it is already installed by running: gws --help 2. If it is not installed, find the current official install instructions, show them to me before running anything, and explain in plain English what each command does. 3. Install it. 4. Confirm the install worked by running: gws --help 5. Tell me which Google services it can talk to. Do not authenticate anything yet. Stop after the install and wait for me.
Notice the last line. You are telling it to stop before authenticating. Splitting install from authentication means that if something goes wrong, you know which half broke. That is worth doing on every setup like this.
When it finishes, it should tell you the CLI can reach Drive, Sheets, Gmail, Calendar, Docs, Slides, Tasks, People, Chat, Forms and Meet. That list is the actual surface area of what you can automate later.
Step 4: Connect your Google account
Now you give the tool permission to act as you. A browser window opens, you pick your Google account, and you approve a list of permissions. Standard Google sign-in, the same flow as connecting any app.
Now authenticate the gws CLI to my Google account. Walk me through it one step at a time. I am not technical, so for every step tell me exactly what to click and what I should expect to see on screen. When a browser window opens, tell me what I am approving and why it needs that permission. Start with read-only calendar access so we can test safely. We will add Gmail permission after the first test passes.
Start with calendar read access only. It is the smallest permission that still lets you prove the whole chain works, and if the setup is broken you find out before Gmail is involved.
A note on the scary-sounding permission screen. Granting Gmail access does not mean an agent is now rummaging through your inbox. It means the tool can when something instructs it to. Everything in this guide instructs it to do exactly two things: search your drafts, and create a draft. Nothing reads your mail, nothing sends, nothing deletes.
Step 5: Prove it can read your calendar
Before building anything, confirm the plumbing works.
Read my Google Calendar and tell me every event I have in the next 7 days. Just show me a list: date, time, title, and who is invited. Do not create, change or delete anything.
If your week comes back correctly, you are done with setup and everything after this is just describing what you want. If it errors, paste the error straight back into Claude Code. It is much better at reading its own error messages than you will be, and it usually fixes them on the first try.
Step 6: Build the reminder automation
This is the first real one. The prompt below is long on purpose. Every line in it exists because I got it wrong once and had to add a rule.
I want a morning reminder email for my coaching calls. Build it as a script I can run, and explain each part as you go. How it should work: 1. Look at my Google Calendar for today only, in my local timezone. 2. Find any event whose title contains "coaching call". If there is none, stop and do nothing. 3. Pull the start time, the video meeting link, and the attendee list. 4. Remove these people from the list: me, any of my own team addresses, any meeting-room resources, and anyone who has already declined. 5. Create a DRAFT email in my Gmail. Never send it. Put me in the To field and put every attendee in BCC so nobody sees anyone else's address. 6. Subject line: Reminder: coaching call today at <time>. 7. Body: a short friendly reminder with the join link, three bullets on how we will spend the time, and a line saying a recording goes out afterwards if they cannot make it. 8. Before creating anything, search my drafts for an existing reminder for today. If one exists, stop. I do not want duplicates. Show me the draft output first with fake data, then run it for real once I approve.
Four details in there are worth calling out, because they are the difference between a demo and something you leave running.
BCC, not To. Coaching clients should not see each other's email addresses. Putting yourself in the To field and everyone else in BCC also means the draft looks normal in your own inbox.
Filter the guest list. Your calendar invite contains you, possibly a second account of yours, possibly a meeting room, and possibly someone who declined three weeks ago. All four should be dropped. I found this the hard way by drafting a reminder addressed partly to a conference room.
Check for an existing draft first. If your scheduler fires twice for any reason, and it will, the second run should be a no-op. The technical name for this is idempotency and it is the single most valuable idea in this guide.
No agenda in the body. My first version tried to generate a per-call agenda. It was consistently slightly wrong, and slightly wrong is worse than absent. Now the email says what the session is generally for and I say the rest live. The lesson generalises: automate the part that is the same every time, keep the part that varies in your own head.
Step 7: Build the recap automation
Same shape, opposite side of the call.
Now the other half: a recap email the morning after a coaching call. How it should work: 1. Look at yesterday's calendar for the same "coaching call" event. 2. Find that call's recording and transcript in my Google Drive. 3. Share both files with each attendee's email address individually, with view access only. Do not share the folder, and do not send Google's own notification email. 4. Create a DRAFT email, again To me and BCC the attendees, containing the recording link, the transcript link, and three key takeaways from the call written in plain language. 5. Stamp somewhere that this call has been recapped, and check that stamp before drafting so a second run does not create a second draft. Same rule as before: draft only, never send. Show me a dry run first.
The sharing step is the part people get wrong. The instinct is to share the folder that holds your recordings. Do not. That folder holds every call you have ever run, including calls these people were not on. Share the two specific files, per person, with view access, and turn off Google's notification email so they get one message from you rather than three from Google.
On takeaways: ask for three, in plain language, no timestamps. I originally wanted timestamped takeaways and spent real time discovering that Google Meet transcript documents contain no per-line timestamps at all. Getting them means a separate API and a meaningfully bigger build. Three plain takeaways deliver most of the value for a fraction of the work, so that is what shipped.
Step 8: Schedule it on your laptop
Right now these run when you ask. Next you want them to run on their own.
Ask Claude Code to schedule both scripts on your machine: the reminder around 8:30 in the morning, the recap late morning the next day so the recording has finished processing. On a Mac this uses a built-in scheduler. You do not need to know which one. You do need to know the catch.
The catch is that a laptop scheduler only fires when the laptop is awake. Mine runs a full-time job, so my laptop is closed during large parts of the day. My reminders silently stopped firing and I did not notice for a while, because a scheduled job that never runs produces no error. It produces nothing at all, which looks identical to a quiet day.
If your machine is genuinely open every morning, stop here. You have a working system. If it is not, do step 9.
Step 9: Move it to the cloud
This is what I actually run. The logic lives inside my website's codebase as a private web address, and a free scheduler on GitHub calls that address every morning. Nothing on my laptop is involved, so it fires whether I am asleep, on a plane, or in the day job.
You need two free accounts for this: GitHub to hold the code and run the schedule, and Vercel to host it. If you already have a website built this way, you have both. If you do not, ask Claude Code to set up a minimal one first. It is a 20 minute detour.
This works, but it only runs when my laptop is open. I want it to run in the cloud instead. My site is already a repo on GitHub that deploys to Vercel. Please: 1. Turn the reminder script into an API endpoint in my site's codebase, protected by a secret so only my scheduler can call it. 2. Write a GitHub Actions workflow that calls that endpoint on a schedule every morning, plus a manual "Run workflow" button so I can test it. 3. GitHub's scheduler runs on UTC and ignores daylight saving, so fire it at both UTC times that map to my local morning. The endpoint already dedups, so the second call each day does nothing. 4. Tell me exactly which secrets I need to create, where to paste them in GitHub and in Vercel, and what to name them. 5. Give me a checklist to verify it worked, including how to confirm the duplicate protection is doing its job.
Three things about this step that cost me time.
The secret is a password, and both sides need the same one. The endpoint is a public web address, so it checks for a secret before doing anything. That secret gets pasted in two places: GitHub, so the scheduler can send it, and Vercel, so the endpoint can check it. If they do not match exactly you get a 401 and nothing else. Generate it in a password manager, paste it twice, never retype it.
The scheduler runs on UTC and does not know about daylight saving. Set it to fire at both UTC times that map to your local morning, and let the duplicate protection you built in step 6 make the second one harmless. This is the reason that duplicate check is not optional.
Use the manual run button before you trust the schedule. GitHub Actions has a "Run workflow" button. Press it, then look in your Gmail drafts. Then press it again and confirm you do not get a second draft. That two-minute test is the whole verification.
Once it is live, the system goes quiet on days with no coaching call. Quiet is correct. On days with one, a draft appears.
Safety and permissions
The question I get most often is some version of: will it delete my emails, or start inviting people to things?
No, unless you tell it to. An agent with Gmail access does not develop opinions about your inbox. It does what the instructions in front of it say. The instructions in this guide say search drafts, create draft, and nothing else.
Three habits keep it that way. Grant the smallest permission that works and add more only when a build needs it. Ask for a dry run before any first real execution, so you see what would happen with nothing at stake. And keep the draft-never-send rule on anything that leaves your account, at least until you have watched it be right ten times in a row.
If you are on a Google Workspace account rather than personal Gmail, there is one extra layer worth knowing about for the cloud version. Instead of signing in as yourself, you can create a service account that is granted permission to act on your behalf, which is what keeps a cloud job working without a browser sign-in every week. Claude Code can set this up. The one thing you must do yourself is approve the permission scopes in your Google Admin console, since that is deliberately admin-only.
What went wrong for me
- The reminder emailed a conference room. Calendar attendee lists include room resources and people who declined. Filter them.
- Duplicate drafts. Two scheduled runs, two drafts, before I added the check-drafts-first rule. Idempotency is not an optional nicety.
- The generated agenda was subtly wrong. Cut it. A generic email that is right beats a specific one that is off.
- Timestamped takeaways were a rabbit hole. Meet transcript docs have no line timestamps. I dropped the feature and the automation shipped that day.
- The laptop scheduler silently stopped. A job that never fires looks exactly like a day with no calls. Moving to the cloud fixed it permanently.
- Recordings finish after transcripts. If the recap runs too early, the recording link is missing. Run it late morning the next day, and have it send the transcript and takeaways anyway if the recording is not there yet.
- Sharing the folder instead of the files. Share the two specific files per attendee. Never the folder.
What's next
Once the Workspace CLI is connected, the marginal cost of the next automation is close to zero, because the hard part was never the automation. It was the connection.
Things I built after this one, each in under an hour: a weekly digest of what is coming up, an automatic folder and document created for every new client, an intake form that files itself, and a nudge when someone books a call and has not filled in their prep form.
The pattern is always the same. Find a thing you do every week that has no judgment in it. Describe it in a paragraph. Ask for a dry run. Approve it. Schedule it.
Want the whole thing built for you? If you would rather have this running by the end of the week than build it yourself, I do that.
Book a call with me