How to Generate Meeting Follow-Up Action Items with OpenClaw in Paradime
Feb 26, 2026
How to Automate Post-Meeting Action Item Tracking with Paradime, OpenClaw, and Google Workspace APIs
Meetings generate decisions. Decisions spawn action items. And action items? They vanish into the ether unless someone manually combs through follow-up emails, extracts tasks, assigns owners, and tracks deadlines. For data teams already juggling pipeline orchestration and model governance, this manual overhead compounds fast.
This guide walks you through a repeatable, automated workflow that uses Paradime's Bolt scheduler and OpenClaw's AI agent framework — together with the Gmail API, Google Calendar API, and Google Sheets API — to scan post-meeting emails, extract action items (owner, deadline, task), and append them to a centralized tracker. No vague "optimize your meetings" advice — just a concrete measure → identify → fix → validate pipeline you can deploy today.
What Is Paradime?
Paradime is an AI-native platform for agentic data engineering — often described as "Cursor for Data." It replaces dbt Cloud™ with a faster, more flexible alternative for teams that build, ship, and monitor dbt™ pipelines.
Key capabilities relevant to this guide:
Feature | What It Does |
|---|---|
Bolt Scheduling | Cron-based and event-driven job orchestration for dbt™ commands, with YAML-as-code configuration |
Radar Monitoring | Real-time alerts, cost optimization, and pipeline health dashboards |
Code IDE | AI-powered dbt™ development with Copilot, SQLFluff, and cross-platform lineage |
Environment Variables | Securely inject secrets (API keys, credentials) into Bolt schedules at the workspace or per-schedule level |
Paradime supports dbt Core™ natively and offers one-click migration from dbt Cloud™. For this workflow, we use Bolt as the orchestration backbone — scheduling when and how our action-item extraction pipeline runs.
What Is OpenClaw?
OpenClaw is an open-source autonomous AI agent framework that runs locally on your hardware. It connects to LLMs (Claude, GPT, Gemini, and others) via API and uses Skills — plugin-like extensions — to interact with external services like Gmail, Google Calendar, and Google Sheets.
Key traits:
Local-first: All data stays on your machine in a SQLite database
Multi-channel: Connects to Slack, Telegram, WhatsApp, and 12+ messaging platforms
Skills-based architecture: Extend the agent with markdown or Python-based Skills for email reading, calendar management, spreadsheet writing, and more
Cron & Heartbeat scheduling: Built-in scheduler for recurring tasks with timezone support
Memory-persistent: Maintains session context across interactions
OpenClaw isn't an LLM itself — it's an orchestration layer that gives LLMs the ability to act: read your inbox, parse meeting notes, write to a spreadsheet, and send you a summary.
Architecture Overview
Before diving into setup, here's the full end-to-end flow:
Figure 1: End-to-end flow — Bolt triggers OpenClaw, which scans Gmail, cross-references Calendar, extracts action items via LLM, and writes to Google Sheets.
Setup: openclaw-sdk + Gmail API + Google Calendar API + Google Sheets API
Prerequisites
Node.js ≥ 22 (for OpenClaw Gateway)
Python 3.10+ (for skill scripts and Google API interaction)
A Google Cloud project with Gmail, Calendar, and Sheets APIs enabled
A Paradime workspace with Bolt scheduling access
An LLM API key (OpenAI, Anthropic, or another supported provider)
Step 1: Install OpenClaw
The onboarding wizard walks you through selecting your LLM provider (e.g., Anthropic Claude) and messaging channel (e.g., Telegram, Slack). The Gateway binds to localhost:18789 by default.
Step 2: Install Python Dependencies
Step 3: Create a Google Cloud Project and Enable APIs
Go to Google Cloud Console
Create a new project (e.g.,
openclaw-meeting-tracker)Navigate to APIs & Services → Library and enable:
Step 4: Configure OAuth Credentials
Go to APIs & Services → OAuth Consent Screen → Get Started
Set app name (e.g.,
OpenClaw Meeting Tracker), select External audienceAdd your Gmail address as a Test User
Navigate to Credentials → Create Credentials → OAuth Client ID
Select Desktop Application, download the JSON file
Move the credentials file:
Step 5: Authenticate Google Services
Create an authentication script (auth_google.py):
Run it once:
This opens a browser window for you to authorize the app. The resulting token is stored locally.
Step 6: Install OpenClaw Google Workspace Skills
Or install the gogcli tool for unified Google Workspace access:
Script: Scan Post-Meeting Emails, Extract Action Items, Append to Tracker
This is the core automation skill. Place it as a markdown skill in ~/.openclaw/skills/meeting-action-items.md, or implement it as a standalone Python script that OpenClaw's cron triggers.
The Python Script (scan_action_items.py)
The Measure → Identify → Fix → Validate Workflow
Figure 2: The repeatable workflow cycle — each run measures the current state, identifies relevant emails, extracts structured action items, and validates the output in the tracker.
Environment Variables
The script relies on environment variables for all secrets and configuration. Never hardcode credentials.
Variable | Description | Example |
|---|---|---|
| Path to the pickled Google OAuth token |
|
| API key for the OpenClaw AI text generation endpoint |
|
| The Google Sheets spreadsheet ID from the URL |
|
| The tab/sheet name within the spreadsheet |
|
| Passphrase for gogcli keyring (if using gog) |
|
Setting Environment Variables in OpenClaw
Create or edit ~/.openclaw/.env:
Secure the file:
Setting Environment Variables in Paradime Bolt
In your Paradime workspace:
Navigate to Settings → Workspaces → Environment Variables
In the Bolt Schedules section, click Add New
Add each variable (
GOOGLE_CREDENTIALS_JSON,OPENCLAW_API_KEY, etc.)Click Save
For bulk upload, prepare a CSV:
Upload via Settings → Environment Variables → Bulk Upload.
Bolt Schedule: Cron Daily 6 PM
Now wire up Paradime Bolt to trigger this scan every day at 6 PM. You have two approaches: OpenClaw's built-in cron for the agent-level trigger, and Paradime Bolt for the dbt™ pipeline orchestration layer.
Option A: OpenClaw Cron (Agent-Level Scheduling)
Use the OpenClaw CLI to schedule the scan directly:
This creates a recurring cron job at 6:00 PM ET daily in an isolated session (fresh context each run).
To verify:
Option B: Paradime Bolt (Pipeline Orchestration)
If you want this integrated with your dbt™ pipeline runs — for example, scanning action items after your daily dbt™ build completes — define it in your paradime_schedules.yml:
Option C: Chained Execution (Bolt + OpenClaw)
For the most robust setup, chain Paradime Bolt's pipeline completion to trigger OpenClaw:
Figure 3: Chained execution — Bolt runs the dbt™ pipeline at 5 PM, and on successful completion, triggers the OpenClaw action-item scan.
In paradime_schedules.yml, define the chain using the On Run Completion trigger:
Monitoring and Debugging
Paradime Radar for Pipeline Health
Paradime's Radar feature gives you real-time monitoring of your Bolt schedules:
dbt™ Monitoring: View run history, model execution times, and test results via the Radar dashboard
Data Alerts: Configure Slack/email notifications when runs fail or breach SLA thresholds
Cost Optimization: If your extraction pipeline queries your warehouse, Radar's AI-powered cost analysis identifies expensive queries
OpenClaw Logs and Debugging
OpenClaw provides several debugging interfaces:
The Google Sheets Tracker as a Validation Layer
Your tracker spreadsheet itself serves as the validation checkpoint. Set up the sheet with these columns:
Column | Purpose |
|---|---|
A: Timestamp | When the item was extracted |
B: Task | Action item description |
C: Owner | Person responsible |
D: Deadline | Due date (ISO 8601 or "TBD") |
E: Priority | high / medium / low |
F: Source Email Subject | Traceability back to origin |
G: Meeting Context | Which meeting spawned this item |
H: Status | pending / in-progress / done |
After each run, validate:
Row count: Did the expected number of items get appended?
Schema consistency: Are all columns populated correctly?
Deduplication: Use a content hash (subject + task + owner) to prevent duplicate entries across runs
Add a dedupe check to the script:
Troubleshooting Common Issues
1. OAuth Token Expiry
Symptom: google.auth.exceptions.RefreshError: ('invalid_grant: Token has been expired or revoked')
Fix: Re-run the authentication script:
For long-running production setups, implement token auto-refresh:
2. Gmail API Rate Limits
Symptom: HttpError 429: Rate Limit Exceeded
Fix: Add exponential backoff:
3. OpenClaw Gateway Not Running
Symptom: Cron jobs don't fire, openclaw cron list hangs
Fix:
4. Empty Action Items Extracted
Symptom: LLM returns [] even when emails clearly contain tasks
Fix: Check these common causes:
Email body truncation: Increase the
body[:3000]limit inextract_email_contentPrompt specificity: Add examples to
EXTRACTION_PROMPTshowing what action items look likeTemperature too low: Try
temperature=0.2instead of0.1for slightly more flexibilityWrong model: Ensure you're using a model capable of structured extraction (e.g.,
claude-sonnet-4-6,gpt-4o)
5. Google Sheets Permission Error
Symptom: HttpError 403: The caller does not have permission
Fix: Ensure the spreadsheet is shared with the OAuth user or service account email. If using a service account, share the spreadsheet with the service account email address (e.g., meeting-tracker@your-project.iam.gserviceaccount.com).
6. Bolt Schedule Not Triggering
Symptom: YAML schedule exists but no runs appear in Bolt UI
Fix:
Figure 4: Bolt schedule troubleshooting decision tree.
Remember: Paradime checks paradime_schedules.yml for changes every 10 minutes. Use Manual Refresh in the Bolt UI to force an immediate parse.
Wrapping Up
The workflow you've built follows a concrete, repeatable pattern:
Measure: Bolt triggers on schedule → OpenClaw connects to Gmail and Calendar APIs to gather raw data
Identify: Cross-reference meeting attendees with post-meeting emails to find action-item-bearing messages
Fix: LLM parses each email and returns structured action items with owner, deadline, and task
Validate: Append to Google Sheets with deduplication, confirm row counts, and alert on failures
This isn't a one-time hack. Every day at 6 PM, the pipeline runs, catches the action items your team generated, and surfaces them in a tracker before anyone has to ask "wait, what did we agree on?"
What to Do Next
Add Slack notifications: Extend the script to post a daily summary of extracted action items to your team's Slack channel
Build a dbt™ model on top: If you're writing to a warehouse alongside Sheets, create a dbt™ model that tracks action item completion rates over time
Tune the extraction prompt: Add company-specific examples to the LLM prompt so it recognizes your team's patterns (e.g., "I'll handle X by Friday" → owner + deadline)
Scale to multiple calendars: Modify
get_recent_meetingsto scan shared team calendars, not justprimary
The combination of Paradime's battle-tested scheduling with OpenClaw's flexible AI agent framework gives you a production-grade automation layer — one that fits into your existing dbt™ pipeline workflow rather than sitting alongside it.
Ready to get started? Set up your Paradime workspace and install OpenClaw to start automating action item tracking today.

