Events AI Circle AI Workflows
3rd Space Bucharest · AI Workflows Card 001 In production since Jul 2026

A podcast episode, start to finishPodcast Production

Three Claude skills that take one recording from a calendar invite to published show notes and cover art.

CreatorEric Melchor
Runs perEpisode
Skills3, chained
Time back~2 hrs / episode
Before — by hand 2 h 30 m

Research, script, email, write-up, Canva — spread across four apps and two days.

After — with Claude 30 m

Two short check-ins from Eric, one review pass, one manual step in Canva.

≈ 2 hours saved per episode — roughly a full working week back over a year of twice-monthly episodes.
Overview

What this card automates

The 3rd Space Bucharest podcast is short and casual — five to fifteen minutes, recorded over Google Meet with people from the community. The recording is the easy part. Everything around it is not: researching a guest well enough to ask a question they haven't answered fifty times, writing a script that sounds like Eric and not like LinkedIn, turning a rough set of AI meeting notes into publishable show notes, and appending two correctly-sized graphics to a Canva archive without breaking the layout.

Three skills cover that arc. Guest prep runs before the recording, show notes after it, and graphics after that. Each one is a written procedure Claude follows — not a prompt you retype every time. They read from the same Google Calendar, Gmail, Drive and Canva accounts Eric already uses, so nothing new had to be set up and nothing new has to be maintained.

Crucially, this is not a hands-off machine. Two of the three stages deliberately stop and wait for Eric, because the input only he has — what a guest told him at an event, which of two Canva archives is live — is exactly what makes the output worth publishing.

Before

How this used to get done

Per episode, by hand, across Calendar, LinkedIn, Google Docs, Gmail and Canva.

Research the guest. LinkedIn, their site, a search or two, hunting for one detail worth opening on. 30 min
Write the interview script. Twelve-ish questions, a couple translated into Romanian, in the same format as every previous episode. 35 min
Write the guest's heads-up email. Meet link, show format, five sample questions, pasted and re-edited each time. 10 min
Write show notes. Read back the meeting notes, land on a title that isn't boring, write a description that isn't generic. 30 min
Write the Instagram caption. Rework the description into short lines, then pick hashtags that aren't spam. 15 min
Build the two graphics. Find a photo, add a page to each Canva archive, retype the title and byline, fix the episode number. 30 min
Total, per episode ≈ 2 h 30 m
After

The three stages, in order

Each stage is one skill. They run in sequence because each one needs what the last one produced — the graphics can't be made until the title exists.

1Before

Guest preppodcast-guest-prep

Turns a calendar invite into an interview script and a guest email, without Eric opening a browser.

  • Finds the next event titled podcast recording — 15 min between Eric Melchor and… and pulls the guest, their email and the Meet link.
  • Reads the bio the guest wrote themselves in the Cal.com booking notes — usually the best material available.
  • Reads the guest's LinkedIn PDF (summary, experience, awards only) and searches the web for one genuine contrast worth opening on.
  • Writes the full script as a .docx in Eric's established format — fixed intro, 10–14 short questions, two to four with a Romanian translation underneath, fixed outro — and files it in the Podcast Prep folder.
  • Drafts the casual “see you at 15:00 tomorrow” email in Gmail with the Meet link hyperlinked and five of the lighter questions previewed.
Waits for Eric Before researching anything, it stops and asks for two or three things about the guest that aren't findable online, plus a LinkedIn PDF. Nothing else happens until he answers — a script built without that is the generic one he'd have written himself.
2After

Show notes & captionpodcast-description

Turns the auto-generated meeting notes into a publishable title, description and Instagram post.

  • Finds the recording's notes doc in Drive by searching loosely rather than matching an exact title, because the title format drifts.
  • Checks the Podcast Descriptions folder for an existing write-up, matching on guest and date, since repeat guests exist.
  • Writes a title with a Bucharest or Romanian hook, plus two or three alternates — intriguing, not descriptive, under twelve words.
  • Writes a two-paragraph description in Eric's voice and an Instagram caption of four to seven short lines with 8–12 hashtags.
  • Saves it all as one Google Doc, then re-reads the doc to confirm the content actually landed.
Flags every time Any guest link it couldn't verify, any detail it had to interpret from a vague passage in the notes, and whether the AI Circle link is still a placeholder.
3Publish

Episode graphicspodcast-graphics

Appends the square cover and the wide thumbnail as new pages on two existing Canva archives.

  • Works out which episodes still need artwork by diffing the show-notes folder against the pages already in the Canva archive.
  • Takes the recommended title and the guest's name exactly as the show-notes doc spells them, diacritics included.
  • Derives the episode number from the last page's byline rather than guessing it.
  • Appends one 3000×3000 page and one 1920×1080 page, sets the guest photo to 50% opacity, and places the title and byline text.
Still manual Background removal on the guest photo happens in Canva by hand — the skill flags it rather than pretending it's done.
Stack

What it runs on

No new software. Every tool here was already part of the workflow.

Claude · Cowork Google Calendar Gmail Google Drive Google Docs Canva Web search Cal.com booking notes Gemini meeting notes
Where it breaks

Nine things that went wrong, and are now written down

Most of these were found the hard way. They live inside the skills as explicit warnings, which is the real difference between a skill and a prompt.

LinkedIn "Activity" is not their work

That section is mostly reposts and likes of other people's content. Treat it as the guest's own and you open the interview asking about something they never said.

Read: summary, experience, education, awards. Ignore: activity, posts.

Meeting notes are a paraphrase, not a transcript

Don't sharpen a vague line into a specific claim. If the notes say "themself" and "a client", it's because the AI didn't know — not an invitation to assign a gender, a number or a job title.

Already published once: a client described as "themself" went out as "her".

It mishears company names

Any brand or product name spoken aloud has to be cross-checked against a written source — usually the guest's own email domain.

One studio’s name came through as an acronym. The guest’s email domain gave away the real spelling.

Never build a URL from a spoken handle

Links get published under the guest's name and can't be retracted. A URL is only publishable if it comes from the invite domain, a verified site, or Eric.

3rdspacebucharest.com has been heard as "thirdspacerous.com".

Romanian diacritics break the matching

Drive filenames strip them, Canva pages keep them. GuestName and Guest Nâmé have to be normalised on both sides, or every guest with an accent in their name looks like a new episode forever.

Symptom: duplicate pages appended to the archive.

Repeat guests need a date, not a name

Matching on guest name alone silently skips a legitimate second episode with someone who's been on before.

Always match on guest and recording date.

The Canva byline is three text regions

A plain text replacement collapses them into one and destroys the superscript "rd" in 3rd Space. Two targeted find-and-replace operations are required instead.

Damage is invisible until the file is opened weeks later.

Google Docs can be created, not edited

The connector can make a file and trash it, but not change its contents. A doc with the wrong text has to be replaced, which clutters the folder.

Get it right before creating. One doc per run.

Episode numbers are derived, never guessed

The number comes from parsing the last page of the archive. If the two archives disagree, they've drifted — stop and ask rather than appending blind.

Also: two Canva designs with the same title means one is stale.

Copy this

The skills themselves

The whole thing, with every personal detail swapped for a {{PLACEHOLDER}}. Paste one into Claude and it will interview you and fill the blanks in before it runs anything — you never have to hunt through it for someone else’s folder names.

podcast-guest-prep/SKILL.md · template
---
name: "podcast-guest-prep"
description: "Prepares {{HOST_FIRST_NAME}} for an upcoming {{SHOW_NAME}} podcast recording. Finds the guest from his Google Calendar (events titled \"podcast recording - 15 min between {{HOST_NAME}} and {Guest}\"), pauses to ask {{HOST_FIRST_NAME}} for insider context and a LinkedIn PDF, researches the guest online, writes a full interview script as a .docx in the exact style of his existing \"{{PREP_FOLDER}}\" docs, and creates a Gmail draft of his casual \"see you tomorrow\" guest prep email (never auto-sent). Use this whenever {{HOST_FIRST_NAME}} mentions a podcast recording, a podcast guest, interview questions, prepping for a guest, \"who's my next podcast guest\", \"get me questions for [name/tomorrow's] interview\", \"send the podcast prep email\", or anything about his {{SHOW_NAME}} podcast — even if he doesn't name a guest, name a file type, or explicitly ask for \"a doc.\""
---

## Before the first run — set this up for yourself

**Claude: do this section before anything else.** This skill was written for a
different business and every personal detail in it has been replaced with a
`{{PLACEHOLDER}}`. Interview the person you're working with, one question at a
time, then rewrite this file with their answers and delete this section. Do not
run the workflow until every placeholder is filled.

- `{{HOST_NAME}}` — What's your full name, as it should appear as the host?
- `{{HOST_FIRST_NAME}}` — What should I call you in these instructions?
- `{{SHOW_NAME}}` — What's the podcast called?
- `{{HOST_EMAIL}}` — Which email address do you book and send from?
- `{{CALENDAR_EVENT_PATTERN}}` — What do your recording events look like in your calendar? Paste one title exactly as it appears.
- `{{BOOKING_TOOL}}` — How do guests book — Cal.com, Calendly, something else? Does the booking form ask them anything about themselves?
- `{{PREP_FOLDER}}` — Which folder should the interview scripts go into?
- `{{EPISODE_LENGTH}}` — How long is an episode, and how many questions do you want?
- `{{SECOND_LANGUAGE}}` — Do you want some questions translated into a second language? Which?
- `{{OPENING_LINE}}` — How do you open every episode? Give me the exact words.
- `{{OUTRO_LINE}}` — And how do you close it? Exact words again.
- `{{SHOW_VIBE}}` — In one or two sentences, what should a guest expect — fast and playful, or considered and deep?

If they don't know an answer yet, leave that placeholder in place and tell them
which one is still open — don't invent a value.

---

# Podcast Guest Prep

{{HOST_FIRST_NAME}} runs the {{SHOW_NAME}} podcast: short (5-10 min), casual interviews recorded over Google Meet. Before each recording he needs two things: an interview script for himself, and a light "see you tomorrow" heads-up email to the guest. This skill produces both from the calendar event plus whatever inside knowledge {{HOST_FIRST_NAME}} has about the guest.

## Step 1: Find the recording

Search the calendar (`search_events` with query like "podcast recording", or `list_events` with `fullText: "podcast recording"`) rather than assuming an event ID.

- If {{HOST_FIRST_NAME}} names a guest or a date, filter to that event.
- If this is running as part of the daily automated check, look for a recording starting in the next ~24 hours.
- Otherwise default to the next upcoming recording.
- If several candidates match, ask {{HOST_FIRST_NAME}} which one rather than guessing.

Real event titles follow this exact pattern: `{{CALENDAR_EVENT_PATTERN}}`. Pull the guest's name from the title and confirm it against the attendee list.

## Step 2: Identify the guest

The guest is whichever attendee isn't `{{HOST_EMAIL}}` or `{{HOST_SECOND_EMAIL}}`. Their email address is where the prep email goes.

Read the event's `description` field closely. {{HOST_FIRST_NAME}}'s booking flow ({{BOOKING_TOOL}}) often includes an "Additional notes:" section where the guest already wrote a short bio in their own words when they booked the slot. This is usually the richest, most reliable material you'll get — treat it as the backbone of your research, not an afterthought.

## Step 3: Ask {{HOST_FIRST_NAME}} for context + LinkedIn PDF — then stop

{{HOST_FIRST_NAME}} usually knows something about the guest that no amount of searching will surface — they met at one of his events, they have a running joke, they told him something offhand. Those details are what make his questions land, so ask before researching rather than after. Post this message, filling in the blanks from the calendar event:

```
Found your next recording: {Guest Name} on {date} at {time}.

To prep the best questions:

1. Tell me 2-3 interesting things about {Guest Name} that I wouldn't find online — personal, funny, or surprising.
2. If you have their LinkedIn, export it as a PDF (More → Save to PDF) and upload it here.
```

**⚠️ HUMAN IN THE LOOP — stop here and wait for {{HOST_FIRST_NAME}}'s reply before doing anything else.** Don't research, don't draft, don't create files. This applies to automated runs too: when the daily scheduled check fires, post the message and end the run. {{HOST_FIRST_NAME}} replying is what restarts the flow — the value of this skill comes from his input, and a script built without it is the generic one he'd have written himself.

If {{HOST_FIRST_NAME}} replies that he has nothing to add or no LinkedIn, that's a fine answer — continue with what you have.

## Step 4: Research the guest

Start with what {{HOST_FIRST_NAME}} gave you, then fill gaps online.

**If {{HOST_FIRST_NAME}} uploaded a LinkedIn PDF**, read only these sections: **Summary, Experience, Education, Licenses & Certifications, Honors & Awards, Volunteering**. Ignore "Activity", "Posts", and "Recent activity" entirely — those are mostly reposts and likes of *other people's* content, so treating them as the guest's own words or work leads to questions about things they never said or did. That's an embarrassing way to open an interview.

Then web-search the guest's name, plus "LinkedIn," plus any company or place names from their booking notes or {{HOST_FIRST_NAME}}'s context. You're not writing a biography — you're hunting for one genuine contrast or hook: a professional identity paired with something surprising, human, or offbeat (a hobby, a habit, an unlikely detour, a strong opinion). Every one of {{HOST_FIRST_NAME}}'s existing scripts is built around exactly this kind of juxtaposition — an M&A executive who reads Agatha Christie for fun, a debt-recovery exec who's obsessed with Mozart and sci-fi, a Samsung/Apple veteran who now plays padel. Generic LinkedIn-summary bios make for boring questions; specific, slightly unexpected details make for good ones. {{HOST_FIRST_NAME}}'s own tidbits from Step 3 usually beat anything online — lean on them first.

## Step 5: Write the interview script

Read `references/examples.md` now — it has three full real scripts {{HOST_FIRST_NAME}} has actually used. Match their structure and voice closely; the instructions below are a skeleton, the examples are the real spec.

Structure, in order:

1. **Opening line**, verbatim: "{{OPENING_LINE}}"
2. **Hook paragraph** introducing the guest by full name and setting up the contrast from Step 4. Sometimes this works best as two short bulleted lists (professional side vs. personal side) — see the examples for the pattern.
3. **Transition line**, verbatim: "Okay lets jump in:"
4. **10-14 questions.** Short, punchy, conversational — never multi-part or essay-style. Mix professional-angle questions, playful/personal ones, and a couple tied to the {{SHOW_NAME}} community (past events they've attended, {{CITY}}/expat life, culture). Work at least one of {{HOST_FIRST_NAME}}'s Step 3 tidbits in as a question — that's the whole reason you asked. For 2-4 of the more reflective questions, add a {{SECOND_LANGUAGE}} translation on the line directly below, matching the examples — this is a deliberate, recurring pattern, not something every question needs.
5. **Closing question**, verbatim: "Okay, where can people learn more about you?"
6. **Outro**, verbatim except the guest's first name: "{{OUTRO_LINE}}"

Use the `docx` skill to actually build this as a Word file (don't just hand back plain text) — read that skill before generating the file.

**File name:** `{YYYY-MM-DD}_PodcastPrep_{GuestFirstLast}.docx` (no spaces in the name part, dashes in the date) — matches {{HOST_FIRST_NAME}}'s existing naming exactly.

Before creating anything, search Drive for a file with that name (or containing the guest's name and "PodcastPrep") so you don't duplicate a script that already exists.

Upload into the **"{{PREP_FOLDER}}"** folder (inside "{{PODCAST_FOLDER}}" in {{HOST_FIRST_NAME}}'s Drive — search for it by name rather than hardcoding an ID, since folder IDs aren't portable). When uploading, set `disable_conversion_to_google_type: true` so it lands as an actual .docx like the rest of the folder, not a converted Google Doc.

## Step 6: Draft the guest prep email

Always create this as a **Gmail draft, never send it automatically** — {{HOST_FIRST_NAME}} reviews and sends it himself. Before drafting, check existing drafts/sent mail to that guest so you don't duplicate one.

Template (fill in the blanks, keep the voice otherwise unchanged). Create the draft as HTML and hyperlink the word "link" to the Google Meet URL rather than pasting the raw URL — it reads cleaner and {{HOST_FIRST_NAME}} doesn't want the long meet.google.com string sitting in the email body:

```
Subject: See you at {start time, e.g. 15:00} tomorrow

Hey {Guest first name}! See you at {start time} tomorrow at <a href="{Google Meet link from the event}">link</a>

Show format:
Length:
5–7 minutes
Vibe:
Fast. Casual. Playful. Slightly chaotic. Don't overthink your answers. Say the first thing that pops into your head. We don't want to spend more than 30 seconds on each question. Goal is to have fun, not be serious : )
Sample questions I may ask:

{5-6 of the lighter, punchier questions from the script — skip the deep/philosophical ones and anything with a {{SECOND_LANGUAGE}} translation. This should read breezy, not like a therapy session.}

Talk soon!

{{HOST_FIRST_NAME}}
```

Only adjust "tomorrow" in the subject/body if the email is going out same-day or the framing genuinely doesn't fit — otherwise keep it as-is, it's {{HOST_FIRST_NAME}}'s established voice.

## Running this automatically

{{HOST_FIRST_NAME}} wants a daily check of tomorrow's calendar to kick this off without him having to ask. That belongs in a scheduled task that calls this skill, not inside the skill itself — see the scheduled task set up alongside this skill.

Because of the pause in Step 3, an automated run is a **nudge, not a finished deliverable**: it finds the recording, posts the ask for context and the LinkedIn PDF, and stops. {{HOST_FIRST_NAME}} answering is what produces the script and the draft. If no recording is found for tomorrow, do nothing — no need to report back that there's nothing to prep.

Since the ask has to reach {{HOST_FIRST_NAME}} with enough runway for him to reply and for the flow to finish before the recording, it's worth having the scheduled task fire ~2 days out rather than the morning of.

To use one:

  1. Copy the text above.
  2. In Claude, create a new skill and paste it in as SKILL.md.
  3. Say “set this skill up for me”. It will ask you a dozen short questions — your show name, your folders, how you open an episode — and rewrite itself with your answers.
  4. Run it once on something low-stakes and watch where it stops to ask you something. Those pauses are the part that makes it work.

More cards in 3rd Space AI Workflows — each one a real workflow from a real member, with the skill attached.