DEV Community

Cover image for A Daily Briefing Assistant You Can Email
Tom Reinert
Tom Reinert

Posted on

A Daily Briefing Assistant You Can Email

This is a submission for the Postmark Challenge: Inbox Innovators.

What I Built

As a father of three with a busy calendar, this is something I’ve wanted for quite some time – this challenge pushed me to build it ☺️
It's a personal assistant that sends me a daily briefing email with what’s on today, what’s important, what I should already have on my radar for tomorrow or later in the week.

Working title: Daily Brief. You log in once, connect your Google Calendar, add a bit of personal context (routines, who people are, etc.), and from then on you get a daily email. It shows you what matters today, plus a bit of what’s coming. Thanks to Postmark's inbound email parsing you can also forward emails to a personal inbox to consider them for the briefing.

The idea is: one setup, then it just works. You don’t have to open an app every day. The whole thing runs through email. You can even reply to your briefing to adjust things or add context.

Since I got the first working version online, I have been using it together with my wife to organize our busy family schedule. It’s been super useful, the process to build this was so fun,I learned a lot and I'm actually thinking about releasing this publicly, so maybe others can get that little bit of calm when starting their day :)

Demo

👉 https://dailybriefing.verygooddesignstudio.com

You can test it in two ways:

  • Login with GitHub → You’ll get dummy calendar data
  • Login with Google → Use your real calendar. Your calendar data is only used to generate the briefing. No calendar data gets stored on my end.

You can also try forwarding any email to your inbox address or replying to the briefing. That’s live and working.

A screenshot of a daily briefing email

Dashboard with setup steps for the briefing

Screenshot of the personal inbox

Code Repository

Daily Briefing App

A personalized daily briefing service that combines your calendar events, custom notes, and email content into AI-generated summaries delivered on your schedule.

Features

  • Calendar Integration: Connect your Google Calendar to include upcoming events
  • Custom Notes: Add and manage personal notes, talking points, and task lists
  • Email Parsing: Receive and process emails at your unique inbound address
  • AI-Generated Briefings: Combine all sources into personalized daily summaries
  • Scheduled Delivery: Automated email delivery at your preferred time
  • Test Mode: Preview briefings in the UI before scheduling

Quick Start

  1. Setup Environment

    cp .env.example .env.local
    Enter fullscreen mode Exit fullscreen mode

    Update .env.local with your API keys:

How I Built It

I’m a designer, but I’ve always had a thing for code – mostly frontend stuff. This was the first time I’ve really been able to ship something end-to-end, thanks to AI support (I used Cursor with Claude a lot).

The stack:

  • Next.js
  • Supabase (auth + storage)
  • Vercel AI SDK
  • Google Calendar API
  • Github Actions
  • Postmark (inbound + outbound email)
  • shadcn/ui for the interface

Implementation Timeline & Learnings

This was one of those projects where I learned a ton by just doing. Here’s what stood out along the way:

  • Started with a personal starter project
    Already had Next.js with Supabase auth and the Vercel AI SDK set up. That saved a lot of setup time.

  • Added Google sign-in + calendar integration
    Getting OAuth working was okay, but pulling calendar events with the right scopes and tokens took some figuring out.

  • Set up Postmark inbound processing
    Hooked up the webhook, tested locally with ngrok. Worked immediately and gave me clean data to work with.

  • Added personal notes input
    This small feature made a big difference. Gave the assistant the context it needs to feel relevant.

  • Dug into calendar data structure
    Had to learn how recurring events and multi-day entries work so the briefings are actually useful and clear.

  • Had to get the app verified by Google
    It’s a pretty verbose process with a bunch of steps. Got verified just in time for the submission.

  • Built a mock mode with GitHub login
    Added a test path with fake calendar data. Super helpful for trying things quickly and demoing without setup.

  • Introduced user email settings
    Let users choose when they want their briefing. Timezone handling was surprisingly tricky.

  • Switched from Vercel Cron to GitHub Actions for scheduling
    Vercel only allows one run per day on the free plan, which made testing hard. GitHub Actions was easy to set up and gives full control over timing—has worked reliably since.

  • First real briefing arrived
    A cool moment—everything stitched together and worked as intended.

  • Iterated on the prompt + AI model
    Tested a few different prompt setups and model configs to get the tone and structure of the briefing right.

  • Refined UX and UI
    Made a few passes to reduce friction. Setup should feel simple and invisible once it's done.

Postmark

Postmark was a key part of this. The inbound parsing made a huge difference, it just worked. I had it set up in no time and it was way easier than expected. Outbound emails are also super fast and easy to manage. One thing that helped a lot was StrippedTextReply. When someone replies to a briefing, I only want the new message, not the full quoted email thread. Postmark gives you just the reply content, no extra cleanup needed. Made the reply-to-context feature feel seamless. Honestly, one of the smoothest parts of the whole project.

Thank you for this challenge which pushed me to build and learn!

Top comments (0)

Some comments may only be visible to logged-in visitors. Sign in to view all comments. Some comments have been hidden by the post's author - find out more