How to Send Meeting Prep Briefs with OpenClaw in Paradime

Feb 26, 2026

Table of Contents

How to Automate Meeting Prep with Paradime, OpenClaw, and a Daily Briefing Pipeline

Stop walking into meetings cold. If you've ever scrambled to remember who an attendee is, what you last discussed over email, or what the agenda even covers—this guide is for you. We're going to wire up Paradime, OpenClaw, the Google Calendar API, and the Gmail API into a single automated pipeline that delivers a per-meeting prep brief to your Slack every morning at 7:30 AM. No manual work. No context-switching. Just show up prepared.

This isn't a theoretical walkthrough. By the end, you'll have a working system: a cron-scheduled OpenClaw skill that fetches today's calendar events, pulls attendee context and past email threads, generates a concise briefing document, and posts it to Slack before your first coffee.

What Is Paradime?

Paradime is an AI-native data engineering platform—often described as "Cursor for Data"—that replaces dbt Cloud™ for teams that want to move faster without sacrificing reliability. It bundles three core products into one cohesive workspace:

  • Code IDE — An AI-native IDE for dbt™ and Python development. Includes DinoAI for inline AI-assisted code generation, data lineage visualization, and live data previews. Teams report cutting dbt™ development time by up to 83%.

  • Bolt — A production-grade scheduler for dbt™ pipelines with built-in CI/CD, cron scheduling, and AI-powered debugging. This is the piece we'll lean on for orchestration.

  • Radar — FinOps tooling to monitor and cut Snowflake and BigQuery costs.

Paradime is SOC 2 Type II certified, GDPR and CCPA compliant, and backs everything with a 99.9% uptime SLA. For this project, we care most about Bolt: its UI-driven schedule creation, YAML-as-code configuration, environment variable management, and notification integrations make it the cleanest way to orchestrate our meeting-prep pipeline.

Why Paradime for this? You could wire up a cron job on a VPS, sure. But Paradime Bolt gives you a UI to monitor runs, AI-powered debugging when things break, Slack notifications on failure, and environment variable scoping—all without managing infrastructure. That's the kind of operational leverage worth having.

What Is OpenClaw?

OpenClaw is an open-source, locally-running AI agent gateway. Think of it as a middleware layer that connects your messaging platforms (Slack, Telegram, Discord) to AI models (Claude, GPT, Gemini) and extends their capabilities through skills—modular plugins that let agents interact with external services.

Key characteristics:

  • Local-first architecture — Runs on your machine or server. Your data, credentials, and conversation history stay under your control.

  • Skill ecosystem — Community-built skills for Google Calendar, Gmail, GitHub, CRMs, and more. Install them with a single command.

  • Cron scheduling — Built-in job scheduler for recurring agent tasks.

  • Multi-model support — Swap between Claude, GPT, local LLMs (via Ollama), or any OpenAI-compatible API.

For our pipeline, we'll use the OpenClaw Python SDK to orchestrate the meeting-prep logic, and leverage the meeting-prep and gogcli skills for calendar and email integration.

Setup: openclaw-sdk + Google Calendar API + Gmail API

Before writing the prep script, we need three integrations wired up: the OpenClaw SDK, Google Calendar API access, and Gmail API access. Here's the exact sequence:

Figure 1: Setup flow from SDK installation through integration testing.

Step 1: Install the OpenClaw SDK

The OpenClaw Python SDK requires Python 3.9+:

Verify the installation:

Step 2: Set Up Google Cloud OAuth Credentials

  1. Go to the Google Cloud Console and create a new project (e.g., openclaw-meeting-prep).

  2. Navigate to APIs & Services → Library and enable both:

  3. Go to APIs & Services → OAuth consent screen. Select External, fill in the app name (e.g., OpenClaw Meeting Prep), and add your email as support and developer contact.

  4. Add the required OAuth scopes:

  5. Go to APIs & Services → Credentials → Create Credentials → OAuth client ID. Choose Desktop app. Download the JSON credentials file.

Step 3: Authorize and Store Tokens

Move your credentials file to the OpenClaw config directory:

If you're using the gogcli skill, authorize directly:

This opens a browser for OAuth consent. Tokens are stored locally at ~/.config/gog/token.json—never sent to OpenClaw or any AI model.

Verify access:

Step 4: Install the Meeting-Prep Skill

This installs the skill to ~/.openclaw/skills/meeting-prep/ and creates the config scaffold at ~/.config/meeting-prep/config.json.

Script: Fetch Today's Meetings, Pull Attendee Info and Past Email Threads, Generate Prep Brief

Here's the core automation. The script runs daily, fetches your calendar, enriches each meeting with attendee and email context, and posts a formatted brief to Slack.

Figure 2: The daily meeting-prep pipeline from cron trigger to Slack delivery.

The Prep Script

Create scripts/daily-meeting-prep.py in your project:

What the Script Does

Step

Action

API Used

1

Fetch all of today's calendar events

Google Calendar API

2

Extract attendee emails from each event

3

Search Gmail for recent threads with each attendee

Gmail API

4

Pass meeting + email context to Claude

OpenClaw SDK

5

Format and post the brief to Slack

Slack Incoming Webhook

Environment Variables: GOOGLE_CREDENTIALS_JSON, OPENCLAW_API_KEY, SLACK_WEBHOOK_URL

This pipeline requires three environment variables. Never hardcode these in your script or commit them to Git. Here's what each one is and where to get it:

Variable

What It Is

Where to Get It

GOOGLE_CREDENTIALS_JSON

JSON string containing your Google OAuth tokens (access token, refresh token, client ID, client secret)

Generated during OAuth flow; stored at ~/.config/gog/token.json

OPENCLAW_API_KEY

API key for authenticating with the OpenClaw SDK

From your OpenClaw dashboard or config at ~/.openclaw/openclaw.json

SLACK_WEBHOOK_URL

Incoming Webhook URL for your Slack channel

Slack App Settings → Incoming Webhooks

Local Setup

For local development, use a .env file:

OpenClaw supports environment variable resolution from multiple sources with clear precedence:

  1. Process environment (parent shell/daemon) — highest priority

  2. .env in working directory — does not override existing vars

  3. Global .env at ~/.openclaw/.env — does not override

  4. Config env block in ~/.openclaw/openclaw.json — applied only if missing

You can also reference env vars inside openclaw.json using ${VAR_NAME} syntax:

Paradime Bolt Setup

In Paradime, environment variables are managed through the Environment Variables settings page. Admin access is required:

  1. Navigate to Settings → Environment Variables in Paradime.

  2. Add GOOGLE_CREDENTIALS_JSON, OPENCLAW_API_KEY, and SLACK_WEBHOOK_URL as workspace-level variables.

  3. For schedule-specific overrides (e.g., different Slack channels per schedule), use the Environment Variables Override section in the Bolt schedule editor.

Security note: Paradime validates that variables exist globally before allowing overrides. Schedule-level overrides take precedence over workspace-level values, keeping your multi-tenant deployments clean.

Bolt Schedule: Cron Daily at 7:30 AM

Now let's schedule the pipeline to run automatically every morning. Paradime Bolt supports four trigger types: Scheduled Run (cron), On Run Completion, On Merge, and Bolt API. We want a daily cron trigger.

Option A: UI-Based Setup

  1. Navigate to Bolt from the Paradime home screen.

  2. Click + New Schedule → + Create New Schedule.

  3. Fill in the fields:

Field

Value

Name

daily_meeting_prep

Type

Standard

Commands

python scripts/daily-meeting-prep.py

Git Branch

main

Owner Email

your-email@company.com

Trigger Type

Scheduled Run

Cron Schedule

30 7 * * *

Timezone

Your local timezone (e.g., America/New_York)

  1. Click Save to deploy.

Option B: YAML-as-Code

Create paradime_schedules.yml in the root of your dbt™ project (alongside dbt_project.yml):

Why 7:30 AM? Early enough to land in your Slack before standup or your first meeting. Late enough that your calendar is likely finalized for the day. Adjust the timezone in Bolt's UI if you need local-time execution instead of UTC.

Figure 3: Bolt schedule execution flow for the daily meeting-prep pipeline.

Setting Up Notifications

Don't let failures go unnoticed. In Paradime Bolt:

  1. Navigate to Bolt → Your Schedule → Notifications.

  2. Enable Slack notifications for the #data-alerts channel.

  3. Enable Email notifications to the schedule owner.

  4. Configure triggers for: On Failure, On Success (optional), or both.

Paradime's notification setup guide covers this in detail.

Monitoring and Debugging

Once the pipeline is running, you need visibility. Paradime and OpenClaw each provide their own monitoring layer.

Paradime Bolt Monitoring

Bolt provides three levels of logging for every run:

Log Type

What It Shows

When to Use

Summary Logs

DinoAI-generated overview of what passed/failed

Quick triage—30-second health check

Console Logs

Full execution output (errors, warnings, compiled SQL)

Primary debugging—most useful for root cause

Debug Logs

System-level operations and internal state

Deep technical issues (auth failures, env var problems)

To access logs:

  1. Go to Bolt → Select Schedule → Run History.

  2. Click a specific run.

  3. Navigate to Logs and Artifacts → Click the failed command.

  4. Use the "jump to" feature to skip directly to errors in Console Logs.

Pro tip: Bolt's DinoAI integration generates a Summary Log with AI-suggested fixes for common failures. If your script fails because of an expired Google OAuth token, DinoAI will typically surface this in plain English before you even open the console logs.

OpenClaw Monitoring

On the OpenClaw side, monitor your agent's execution:

OpenClaw stores prep run history at ~/.config/meeting-prep/prep-log.json and deduplication state at ~/.config/meeting-prep/brief-history.json. These are plain JSON files you can inspect directly:

Figure 4: Monitoring surfaces across Paradime Bolt and OpenClaw.

Troubleshooting Common Issues

After helping teams set up this pipeline, these are the issues that come up most frequently:

1. Google OAuth Token Expired (401 Error)

Symptom: Script fails with 401 Unauthorized when calling Calendar or Gmail API.

Fix: OAuth access tokens expire after ~1 hour. Your script needs to use the refresh token to obtain a new access token:

Better yet, store the refresh token in GOOGLE_CREDENTIALS_JSON and add token-refresh logic to your script's initialization. The gogcli tool handles this automatically if you're using it.

2. OpenClaw Cron Job Not Firing

Symptom: The pipeline never runs at 7:30 AM.

Causes and fixes:

Cause

Fix

Gateway not running

openclaw status to check; restart with openclaw start

Model not in allowlist

openclaw config get agents.defaults.models — add your model

Stale PID lock file

rm ~/.openclaw/gateway.pid then restart

Heartbeat misconfigured

Use wakeMode: now instead of next-heartbeat for time-critical jobs

3. Slack Webhook Returns 403 or 404

Symptom: Briefs generate successfully but never appear in Slack.

Fix: Verify your webhook URL is active:

If you get a 403, your Slack app's webhook was revoked. Regenerate it in Slack App Settings → Incoming Webhooks.

4. Gmail API Rate Limiting (429 Error)

Symptom: Script works for the first few meetings but fails with 429 Too Many Requests.

Fix: Gmail API has strict quotas—especially for free accounts (500 emails/day). Reduce maxResults in your search queries, add exponential backoff, and batch attendee lookups:

5. Missing Environment Variables in Bolt

Symptom: Script fails with KeyError: 'GOOGLE_CREDENTIALS_JSON'.

Fix: Environment variables must be created at the workspace level in Paradime before they can be used or overridden in Bolt schedules. Go to Settings → Environment Variables and add them. Only admins can modify these values.

6. OpenClaw Gateway Port Conflict

Symptom: Gateway won't start—port 9090 already in use.

Fix:

7. Duplicate Briefs Being Posted

Symptom: Same meeting brief posted multiple times to Slack.

Fix: The meeting-prep skill tracks processed meetings in ~/.config/meeting-prep/brief-history.json. If this file gets corrupted or deleted, deduplication breaks. Back it up and ensure the cron job has write access to the config directory.

Wrapping Up

Here's what you've built:

Figure 5: The complete meeting-prep pipeline architecture.

What you've eliminated:

  • ❌ Morning scramble to figure out who's in your meetings

  • ❌ Digging through email to remember past conversations

  • ❌ Walking into calls without context on attendees

  • ❌ Manual context-gathering that eats 30+ minutes daily

What you've gained:

  • ✅ A per-meeting prep brief in Slack before your first meeting

  • ✅ Attendee context (role, background, recent communication) auto-surfaced

  • ✅ Past email thread summaries for every external participant

  • ✅ AI-generated talking points and icebreakers

  • ✅ Full monitoring and alerting through Paradime Bolt

The pipeline is intentionally opinionated about removing local config pain. Your credentials stay in environment variables—never in code, never in Git. The Google OAuth tokens live on your filesystem and are never sent to AI models. Bolt handles scheduling with a UI, not a fragile crontab on a dev machine.

Extend it further:

  • Add LinkedIn profile lookups for first-time attendees using the meeting-prep skill's --depth deep research mode.

  • Pipe briefs to a Notion database instead of (or in addition to) Slack.

  • Add an #noprep tag to calendar events you want to skip.

  • Set up a second Bolt schedule at 6:00 PM to generate next-day prep for early-morning meetings.

The best meetings are the ones you walk into already knowing what matters. Now your AI handles the prep—you just handle the conversation.

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.