June 5, 2026 · 6 min
A morning calendar brief, before your inbox
My inbox brief lands at 7. By 7:05 I know roughly what mail to actually read. But that always left a gap: I still had to open the calendar app, scroll through the day, and mentally stitch back-to-back meetings into a plan. So I added a calendar brief that runs at the same time and drops the day’s shape into the same Telegram thread.
This is the recipe. Five inputs, one cron, one Telegram message before your first coffee.
What you get
A morning Telegram message that looks roughly like this:
Friday 6 Jun
09:00 Standup (30m, all hands)
10:30 Sebastian — async chat catchup
13:00 ☕ lunch w/ Anil
14:00 Eng review: edge-proxy carve-out (1h)
16:30 John follow-up (15m, ad hoc)
3 meetings stacked 9–10:30. Block 11–13 for the
edge-proxy PR.
Lunch break is real today.
Sebastian thread: last reply Tue, you owe him.
That last block is the part that does the work. The agent reads the day and writes a one-paragraph plan. Nothing radical, just the kind of summary you’d write yourself if you weren’t in a rush.
What you need
- A Telegram bot wired into your box. If you haven’t done that yet, the messaging setup guide is a five-minute click-through.
- Google Calendar access from the agent. The Hermes MCP catalog has a one-click Google Calendar install in the admin panel. After you sign in, the agent can read events on your primary calendar.
- A model that’s good at structured output. Any of the cheap ones do this fine. Mine runs on
deepseek/deepseek-v4-flashand a brief costs a fraction of a cent.
The prompt
Open the dashboard, click CRON in the sidebar, then CREATE. Three fields: schedule, name, prompt. Set the schedule to 0 7 * * * (every day at 07:00 in your box’s local timezone), name it “Morning calendar brief”, and paste this as the prompt:
Read my primary Google Calendar for today.
Group events by time. For each, include duration
and a short clue about what it is. Skip anything
declined or tentative.
Then write a one-paragraph plan for the day in my
voice:
- Flag the longest unbroken work block.
- Note any obvious conflicts or stacked meetings.
- Call out one thing I'd otherwise forget.
Format the whole thing for Telegram (plain text,
under 1500 chars). Send to my Telegram via the
gateway. Don't ask follow-ups.Save. The first run will happen on schedule tomorrow, but you can right-click the cron row and pick Run now to test it immediately. Check Telegram, you should have a brief in under fifteen seconds.
What I’ve tuned
Three things that took the first month of running this to figure out:
Skip declined events explicitly. Without this line, the brief includes meetings you declined and you waste mental cycles deciding whether to skip them again.
Ask for a plan, not a list. The list of meetings is the easy part. The value is the one-paragraph interpretation: where’s your long work block, what’s stacked, what would you forget. Without “in my voice” the model defaults to a chirpy assistant tone that gets old fast.
Cap the length. Telegram messages cut at 4096 chars but anything past 1500 won’t get read on a phone. I cap mine at 1500.
What it costs to run
On OpenRouter with deepseek-v4-flash, one brief is about 6,000 input tokens (the calendar API response) and 300 output tokens. That’s well under a tenth of a cent. A year of daily briefs is around twenty cents.
Variations
Once you have the basic shape, the easy variants:
- Two briefs a day. One at 7am for the full day, one at 12:30 with just the afternoon. Two cron entries, same prompt with a tweak.
- Two calendars. Add a second Google account in the Hermes MCP panel and merge them in the prompt. I do this for my personal and work calendars, with personal events tagged
[p]. - Pre-meeting context. If the next meeting has a doc linked in the description, fetch it and summarize. The Hermes Google Drive plugin makes this one extra sentence in the prompt.
Why it works
The calendar app on my phone shows me the same data. What it doesn’t do is interpret it. The agent reading my day and writing the plan I’d write myself, in the voice I’d write it in, removes the five minutes of morning friction that used to come before any work actually started.
And the cron tab makes the whole thing a three-field form. You don’t need to write code, host a server, or set up a webhook. Just paste a prompt and walk away.
Related
- A daily inbox brief, written by your agent — the companion to this one. Same shape, mail instead of calendar.
- A morning Hacker News brief on a cron — if you also want news.
- Messaging channels — how to get a Telegram bot talking to your box if you haven’t yet.