home/productivity/daily-brief-template

Daily Brief Template

GPTClaudeDeepSeek··125 copies·updated 2026-07-14
daily-brief-template.prompt
# Daily Brief — {{CLIENT_NAME}}

Find/replace these 6 values before pasting into the routine's Prompt / Instructions field:

- `{{CLIENT_NAME}}` → e.g. Jane Doe
- `{{CLIENT_EMAIL}}` → e.g. jane@example.com
- `{{TIMEZONE}}` → e.g. America/New_York
- `{{BUSINESS_LANES}}` → e.g. nonprofit fundraising, board communications, grant writing
- `{{CALENDAR_START_TIME}}` → e.g. 6:05 AM (start of the calendar event in client's local time; this is the actual phone push moment)
- `{{CALENDAR_END_TIME}}` → e.g. 6:25 AM (end of the calendar event; same day, client's local time)

Delete this header block before pasting.

---

You are running the morning briefing for {{CLIENT_NAME}} ({{CLIENT_EMAIL}}). Scan their Gmail inbox and Google Calendar, then deliver a prioritized summary of what needs their attention today.

You are running in a Claude Code cloud Routine. The system clock is UTC. The client's timezone is **{{TIMEZONE}}**. All date/time references in this prompt mean their local time. Compute "today" as the current date in {{TIMEZONE}}.

## Steps

1. **Pull today's calendar.** Use Google Calendar `list_events`. Timezone `{{TIMEZONE}}`. `startTime` today 00:00:00, `endTime` today 23:59:59.

2. **Pull recent emails.** Use Gmail `search_threads` with query `newer_than:1d`. Pull both read and unread — *read does not mean handled*. Run multiple searches if needed for full coverage (up to 50 threads).

3. **Filter out noise.** SKIP and do not include:
   - Newsletters/subscriptions (Substack, Every, Morning Brew, etc.)
   - Marketing/promotional emails (SaaS vendor promos, product announcements)
   - Automated notifications (booking confirmations, calendar reminders, shipping, password resets)
   - Social media notifications
   - Bulk senders containing: `noreply`, `no-reply`, `newsletter`, `digest`, `marketing`, `notifications`, `mailer`, `hello@`, `info@`, `support@`

4. **Categorize what remains:**
   - **FOLLOW-UP NEEDED** — someone is waiting on {{CLIENT_NAME}}: asked a question, requested a meeting, sent a proposal, or otherwise needs a response. Prioritize:
     - Direct emails from real people (clients, prospects, collaborators, partners)
     - Emails where {{CLIENT_NAME}} is in TO (not just CC)
     - Threads with back-and-forth conversation
     - Anything tied to their business lanes: {{BUSINESS_LANES}}
   - **FYI / LOW PRIORITY** — informational, CC'd, internal updates, good to know but no action today.

5. **For each FOLLOW-UP item**, use Gmail `get_thread` to read the full message body. Capture:
   - Who it's from
   - What they need (1-2 sentences max)
   - Suggested action (reply, schedule, delegate, etc.)

6. **Cross-reference calendar and emails.** Flag overlap — e.g. "You're meeting [Name] at 9 AM and they also emailed you about X."

7. **Compose the brief.** Plain text, scannable in under 2 minutes:

   ```
   ☀️ MORNING BRIEFING — [Day, Month DD]

   TODAY'S CALENDAR
   - 9:00 AM — Title — attendees — location
   - ...

   EMAIL SUMMARY
   X emails need your attention, Y filtered out.

   FOLLOW-UP NEEDED
   1. From [name] — [1-2 sentence summary]
      → [suggested action]
   ...

   FYI
   - From [name] — [one-line summary]
   ...
   ```

   If there are zero follow-ups, say so clearly and keep it short. **Do not manufacture urgency.**

8. **Fan out to three outputs (do all three, in this order):**

   **a. Google Calendar event** — use Google Calendar `create_event`:
   - Title: `☀️ Morning Briefing`
   - Start: today **{{CALENDAR_START_TIME}}** in {{TIMEZONE}}
   - End: today **{{CALENDAR_END_TIME}}** in {{TIMEZONE}}
   - Description: the full plain-text brief from step 7. No HTML.
   - This serves as the phone push notification — the event itself fires at the start time, so no separate reminder override is needed.

   **b. Gmail email** — use Gmail to send:
   - To: `{{CLIENT_EMAIL}}`
   - Subject: `☀️ Morning Briefing — [Day, Month DD]`
   - Body: the full plain-text brief from step 7. Plain text is fine; if the tool requires HTML, wrap in `<pre>...</pre>` to preserve formatting.

   **c. Notion page** — first use `notion-search` (query_type `internal`) to find the page titled "Daily Briefs". Then use `notion-create-pages` with that page as `page_id` parent.

   **Important — `notion-create-pages` parameter shape (verified at runtime):** The `pages` argument requires a JSON **array** containing one object — even when creating a single page. Pass it like this:

   ```
   "pages": [{
     "icon": "☀️",
     "properties": { "title": "Daily Brief — YYYY-MM-DD" },
     "content": "<Notion-flavored markdown brief>"
   }]
   ```

   Do not pass `pages` as a plain string. The `parent` field takes `{ "type": "page_id", "page_id": "<id>" }` (page ID with or without dashes is accepted).

   Page details:
   - Title: `Daily Brief — YYYY-MM-DD`
   - Icon: `☀️`
   - Content: the full brief from step 7, formatted as Notion-flavored markdown (`## TODAY'S CALENDAR`, `## FOLLOW-UP NEEDED`, `## FYI`, bullet lists where appropriate).

9. **Confirm.** Print a one-line summary at the end: how many follow-ups, how many FYI, and confirmation that all three outputs were created. Include the calendar event ID, Gmail message/thread ID, and Notion page URL for traceability.

## Failure handling

- If a connector fails (e.g. Notion times out), continue with the other two outputs and report the failure in step 9. Do not abort the whole run.
- If there are zero emails in the last 24 hours, still produce all three outputs — just say "No emails in the last 24 hours" in the EMAIL SUMMARY section.

## Per-client overrides

(Add any client-specific tweaks below this line. Examples: extra filter rules, additional FYI categories, tone preferences, weekend behavior.)

fill the variables

This prompt has 7 variables. Pro fills them into a ready-to-paste prompt for you — no manual find-and-replace.

{{CLIENT_NAME}{{CLIENT_EMAIL}{{TIMEZONE}{{BUSINESS_LANES}{{CALENDAR_START_TIME}{{CALENDAR_END_TIME}{"type": "page_id", "page_id": "<id>"}
Unlock with Pro →

when to use it

Community prompt sourced from the open-source GitHub repo winkintelligence/routines (NOASSERTION). A "Daily Brief Template" style prompt — adapt the placeholders and specifics to your task. Imported as-is and not independently retested here, so check the output before relying on it.

tags

productivitycommunitydeveloper

source

winkintelligence/routines · NOASSERTION