Build a Daily Email Drafting Routine with GPT Prompt Chains

A person in a contemporary home office setting, sitting at a desk with a laptop open to an email drafting interface. The workspace includes notepads, a coffee cup, and a calendar, with sunlight streaming through a window and plants in the background, showcasing a daily email drafting routine.

Why drafting daily emails burns so much time

If you’re anything like me, you probably open your inbox around 9AM, scroll through a mix of half-replies, flagged threads, and notes you sent yourself at 1AM (that no longer make sense), then immediately go make coffee. Writing daily emails, especially the ones that need to be thoughtful or branded or semi-professional, just wrecks your flow. It’s not like writing a blog post you can sink into—each email is a mini performance and honestly, I never feel like warming up.

My initial attempts at automation were bad. I tried using saved templates in Gmail. But those are static and require clicking around. I tried Apple Shortcuts—broke instantly. I even made a Zapier zap that would read my calendar each morning and spit out a summary draft into a Slack channel. That worked, but the copy sounded like a pudding cup reviewed my meetings. Very monotone. So I decided to create a chain of GPT prompts instead, and now it’s the first thing that actually feels low-pressure, repeatable, and weirdly fun.

Build a raw daily summary from sources

The first part of my chain doesn’t involve any writing. It just builds a messy raw dump of what happened yesterday and what’s on deck today. If you start with generation prompts too early, GPT will just hallucinate based on nothing. So I feed it actual material first.

Here’s what I pull in each morning:

– My Google Calendar events (yesterday and today)
– My Slack mentions (you can export these using Zapier or Slack’s own export API)
– Relevant emailed items from the previous 24 hours (just the subject and the first line)
– Any new Notion tasks or changes to joined docs

I combine all that into one block of dirty text using a text parser in Make. It’s not fancy—just a line-per-event outline:

“`
Calendar yesterday:
• Quarterly Fleet Review at 2PM: discussed leftover budget leak
• Onboarding Samir to Auth team

Slack mentions:
• @me in #ops asked about broken customer export
• Liam uploaded draft migration plan

Emails:
• Subject: “Clarification on timelines”
Body: “Hey, quick one—does the May 9 target still hold?”
“`

Getting this into a single place already reduces the cognitive load. But GPT won’t format this well until you tell it exactly how much freedom it has.

Use a midstage prompt to reformat your day

Once I have the blob of source material, I don’t ask GPT to start writing the email. I run a structure-only prompt that says:

“Take this text and organize it into three short lists: what happened yesterday, what needs attention today, and what can be ignored. Do NOT write in full sentences. Keep it short like a checklist. Don’t invent anything.”

That last line is critical. Without it, GPT will absolutely fake a meeting recap that never existed. Like—it once told me I had a client call with someone named Nadine and we celebrated placement success. I have never met a Nadine.

Here’s the kind of output this step gives me:

**Yesterday summary**
– Budget review call in afternoon
– Assisted onboarding for new dev
– Replied to 2 requests about timeline

**Today focus**
– Follow up re export bug in Ops
– Timeline response for planning team
– Review draft of migration doc

**Ignore**
– Reminder about old Q2 checklist
– Group thread w unrelated attachments

Now it’s usable. From here, you can finally tee GPT up to write something people won’t hate reading 🙂

Prompt GPT to draft the actual email tone

This is the part where I used to spend *way* too much time fiddling with sentences that sound casual but still responsible. Now I have a prompt chain that does the heavy lifting.

I set GPT up like this:

“Using the following three lists (yesterday, today, ignore), write a quick morning email for internal teammates. Tone is direct and kind, not robotic. Keep it to three short paragraphs max. No greetings or closings. Just the core content. Avoid filler like ‘hope you’re well.'”

Then I paste in the structured blocks from earlier.

Here’s a real example it gave me this week:

> Budget discussion yesterday clarified where excess spend leaked — more on that in PM notes. Also got Samir set up with basic access.
>
> Today I’m checking on the export issue in #ops, responding to planning about the May target, and finishing the migration doc review.
>
> Skipping nonurgent threads like the Q2 checklist thread and the attachment convo with support. Ping if anything high-priority is missing.

The tone is perfect: crisp, friendly, and short enough that nobody will be mad reading it on their phone. Sometimes it might repeat a word like “thread” or “doc,” but nothing worth editing every time.

Optional prompt for areas of confusion

One bonus chain I added last month has been helpful when my backscroll is murky. I added a step where I ask:

“Based on this input, flag anything that might require clarification, incomplete responses, or follow-up that wasn’t logged. Just list the items.”

I run this before writing the actual email, and sometimes it surfaces things I replied to mentally but not in writing 🫠

Like this one:

• No reply yet to timeline clarification email
• Unclear whether export bug is acknowledged or fixed
• No update from Samir after onboarding call

It’s a quick way to catch ghosted tasks or fuzzy ownership areas. I don’t always include this part in the email itself, but I track it internally. You could even send a separate clarifying note to your team if something feels real messy.

Clipboard and keyboard shortcuts to speed it up

I used to copy paste every prompt chain manually between apps, and it was… demoralizing. Now I use Raycast to trigger presets. You can set up clipboard templates so you hit like Ctrl+Shift+1 and it pastes in your “midstage structure” prompt. Then Ctrl+Shift+2 for your final tone prompt.

For the actual copy and paste into Slack or Gmail, I use TextSniper on Mac to OCR short chunks from web previews fast. Might be overkill, but it’s reliable when formatting gets borked—the way Slack handles whitespace sometimes makes copied GPT text look like it was typed on a calculator.

Another tiny trick: if you send these daily updates in a consistent channel or thread, use the channel search (Cmd+F) in Slack to look up your last note. You can check if you already mentioned something before repeating it again.

And lastly: I never schedule these. I send them live after reading the GPT output. It takes 3–4 minutes, and I’ll tweak one or two words before sending. The key is: don’t over-edit. If it’s 80% good, hit send.

What to do when it starts hallucinating

Some mornings, GPT gets messy. Especially if I skipped pulling data the day before, or if I fed in a Slack dump with lots of reaction gifs. You’ll end up with things like:

– “We successfully closed out the migration work”—when nothing is closed.
– Mentioning people who weren’t involved.
– Talking like a robot poet: “Progress unfolded across the delivery stream.” Uhh…

When that happens, first check your inputs. Did you accidentally leave a bunch of markdown or old context in the blob? GPT loves reusing stale info.

Then reset and run just the structural prompt without pressuring GPT to write polished text. If even that flops, strip down your input to just calendar and tasks. Sometimes it needs less to hallucinate less ¯\_(ツ)_/¯

Worst case, add the word “only” in bold caps in your prompt: “ONLY base your writing on the lists below.”

Storing a fallback template just in case

There are still days (usually Mondays) when neither me nor GPT feels like playing nice. For those, I keep a dead simple fallback template in my clipboard manager:

“`
Yesterday:
– thing 1
– thing 2

Today:
– item A
– item B

Blocked/missing:
– unanswered message about timeline
“`

It’s not elegant, but it gets it sent.

I try not to end the day with an unsent email if the only thing stopping me is indecision. Rebuilding the workflow 3 or 4 times has finally taught me: the humans reading this only want a high-signal summary. If there’s tone, great. If there’s humor, even better. But if they get 3 bullets showing what matters—mission accomplished 😛

Making it stick as a daily habit

Honestly, I don’t have a bulletproof system for habit formation. But what finally worked was changing the question I asked GPT. Instead of saying “Write a daily stand-up,” I started saying:

“Help me read and organize my last 24 hours.”

That makes it feel useful whether or not I send anything. Once I have the summary, drafting and posting becomes the easy part. If you get interrupted mid-prompt or forget where you were in the chain, just rerun the structural step and rebuild fast. GPT doesn’t care.

I also set a recurring reminder titled “Emailish?” every weekday at 9:17AM (not a typo—I like weird reminder times). Once I start typing the raw log, muscle memory takes over.