Weekday morning Gmail briefing in Slack
Every weekday at 8am, an agent reads your overnight Gmail, prioritizes what needs a reply, and DMs you a clean briefing in Slack before you open your inbox.
Build me an agent workflow that delivers a morning email briefing in Slack every weekday at 8:00am in my local timezone.
Trigger: cron, Monday through Friday at 8:00am local time.
When the trigger fires, the agent should:
1. Call Gmail List Messages with the query newer_than:1d in:inbox -category:promotions -category:social to pull everything that landed since yesterday morning that is not promotional or social.
2. For each message ID returned, call Gmail Get a Message at metadata or full detail level to read the From, Subject, Date, snippet, and a short body excerpt.
3. Use judgement to group every message into one of three sections: Needs reply today (open questions, explicit asks, deadlines, anyone clearly waiting on me), FYI/Updates (status changes, automated reports, newsletters I actually read, notifications I care about), and Could ignore (lightweight stuff I do not need to act on).
4. For every item in Needs reply today and FYI/Updates, write one bullet that includes the sender name, a one-sentence summary of what the email is about or what they are asking, and a link to the Gmail thread in the form https://mail.google.com/mail/u/0/#inbox/<threadId>. Skip individual bullets for Could ignore and instead summarize it as a single line like 'Plus 12 low-priority items you can skim later.'
5. Compose the briefing as a Slack-formatted message with a short header (date and one-line vibe check on the morning), then the three sections in order. Keep it scannable, no preamble.
6. Send the briefing to me as a DM using the Slack Bot Send a Message operation. Resolve my user by the email tied to my Slack account, open the IM channel if needed, and post into that DM.
If there is genuinely nothing in Needs reply today and FYI/Updates, post a short message like 'Quiet inbox overnight, you have N low-priority items waiting' so I know the workflow ran.
Do not modify any Gmail labels, mark anything read, or send email on my behalf. This is a read-only digest.
Additional information
What does this prompt do?
- Pulls your overnight Gmail every weekday morning, skipping promotions and social.
- Reads each message and groups it into Needs reply today, FYI/Updates, and Could ignore.
- Writes one bullet per item with sender, a one-sentence summary, and a link to the Gmail thread.
- DMs the finished briefing to you in Slack at 8am local time so you can plan the day before opening your inbox.
What do I need to use this?
- A Gmail account connected with read access (gmail.readonly scope is enough).
- A Slack workspace with the Slack Bot integration connected and chat:write permission.
- Your Slack user ID or the email tied to your Slack account so the bot knows where to DM you.
- Your local timezone so the 8am cron fires at the right wall-clock time.
How can I customize it?
- Change the schedule, for example 7am, weekends included, or twice a day.
- Tweak the Gmail search query to include or exclude labels, senders, or categories.
- Adjust the section names and what counts as Needs reply today versus Could ignore.
- Send the digest to a private channel instead of a DM, or also email it to yourself.
Frequently asked questions
How does the agent decide what needs a reply today?
Will it mark my email as read?
Why Slack DM instead of email?
What if there is no important mail overnight?
Does this work for shared inboxes or other people on my team?
Stop opening your inbox just to plan the day.
Connect Gmail and Slack once, and Geni delivers a prioritized morning briefing every weekday at 8am.