How to Build a Morning Briefing Agent with OpenClaw in Paradime

Feb 26, 2026

Table of Contents

How to Build a Paradime OpenClaw Morning Briefing: Automate Your Day Before It Starts

Every incident starts the same way: someone finds out too late. A missed calendar conflict, a buried urgent email, a weather disruption nobody planned for. The "time to first clue" — the gap between something going wrong and someone noticing — is where most operational damage happens.

What if you could collapse that gap to zero every morning?

This guide walks you through building an automated morning briefing using OpenClaw (the open-source AI agent framework) orchestrated through Paradime's Bolt scheduler. By the time you pour your coffee, a structured daily digest of calendar events, urgent emails, weather forecasts, and pipeline status lands in your Slack channel — every single day, at 7 AM, without fail.

The approach is incident-friendly by design: structured steps, reproducible configuration, and minimal moving parts.

What Is Paradime?

Paradime is an AI-native data platform — often described as "Cursor for Data" — that replaces dbt Cloud™. Teams use Paradime to code, ship, fix, and scale data pipelines for analytics and AI.

The platform has three core pillars:

  • Code — An AI-native IDE for dbt™ and Python development, featuring DinoAI for context-aware code generation and debugging. It cuts dbt™ development time by 83%+.

  • Bolt — A production scheduler for dbt™ orchestration with cron-based and event-driven triggers, CI/CD, and built-in monitoring. Bolt reduces MTTR by up to 70%.

  • Radar — FinOps tooling that reduces Snowflake and BigQuery warehouse costs.

For this morning briefing project, Bolt is the workhorse. It handles the scheduling — defining when your briefing pipeline runs, what commands execute, and where alerts go when something breaks.

A typical Bolt schedule lives in a paradime_schedules.yml file at the root of your dbt™ project:

Why Bolt matters here: Your morning briefing is only as reliable as the scheduler behind it. Bolt gives you cron precision with built-in SLA monitoring and Slack/email failure notifications — so you know immediately if the briefing didn't fire.

What Is OpenClaw?

OpenClaw is an open-source, self-hosted AI agent framework (MIT license, formerly known as Moltbot) designed to run locally or on your own hardware. It connects to real communication channels — Slack, Telegram, WhatsApp, Discord — and orchestrates autonomous AI workflows.

The architecture follows a perceive → plan → act → observe → repeat agent loop across four layers:

  • Core runtime — Manages the agent loop, memory, and state

  • LLM backbone — Connects to model providers (OpenAI, Anthropic, Google, or local models via Ollama)

  • Tool registry — A plugin system where each tool exposes a schema with inputs, outputs, and permissions

  • Memory system — Short-term conversation context plus long-term vector-store or file-based memory

OpenClaw extends its capabilities through Skills — modular plugins defined with a skill.md specification that follows a YAML frontmatter + Markdown body format:

Architecture Overview

Before diving into the setup, here's how the pieces connect end-to-end:

Figure 1: End-to-end morning briefing architecture — Bolt triggers the pipeline, OpenClaw assembles the briefing from three APIs, and delivers to Slack.

Setup: openclaw-sdk + Google Calendar API + Gmail API + Weather API + Slack Webhook

Prerequisites

Component

Version

Purpose

Node.js

≥ 22 LTS

OpenClaw runtime

OpenClaw

≥ 2.1.0

Agent framework

Python

≥ 3.9

Custom skill scripts

Google Cloud project

Calendar + Gmail OAuth

Weather API account

Forecast data

Slack workspace

Delivery channel

Paradime account

Bolt scheduling

Step 1: Install OpenClaw

Step 2: Set Up Google Calendar API + Gmail API

Both APIs share a single Google Cloud project and OAuth consent screen:

  1. Go to Google Cloud Console

  2. Create a new project (e.g., openclaw-briefing)

  3. Navigate to APIs & Services → Library

  4. Enable Google Calendar API and Gmail API

  5. Go to APIs & Services → Credentials

  6. Configure the OAuth consent screen (External or Internal depending on your org)

  7. Create an OAuth 2.0 Client ID (Desktop app type for CLI flows)

  8. Download the credentials JSON file

Required OAuth scopes:

API

Scope

Access Level

Calendar

https://www.googleapis.com/auth/calendar.readonly

Read-only calendar data

Calendar

https://www.googleapis.com/auth/calendar.events.readonly

Events read-only

Gmail

https://www.googleapis.com/auth/gmail.readonly

Read-only email access

Figure 2: Google Cloud setup sequence for Calendar and Gmail API OAuth credentials.

Step 3: Set Up Weather API

Sign up for a weather data provider (e.g., OpenWeatherMap or WeatherAPI). Copy your API key.

Step 4: Set Up Slack Webhook

  1. Go to Slack API: Applications

  2. Create a new app or use an existing one

  3. Navigate to Incoming Webhooks → activate

  4. Add a new webhook to the target channel (e.g., #morning-brief)

  5. Copy the webhook URL

For full two-way Slack integration with OpenClaw, configure the Slack channel in your OpenClaw config:

Required bot scopes: chat:write, channels:history, channels:read, im:history, im:read, im:write, app_mentions:read, reactions:read, files:read, files:write.

Env Vars: GOOGLE_CREDENTIALS_JSON, WEATHER_API_KEY, SLACK_WEBHOOK_URL

Store all secrets in a dedicated environment file. Never commit these to Git.

For OpenClaw, if you're running as a systemd service, put secrets in a systemd EnvironmentFile:

Figure 3: Environment variable mapping — each secret authenticates with its corresponding API or delivery channel.

Security best practice: Treat OAuth tokens like passwords. Use restrictive file permissions (chmod 600), a dedicated Linux user for OpenClaw, and keep tokens out of backups and screenshots.

Script: Compile Calendar Events, Urgent Emails, Weather Forecast, Format as Briefing

Here is the core OpenClaw skill implementation. The index.js file handles the logic for each data source and assembles the final briefing.

Skill Directory Structure

Main Skill Entry Point (index.js)

Calendar Fetcher (lib/calendar.js)

Briefing Formatter (lib/formatter.js)

Installing the Skill Locally

Bolt Schedule: Cron 7 AM Daily

With the OpenClaw skill built and installed, you need a reliable trigger. This is where Paradime Bolt comes in.

Option A: YAML-Based Schedule (Configuration-as-Code)

Add this to your paradime_schedules.yml in your dbt™ project root:

This file must be committed and merged to your default branch (usually main). Paradime checks for changes every 10 minutes, or you can click "Parse Schedules" in the Bolt UI for immediate updates.

Option B: OpenClaw Native Cron Job

For the agent-side scheduling, configure the cron job directly in OpenClaw:

Or as JSON configuration:

Figure 4: Dual scheduling — Bolt handles the data pipeline trigger while OpenClaw handles the agent-level briefing assembly and delivery.

Why Both Schedulers?

Concern

Paradime Bolt

OpenClaw Cron

What it triggers

dbt™ model runs and tests

AI agent skill execution

Retry logic

Built-in with SLA alerts

Configurable backoff (3 attempts)

Monitoring

Bolt UI + email/Slack notifications

openclaw cron status + logs

Config format

paradime_schedules.yml

JSON config or CLI flags

Failure visibility

Slack channel + email

openclaw cron runs --id

Monitoring and Debugging

Paradime Bolt Monitoring

Bolt provides built-in monitoring for every schedule run. From the Bolt UI, you can:

  • View run history, status (passed/failed), and duration

  • Inspect compiled SQL for each dbt™ model

  • Use DinoAI to debug failed runs with AI-assisted error analysis

  • Set SLA thresholds that trigger alerts when exceeded

To check a dbt™ model's compiled SQL for debugging:

If a dbt™ model fails, Paradime's DinoAI can analyze the error and suggest fixes directly in the IDE — cutting MTTR significantly.

OpenClaw Monitoring

Run the diagnostic command ladder in order:

Key Health Signals

Command

Healthy Signal

Problem Signal

openclaw gateway status

Runtime: running, RPC probe: ok

Runtime: stopped with exit hints

openclaw cron status

enabled, next wake time present

scheduler disabled

openclaw cron runs --id

Status: ok

Status: error or skipped

openclaw doctor

No blocking issues

Config/service mismatches

openclaw channels status --probe

Channel: connected/ready

missing_scope, Forbidden, 401/403

Decision Tree: "Why Didn't My Briefing Arrive?"

Figure 5: Decision tree for debugging a missing morning briefing — follow the path from symptom to root cause.

Troubleshooting Common Issues

Issue 1: Cron Job Doesn't Fire

Symptoms: openclaw cron list shows the job, but openclaw cron runs shows no recent executions.

Root causes and fixes:

Root Cause

Diagnostic

Fix

Gateway not running 24/7

openclaw gateway statusstopped

Install as daemon: openclaw onboard --install-daemon

Cron scheduler disabled

Log shows cron: scheduler disabled

Set cron.enabled: true in config

Timezone mismatch

Job set for 7 AM UTC but you expected 7 AM local

Use --tz "America/New_York" flag

Laptop sleep / VPS downtime

Gateway logs show gaps

Use a dedicated VPS or always-on server

Issue 2: Job Runs but No Slack Message

Symptoms: openclaw cron runs --id morning-brief shows status: ok, but nothing appears in Slack.

Common fixes:

If using OpenClaw's Slack channel (not raw webhooks): Ensure the job has sessionTarget: "isolated" and delivery.mode: "announce". Without isolated sessions, cron output stays in the main session and never routes to the channel.

Issue 3: Google OAuth Token Expired

Symptoms: Calendar or Gmail fetch returns 401 Unauthorized.

Fix:

Pro tip: Use a Google Cloud service account with domain-wide delegation instead of user OAuth tokens. Service account credentials don't expire and are more suitable for automated cron jobs.

Issue 4: Weather API Rate Limit

Symptoms: Weather section shows empty or error in briefing.

Fix: Most free-tier weather APIs allow 1,000 calls/day. A single morning briefing uses 1 call. If you're hitting limits:

  • Check for duplicate cron jobs: openclaw cron list

  • Verify no retry storms: check cron.retry.maxAttempts in config

  • Add graceful fallback in the skill: return "Weather data unavailable" instead of crashing

Issue 5: Bolt Schedule Not Picked Up

Symptoms: Schedule exists in paradime_schedules.yml but doesn't appear in the Bolt UI.

Fixes:

  1. Ensure paradime_schedules.yml is in the root directory of your dbt™ project (next to dbt_project.yml)

  2. Ensure changes are merged to the default branch (usually main)

  3. Wait 10 minutes for auto-refresh, or click "Parse Schedules" in the Bolt UI

  4. Validate YAML syntax — a single indentation error will silently fail

Issue 6: Post-Upgrade Config Breakage

After upgrading OpenClaw, if your cron jobs stop working:

Connecting to Your dbt™ Data Pipeline

The morning briefing becomes even more powerful when it pulls from your dbt™ models. For example, you might have models that track data freshness, pipeline health, or KPI snapshots.

Here's how a dbt™ model might feed into the briefing:

If you're using Paradime's dbt™-llm-evals package, you can even evaluate the quality of AI-generated briefing content directly in your warehouse:

Wrapping Up

Building a Paradime OpenClaw morning briefing isn't just about convenience — it's about collapsing your time to first clue. Every morning, before you've opened your laptop, you have a structured, reproducible snapshot of:

  • What's on your calendar (conflicts, prep needed)

  • What's urgent in your inbox (drafts ready, nothing missed)

  • What the weather looks like (plan accordingly)

  • Whether your data pipelines are healthy (Bolt SLA alerts)

The entire system runs on two schedulers with complementary strengths: Paradime Bolt handles the data pipeline reliability (cron precision, SLA monitoring, AI-assisted debugging), while OpenClaw handles the intelligent assembly and delivery (agent skills, multi-API orchestration, Slack integration).

Key principles applied:

  • Reproducibility — Everything is configuration-as-code (paradime_schedules.yml, OpenClaw JSON config, skill.md)

  • Minimal fixes — The decision tree and troubleshooting section let you diagnose issues in under 2 minutes

  • Incident-friendly structure — Structured steps, clear env var mapping, and explicit error signatures

Next Steps

  1. Start small: Get the OpenClaw cron job working with just weather → Slack first

  2. Add data sources incrementally: Calendar, then Gmail, then dbt™ pipeline health

  3. Set up Bolt monitoring: Configure SLA alerts so you know immediately if the briefing pipeline breaks

  4. Iterate on the briefing format: Adjust the formatter based on what your team actually reads

Resources

Interested to Learn More?
Try Out the Free 14-Days Trial

Stop Managing Pipelines. Start Shipping Them.

Join the teams that replaced manual dbt™ workflows with agentic AI. Free to start, no credit card required.

Stop Managing Pipelines. Start Shipping Them.

Join the teams that replaced manual dbt™ workflows with agentic AI. Free to start, no credit card required.

Stop Managing Pipelines. Start Shipping Them.

Join the teams that replaced manual dbt™ workflows with agentic AI. Free to start, no credit card required.

Copyright © 2026 Paradime Labs, Inc. Made with ❤️ in San Francisco ・ London

*dbt® and dbt Core® are federally registered trademarks of dbt Labs, Inc. in the United States and various jurisdictions around the world. Paradime is not a partner of dbt Labs. All rights therein are reserved to dbt Labs. Paradime is not a product or service of or endorsed by dbt Labs, Inc.

Copyright © 2026 Paradime Labs, Inc. Made with ❤️ in San Francisco ・ London

*dbt® and dbt Core® are federally registered trademarks of dbt Labs, Inc. in the United States and various jurisdictions around the world. Paradime is not a partner of dbt Labs. All rights therein are reserved to dbt Labs. Paradime is not a product or service of or endorsed by dbt Labs, Inc.

Copyright © 2026 Paradime Labs, Inc. Made with ❤️ in San Francisco ・ London

*dbt® and dbt Core® are federally registered trademarks of dbt Labs, Inc. in the United States and various jurisdictions around the world. Paradime is not a partner of dbt Labs. All rights therein are reserved to dbt Labs. Paradime is not a product or service of or endorsed by dbt Labs, Inc.