ServicesAboutNotesContact Get in touch →
EN FR
Note

OpenClaw Morning Briefing Pattern

How to configure an OpenClaw cron job to deliver a daily personal briefing — covering calendar, email priority, pipeline status, and time tracking — to Telegram before your first coffee.

Planted
automationai

The morning briefing pattern configures a cron job that fires at 7 AM and pulls information from multiple sources — weather, calendar, email, project status, time tracking — into a single summary delivered to Telegram or WhatsApp. Setup takes under 15 minutes. Users report saving 30 or more minutes per morning compared to opening each source separately.

The Basic Cron Setup

Terminal window
openclaw cron add \
--name "morning-briefing" \
--cron "0 7 * * *" \
--tz "Europe/Paris" \
--session isolated \
--message "Generate my morning briefing: weather in Lyon, today's calendar events, unread email summary prioritized by urgency, status of active dbt projects per client, and yesterday's Toggl hours by client." \
--announce \
--channel telegram

The key flags:

  • --cron "0 7 * * *" — fires every day at 7:00 AM.
  • --tz "Europe/Paris" — always specify a timezone. Without it, the Gateway uses the host machine’s system timezone, which may not be the timezone you’re thinking in when you write “7 AM.”
  • --session isolated — runs the briefing in its own context, completely separate from your main conversation thread. This is important: you don’t want an automated morning briefing injecting its output into an active development conversation.
  • --announce --channel telegram — delivers the result to your Telegram, not a Slack channel. For a personal briefing, Telegram or WhatsApp is usually more appropriate than a work channel.

See OpenClaw Cron Scheduler Mechanics for a full breakdown of what each flag does and how the scheduler handles failure and retry.

What Goes in the Briefing

The --message parameter is a natural language prompt. The agent interprets it and pulls from whatever integrations are connected. A typical freelance briefing includes:

Weather forecast. Simple, but useful if you’re cycling to a client office or planning an outdoor lunch. Takes one line to request, requires a weather integration or API key.

Calendar events for the day. What’s on today, in time order, with any video link or location attached. The agent reads your Google Calendar and formats this clearly.

Email priority summary. Not a full inbox dump — a prioritized summary of unread email, sorted by urgency. The agent uses judgment about what seems time-sensitive based on sender, subject, and content. This works reasonably well but benefits from prompt refinement: “flag anything from clients or that requires a response today” is more useful than “summarize unread email.”

Per-client pipeline status. For a consultant managing multiple dbt projects, the briefing can include the status of each client’s latest run. The agent queries whatever you have connected — Notion project pages, dbt output, a shared status file — and surfaces the highlights.

Yesterday’s hours by client. A brief summary from Toggl or your time tracker: how many hours did you log per client yesterday, and how does that compare to the plan? Useful for catching scope creep early and keeping your billing accurate without manual review.

Adding Project Context from Notion

The most valuable addition to the basic briefing is per-client project status pulled from a Notion workspace.

Each client has a Notion project page with the current sprint items, blockers, and next milestones. The agent reads the highlights and includes them in the briefing. This means before any client calls, you already know where things stand — without opening Notion, without reading through meeting notes, without reconstructing context from the last conversation.

The briefing prompt for this:

For each active client project in my Notion workspace, pull:
- Current sprint items and their status
- Any blockers flagged
- Next milestone and its date
Format as a brief bullet list per client, not more than 3-4 points each.

Retrieving context before a client call normally means digging through Slack, notes, and project boards. The briefing does this automatically.

Event-Triggered Meeting Prep

A useful extension of the morning briefing pattern is event-triggered meeting prep — a separate job that fires 30 minutes before each calendar event rather than once per day.

Terminal window
openclaw cron add \
--name "meeting-prep" \
--cron "*/30 * * * *" \
--tz "Europe/Paris" \
--session isolated \
--message "Check my calendar. If there is a meeting starting in 30 minutes, generate a prep summary: who's attending, the stated purpose, the last meeting notes with this client, any open items, and their latest pipeline status. If no meeting in 30 minutes, do nothing." \
--channel telegram

This runs every 30 minutes (note the */30 pattern) and only sends a message when there’s actually something to prep for. The “do nothing if no meeting” instruction matters — without it, you’d get a message every 30 minutes saying “no upcoming meetings.”

The prep message you receive 30 minutes before a call:

“In 30 minutes you have a call with PVCP. Last time you discussed the GA4 attribution discrepancy in their campaign data. Open items from your notes: confirm which attribution model is configured for paid social, share the updated report by end of week. Their latest pipeline ran successfully yesterday with 3 warnings in the staging environment.”

That kind of context normally takes 10-15 minutes of digging through Slack, notes, and project boards. The agent pulls it together in one shot.

The event-triggered pattern uses the same cron infrastructure as the morning briefing, but it’s checking state (what’s on the calendar in 30 minutes?) rather than running on a fixed schedule. OpenClaw’s persistent memory means the agent accumulates context about each client over time, so prep summaries improve as the relationship history builds up.

What Requires Tuning

The morning briefing is low-risk to set up, but the email summary component benefits from iteration. The first version will include too much or too little, depending on your inbox volume and how you’ve phrased the prompt.

A few common adjustments:

Too much email detail: Add “limit to the 5 most urgent items” or “only include emails that require a response today.”

Wrong definition of urgent: Add sender-based rules: “treat anything from [client domains] as high priority regardless of subject.”

Briefing too long to read quickly: Add a word limit or a format constraint: “The full briefing should be readable in under 2 minutes. Use bullet points, not paragraphs.”

Wrong timing: 7 AM might be too early if you don’t start work until 9. Adjust the cron to match when you actually want to receive it — 30 minutes before your typical start time is a good target.

The briefing prompt should be updated when the format is no longer useful. Treat each version as feedback and refine accordingly.