How to Auto-Generate Thank You Notes with OpenClaw in Paradime

Feb 26, 2026

Table of Contents

Automate Personalized Thank-You Emails After Meetings with Paradime, OpenClaw, and Bolt

Stop letting follow-ups slip through the cracks. This guide walks you through building a fully automated pipeline that scans today's completed external meetings via Google Calendar, drafts personalized thank-you emails in Gmail, and runs it all on a daily cron schedule — no local config headaches, no manual wiring.

What Is Paradime?

Paradime is an all-in-one, AI-native platform that replaces dbt Cloud™ for analytics and data pipeline teams. It gives you a single pane of glass for dbt™ development, CI/CD, production orchestration, cost management, and collaboration — all with SOC 2 Type II compliance and a 99.9% uptime SLA baked in.

The three pillars that matter for this guide:

Pillar

What It Does

Code IDE

AI-assisted dbt™ + Python development, cutting rote work by 83%+

Bolt

UI-driven production scheduler with cron, on-merge, and on-run-completion triggers

Radar

FinOps for Snowflake/BigQuery — find budget room for your AI use cases

Bolt is the hero here. It lets you schedule dbt™ commands (and Python scripts) with a cron expression, configure environment variables through the UI, set up Slack/email notifications on failure, and debug production runs with AI-powered log analysis — all without touching a YAML file if you don't want to.

💡 Why this matters: dbt Cloud™ forces you into its own scheduling and debugging paradigm. Paradime Bolt gives you the same power with a cleaner UI, global timezone support, and environment variable overrides at the schedule level. Think of it as the scheduling layer you wish dbt Cloud™ had shipped.

What Is OpenClaw?

OpenClaw is an open-source AI agent framework (MIT license) that runs on your own hardware. Formerly known as Clawdbot/Moltbot, it surpassed 100k+ GitHub stars in early 2026 for good reason: it's the first self-hosted agent framework that feels production-ready.

OpenClaw follows a classic agent loop:

Figure 1: OpenClaw's perceive → plan → act → observe → repeat agent loop.

The architecture breaks into four layers:

  1. Core Runtime — manages the agent loop, memory, and state

  2. LLM Backbone — connects to OpenAI, Anthropic, Google, or local models via Ollama

  3. Tool Registry — plugin system where each tool exposes a schema (inputs, outputs, permissions)

  4. Memory System — short-term (conversation context) and long-term (vector store, file-based) memory

For this guide, the Tool Registry and Plugin SDK matter most. OpenClaw plugins are TypeScript modules that register tools via the openclaw/plugin-sdk/* subpaths. A plugin exports either a function or an object:

📖 Full reference: OpenClaw Plugin Docs

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

This is where most tutorials lose you. They tell you to "just grab your credentials" as if Google Cloud Console were intuitive. Let's be explicit.

Prerequisites

  • Node.js 18+ and pnpm installed

  • A Google Workspace or personal Gmail account

  • OpenClaw installed (installation guide)

  • Access to a Paradime workspace with Bolt enabled

  • Python 3.8+ with pip (for the calendar/email script)

Step 1: Enable Google APIs

Figure 2: Google Cloud Console setup flow for enabling Calendar and Gmail APIs.

  1. Go to Google Cloud Console

  2. Create a new project (e.g., OpenClaw-ThankYou)

  3. Navigate to APIs & Services → Enabled APIs & Services → + ENABLE APIS AND SERVICES

  4. Search and enable:

  5. Configure the OAuth consent screen:

  6. Create OAuth credentials:

Step 2: Install OpenClaw and the GOG Skill

If you haven't installed OpenClaw yet:

Install the Google integration skill (gogcli):

Configure the credentials:

Step 3: Authenticate Google Services

This opens a browser for OAuth consent. Grant permissions for both Gmail and Calendar access. The token is stored locally — your credentials never leave your machine.

Step 4: Set OpenClaw Environment Variables

Add:

Set permissions:

The Script: Scan Meetings, Draft Thank-You Emails

Here's the core automation. This Python script:

  1. Scans today's completed external meetings from Google Calendar

  2. Identifies attendees with external email domains

  3. Uses OpenClaw's LLM backbone to draft a personalized thank-you email per meeting

  4. Saves each as a Gmail draft for your review

Figure 3: End-to-end flow of the daily thank-you email automation.

scripts/thank_you_drafter.py

Install Python Dependencies

Test Locally

First run will open a browser for OAuth. After that, the token.json handles refresh automatically.

Environment Variables: GOOGLE_CREDENTIALS_JSON and OPENCLAW_API_KEY

Two secrets need to be configured — and the beauty of Paradime Bolt is that you do this through the UI, not by SSH-ing into a server and hand-editing .env files.

Variable

Purpose

Where to Get It

GOOGLE_CREDENTIALS_JSON

Path to (or contents of) your OAuth credentials file

Google Cloud Console → Credentials → Download JSON

OPENCLAW_API_KEY

API key for OpenClaw's LLM backbone (if using a hosted model provider)

Your LLM provider dashboard (OpenAI, Anthropic, etc.)

YOUR_DOMAIN

Your company's email domain (to filter external attendees)

Your company domain, e.g. yourcompany.com

Configuring in Paradime Bolt

Figure 4: Adding environment variables for Bolt schedules in the Paradime UI.

Steps:

  1. From any Paradime page, click Settings

  2. Navigate to Workspaces → Environment Variables

  3. In the Bolt Schedules section, click Add New

  4. Add each variable (Key + Value) and click Save (💾)

🔒 Security note: These variables are only accessible to Bolt schedules (production jobs). They're never exposed in the Code IDE or to other users. Combined with Paradime's SOC 2 Type II compliance, your Google credentials are handled with the same rigor as your warehouse secrets.

You can also override variables per schedule if you need different credentials for different pipelines:

  1. Open your schedule in Bolt UI → click Edit

  2. Scroll to Environment Variables Override

  3. Enter override values → click Deploy

Schedule-level overrides take precedence over global values. If no override is set, the global value is used.

📖 Reference: Bolt Environment Variables Docs

Bolt Schedule: Cron Daily at 6 PM

Now wire the script into Paradime Bolt with a daily 6 PM cron trigger.

Creating the Bolt Schedule

  1. Navigate to Bolt from the Paradime home screen

  2. Click + New Schedule → + Create New Schedule

  3. Fill out the configuration:

Field

Value

Type

Standard

Name

daily_thank_you_emails

Commands

python scripts/thank_you_drafter.py

Git Branch

main

Owner Email

you@yourcompany.com

Trigger Type

Scheduled Run (Cron)

Cron Schedule

0 18 * * *

Timezone

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

Slack Notify On

failed

Slack Channels

#data-team-alerts

Email Notify On

failed

  1. Click Save

The cron expression 0 18 * * * means "at minute 0 of hour 18 (6 PM), every day." Paradime lets you pick your timezone directly in the UI — no more mental UTC math.

💡 Tip: Use the cron preset dropdown in Bolt or visit crontab.guru if you want to customize the frequency. For example, 0 18 * * 1-5 runs only on weekdays.

Alternative: OpenClaw Native Cron

If you prefer to keep everything inside OpenClaw's runtime (without Bolt), you can use OpenClaw's built-in cron scheduler:

Or as a JSON tool call:

📖 Reference: OpenClaw Cron Jobs Docs

Our recommendation: Use Paradime Bolt for the scheduling layer. You get UI-driven config, environment variable management, run history with searchable logs, DAG visualization, and AI-powered debugging — none of which OpenClaw's built-in cron provides. OpenClaw's cron is fine for quick personal tasks, but for team-visible production pipelines, Bolt is the right tool.

Monitoring and Debugging

Once your schedule is live, you need visibility. Paradime Bolt gives you four layers of observability without any additional tooling.

Run History Dashboard

Navigate to Bolt → Select your schedule → Run History. You'll see every execution with:

  • Status (success/failure)

  • Duration — how long each run took

  • Trigger — cron, manual, or on-merge

  • Timestamp — when it started and completed

Analyzing Individual Runs

Click any Run ID to drill into details:

Figure 5: Layers of run analysis available in Paradime Bolt.

Tab

What You See

When to Use It

Summary

Completion status, duration, warnings, suggested fixes

First stop after a failure

Console Logs

Line-by-line command execution output

Identifying which step failed

Debug Logs

System interactions, resource allocation, thread usage

Advanced diagnostics

Integration Logs

Payload sent to connected integrations

Checking Slack/email notification delivery

Artifacts

Every run produces artifacts you can inspect:

  • run_results.json — execution outcomes for each model/command

  • manifest.json — project structure at execution time

  • Compiled SQL / Run SQL — actual queries executed (useful for dbt™ models in the same pipeline)

Notifications

Configure Slack and email alerts for failures directly in the schedule config. When a run fails:

  1. Bolt sends a Slack message to your configured channel

  2. An email notification goes to the owner

  3. The DinoAI debugger analyzes the error logs and suggests fixes

📖 Reference: Analyzing Run Details | Viewing Run Log History

Troubleshooting Common Issues

Here's what will actually break, and how to fix it.

Google API Errors

Error

Cause

Fix

Gmail API has not been used in project X

API not enabled or recently enabled

Enable Gmail API in Cloud Console, wait 5 minutes

invalid_scope

Token was created with different scopes

Delete token.json, re-run the script to re-authorize with both calendar.readonly and gmail.compose scopes

insufficient authentication scopes

Same as above

Same fix — delete token and re-auth

Request had invalid authentication credentials

Token expired and refresh failed

Delete token.json, re-authenticate

Calendar API not enabled

Self-explanatory

Enable Google Calendar API in Cloud Console

Paradime Bolt Errors

Error Code

Description

Fix

PARA-1000

Missing production warehouse connection

Add a production warehouse connection in Account Settings → Connections

PARA-1003

Could not read from remote repository on GitHub

Check githubstatus.com for incidents; re-trigger manually

PARA-1008

Couldn't connect to git repository

Verify repo exists, SSH key is valid; reset git connection in Settings

PARA-1013

Couldn't generate Lineage Diff report

Requires at least one active Bolt schedule — create one first

PARA-1015

Cache issues

Clear Paradime local storage: click 🔒 → Cookies → Delete data for api.paradime.io, app.paradime.io

📖 Full error reference: Paradime Error List

OpenClaw Issues

Symptom

Cause

Fix

GOG_KEYRING_PASSWORD not found

Env var not set or service not restarted

Add to ~/.openclaw/.env, set chmod 600, restart openclaw-gateway service

OAuth flow hangs on headless server

No browser available for OAuth redirect

Use SSH tunnel: ssh -N -L PORT:127.0.0.1:PORT root@your_server_ip, then open the auth URL locally

Cron job doesn't fire

Timezone mismatch or stagger offset

Verify --tz flag; use --exact to disable stagger; check with openclaw cron runs --id --limit 5

Plugin tool not available to agent

Registration order or naming conflict

Ensure api.registerTool() is called inside register(api), check for duplicate tool names

Draft body is empty

body parameter is None

Validate the LLM response before passing to create_gmail_draft()

Quick Diagnostic Checklist

Figure 6: Decision tree for debugging failed runs.

Wrapping Up

Here's what you've built:

Figure 7: Complete architecture of the Paradime + OpenClaw thank-you email pipeline.

What you get:

  • Zero manual follow-ups — every external meeting gets a personalized draft waiting in Gmail

  • Full audit trail — Bolt's run history shows exactly what happened and when

  • Security-first — credentials in Paradime's encrypted env vars, Google OAuth tokens stored locally, SOC 2 Type II compliant infrastructure

  • One-click debugging — when something breaks (and it will), Bolt's four-tab log viewer and DinoAI suggestions get you back to green fast

  • No local cron wrangling — Bolt's UI replaces crontab -e and all the timezone headaches that come with it

The combination of Paradime for orchestration and OpenClaw for AI-powered email generation gives you a setup that's genuinely production-grade. Paradime handles the scheduling, secrets, monitoring, and team visibility. OpenClaw handles the intelligence — understanding meeting context and generating emails that don't sound like they were written by a robot.

Next steps to extend this:

  • Swap the template-based email body for an LLM-generated one using OpenClaw's agent turn (pass meeting notes/description as context)

  • Add a Slack summary of all drafts created each day

  • Filter by meeting response status (accepted only) to skip meetings you didn't actually attend

  • Integrate with your CRM to log the follow-up automatically

📖 Start building: Paradime Docs | OpenClaw Docs | OpenClaw Cron Jobs | Bolt Scheduling Guide

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.