Prologue: Into AI — Between Sessions
Building Something Real
A vibe coding session, unedited.
This is a record of an actual session — not a polished demo. It includes the wrong turns, the error messages, and the moment it worked.
It took about 45 minutes. Zero lines of code were written by hand.
Real project
Real errors
Working result
Step 1 — The Problem
Start with something annoying.
Every week, a swim team posts the practice schedule as an image — a photo of a spreadsheet, basically. Two kids. Two different teams. Different days, different times, dryland vs. swim workouts.
The old way: look at the image, manually create 10–13 calendar events, one by one.
"I don't want to have to transcribe the times."
That's the whole brief. One sentence. That's enough to start.
Step 2 — Scoping It
What does "fully automatic" actually mean?
01
Fetch the schedule page automatically — no manual screenshot
02
Find the current week's image URL (it changes every week)
03
Send the image to Claude's vision API — let it read the schedule
04
Extract only the two relevant teams: TEAM MARIO and Sharknado 2
05
Create calendar events automatically, skip duplicates
06
Run on a trigger every Monday morning — or on demand
This took about 3 minutes to scope. Then we started building.
Step 3 — The Build
The script appeared. All of it.
The full Google Apps Script — about 100 lines — was generated in one shot. Here's what it does in plain English:
Fetch the Spartans page → find the image URL using a pattern match → download the image → encode it as base64 → send it to Claude with a prompt asking for JSON → parse the response → find your Google Calendar → create one event per practice with duplicate checking.
I forgot to tell Claude about the fact that the colors on the image matter until we got part of the way into the conversation. But once I realized it and added that element, Claude gave me an edit to drop inside the script.
The script ended up including: "Pink or colored cells indicate DRYLAND workouts. White cells are SWIM." I copied and pasted that in. I never typed the words JSON array — I still am not entirely sure what that is, and it didn't matter.
Step 4 — First Error
It broke. That's normal.
Execution Log — Error
SyntaxError: Unexpected token '`', "```json [ "... is not valid JSON
fetchScheduleAndCreateEvents @ Code.gs:79
Claude returned the JSON wrapped in markdown code fences — the way it formats code in a chat. The script tried to parse that as raw JSON and choked.
Fix — one line
Find the line
const scheduleText = claudeData.content[0].text; and replace it with a version that strips the markdown fences before parsing. Claude wrote the replacement. I copied it in.
Time to fix: about 60 seconds.
Step 5 — Second Error
Wrong account. Easy catch.
I see the problem. It is logged in on the wrong account.
The script is running under your personal Google account instead of your family account. Fastest fix: add your family email as an invitee on each event. One line change.
Instead of re-creating the whole sheet in the family account, we added [email protected] as an invited guest on every event. Family calendar gets the invite automatically.
This is the kind of thing that stops a solo person cold. With someone in the conversation, it's a pivot, not a dead end.
Step 6 — Third Error
Color constants didn't work.
Execution Log — Error
Exception: Invalid argument: color
fetchScheduleAndCreateEvents @ Code.gs:144
Apps Script's named color constants (CalendarApp.EventColor.TANGERINE) threw an error on this account setup. Switched to numeric codes instead.
Fix
Use
"6" instead of the named constant. Google's color numbering system: 6 = Tangerine, 4 = Flamingo, 11 = Tomato.
Three errors. Three fixes. None of them took more than a few minutes. None of them required knowing how to code.
Step 7 — It Works
Execution completed.
✓
13 events created. Color-coded Tangerine. Family calendar invited. Dryland and Swim labeled separately.
Then we set a weekly trigger. Every Monday morning it runs automatically, reads the new schedule, and creates the week's events. Nothing to do.
Step 8 — What This Means
Notice what actually happened.
"You had a real problem, we scoped it in a few minutes, hit several errors, debugged them one at a time, and ended up with something genuinely useful running on a schedule."
The errors weren't failures. They were just the reps. Each one was a 30-second fix with someone in the conversation — and a potential "I give up" moment alone.
That's the difference. Not the tools. The conversation.
Before We Start — What You Will Need
What you actually need.
Not much. Here is the honest list.
01
A Claude.ai account. Free works to get started, but the free tier has usage limits that can interrupt you mid-session. Claude Pro ($20/month) is worth it — you may already have it if you are in this program.
02
An Anthropic API account. This is separate from your Claude.ai subscription — it is for automations that call Claude programmatically, like the swim script. You only need this for certain projects. Setup takes about 5 minutes and costs pennies for personal use. We will walk through it together.
03
Logins for whatever accounts you want to connect. Google account, calendar, whatever is relevant to your project. Have them accessible.
04
Some awareness of privacy tradeoffs. When you paste content into Claude — documents, emails, spreadsheets — that content leaves your device and goes to Anthropic's servers. For personal productivity tasks that is usually fine. For client data or confidential business information, pause and think first. Not a reason to avoid it. Just a reason to be aware.
05
A willingness to copy and paste without fully understanding what you are pasting. This is less a technical requirement and more a mental one. If you need to understand every line before you use it, this will be frustrating. If you can trust the process and verify the result, you will be fine.
The Real Work — What We Will Demystify
It is less scary than it looks.
Here is what tends to feel intimidating before you try it — and what it actually turns out to be.
→
Getting set up. The accounts, the API key, the permissions screens. Claude can hold your hand through every step. You describe what you are seeing, it tells you what to click. We did this live in this session.
→
Script editing. You do not need to understand code to edit it. You need to find the right line, replace the right value, and save. Claude tells you exactly which line and what to change. That is it.
→
Copy-pasting into scripts. This is genuinely the main skill. Select all, delete, paste. If something goes wrong, you paste again. There is no way to permanently break anything by pasting wrong.
→
Reading error messages. Error messages look scary and are actually very useful. Copy the message, paste it to Claude, ask what it means. You will have a fix in under a minute. We did this three times in this session.
→
Knowing when to stop and ask. The fastest way to get unstuck is to describe exactly what you see — the error, the behavior, the result you expected — and let Claude diagnose it. Frustration almost always comes from trying to figure it out alone instead of just asking.
Up Next — Your Session
What's your annoying thing?
Before our next session, think about one thing you do manually and repeatedly that a script could handle. It doesn't have to be technical. It just has to be real.
Some prompts to get you thinking:
→
Something you copy and paste between tools more than once a week
→
A document you recreate from scratch that could be a template
→
A research task that takes an hour and produces a document
→
Something you dread because of the setup, not the actual work
Bring one of these to our next session. We'll scope it, build it, and see what happens.