How to Build a Personal CRM with OpenClaw in Paradime
Feb 26, 2026
How to Build a Personal CRM with Paradime, OpenClaw, and Google Workspace APIs
Automate contact tracking, follow-up reminders, and interaction logging — all orchestrated through Paradime Bolt and OpenClaw.
Your network is your most valuable asset, but keeping track of every email thread, calendar meeting, and follow-up commitment across hundreds of contacts is a losing battle when done manually. Important relationships go stale. Warm introductions are forgotten. Follow-up windows close before you even realize they existed.
This guide shows you how to combine Paradime and OpenClaw to build a personal CRM automation that scans your recent emails and meetings, updates a contact interaction log in Google Sheets, and flags contacts that are due for follow-up — on a weekly cron schedule. The approach is incident-friendly: structured steps, decision-tree troubleshooting, and a "time to first clue" mindset that prioritizes reproducibility and minimal fixes.
What Is Paradime?
Paradime is an AI-native platform designed to replace dbt Cloud™. It provides a complete environment for coding, shipping, debugging, and scaling data pipelines for analytics and AI. Teams use Paradime to:
Code data pipelines up to 10× faster with DinoAI, an AI assistant integrated directly into the development IDE.
Ship production dbt™ pipelines using Bolt, Paradime's orchestration and CI/CD engine with cron-based scheduling, Slack/email notifications, and YAML-as-code configurations.
Debug failed runs instantly with DinoAI-powered Summary Logs that surface root causes and suggested fixes in seconds.
Monitor pipeline health, run history, and source freshness from a single dashboard.
Paradime supports paradime_schedules.yml as a configuration-as-code pattern, enabling you to version-control your pipeline schedules alongside your dbt™ project:
Why Paradime for a personal CRM? Bolt gives you a production-grade scheduler with built-in monitoring, alerting, and AI-powered debugging — infrastructure that would take weeks to build from scratch.
What Is OpenClaw?
OpenClaw is an open-source personal AI assistant that runs on your machine and connects to messaging platforms like WhatsApp, Telegram, Discord, and Slack. Unlike cloud-only assistants, OpenClaw has:
Full system access — reads/writes files, runs shell commands, executes scripts.
Browser control — browses the web, fills forms, extracts data.
Persistent memory — remembers your preferences, context, and past interactions.
Cron jobs and heartbeats — schedules recurring tasks that fire even when you're not actively chatting.
Skills and plugins — extends functionality with community-built or custom integrations (installed via
clawhub install).
OpenClaw also has a Python SDK (openclaw-sdk) that provides a programmatic interface:
Why OpenClaw for a personal CRM? It combines LLM reasoning with direct access to your Google Workspace (via the
gogskill), enabling it to scan, interpret, and act on your email, calendar, and contact data autonomously.
Architecture Overview
Before diving into setup, here's the end-to-end flow:
Figure 1: Personal CRM automation architecture — Paradime Bolt triggers the OpenClaw agent weekly, which scans Google APIs and updates your CRM spreadsheet.
Setup: openclaw-sdk + Google Contacts API + Gmail API + Google Sheets API
Prerequisites
Requirement | Version / Detail |
|---|---|
Python | 3.11+ |
Node.js | 18+ |
OpenClaw | Latest ( |
openclaw-sdk |
|
Paradime account | |
Google Cloud project | With OAuth 2.0 credentials |
Slack workspace | With incoming webhook configured |
Step 1: Create a Google Cloud Project and Enable APIs
Go to Google Cloud Console.
Create a new project (e.g.,
personal-crm-openclaw).Navigate to APIs & Services → Library and enable:
Go to APIs & Services → Credentials → Create Credentials → OAuth 2.0 Client ID.
Download the JSON credentials file.
Step 2: Install and Configure OpenClaw with the gog Skill
The gog skill is a Google Workspace CLI for Gmail, Calendar, Drive, Contacts, Sheets, and Docs.
Set a default account to avoid repeating --account in every command:
Step 3: Install the OpenClaw Python SDK
Verify your gateway connection:
Step 4: Create Your CRM Spreadsheet
Create a Google Sheet named "Personal CRM" with the following columns in a tab called Contacts:
Name | Company | First Seen | Last Contact | Interaction Count | Last Subject | Follow-Up Due | Notes | |
|---|---|---|---|---|---|---|---|---|
(data populated by automation) |
Note the spreadsheet ID from the URL: https://docs.google.com/spreadsheets/d/{SPREADSHEET_ID}/edit
Figure 2: Setup sequence — follow these steps in order to ensure all dependencies are in place before scripting.
Script: Scan, Update, and Flag
This is the core automation logic. The OpenClaw agent, triggered on a schedule, performs three tasks:
Scan recent emails and calendar events from the past 7 days.
Update the contact interaction log in Google Sheets.
Flag contacts due for follow-up and send a Slack notification.
The CRM Automation Script
Create a file called crm_sync.py:
Script Decision Flow
Figure 3: Script decision tree — the agent scans, merges, writes, and alerts based on follow-up thresholds.
Environment Variables
Configure the following environment variables for the automation to work:
Variable | Purpose | Where to Set |
|---|---|---|
| Path to your OAuth 2.0 client secret JSON file | Shell environment or |
| API key for OpenClaw gateway authentication (if using remote gateway) | Shell environment or OpenClaw config |
| Slack incoming webhook URL for follow-up notifications | Shell environment or Paradime Bolt env vars |
| Google Sheets spreadsheet ID | Shell environment |
| Number of days before a contact is flagged for follow-up (default: 14) | Shell environment |
| Default Google account for the | Shell environment |
Setting Environment Variables in Paradime Bolt
In Paradime, environment variables for Bolt schedules are managed through the UI:
Navigate to Settings → Workspaces → Environment Variables.
In the Bolt Schedules section, click Add New.
Enter the Key (e.g.,
SLACK_WEBHOOK_URL) and Value.Click the Save icon.
Security note: Sensitive values like
GOOGLE_CREDENTIALS_JSONandSLACK_WEBHOOK_URLshould be stored as Paradime environment variables (which are encrypted at rest), not committed to your repository.
For more details, see the Paradime Environment Variables documentation.
Bolt Schedule: Cron Weekly
With your script ready and environment variables configured, create a Paradime Bolt schedule to run the CRM sync weekly.
Option 1: YAML-as-Code
Add this to your paradime_schedules.yml:
Option 2: OpenClaw Native Cron
If you prefer to keep the scheduling entirely within OpenClaw:
Or using the JSON API:
Which Scheduling Approach to Choose?
Figure 4: Decision tree for choosing between Paradime Bolt and OpenClaw native scheduling.
Monitoring and Debugging
Paradime Bolt Monitoring
Once your schedule is running in Bolt, you get built-in observability:
Bolt Home Screen — View all schedules with status, last run time, next run time, and trigger type at a glance.
Run History — Click into any schedule to see a chronological list of all executions with status, trigger source, branch, commit, and duration.
Three-Tier Logs — Click a specific run to access:
Artifacts — Access
run_results.json, compiled SQL, and manifest files from each run.
Time to first clue: Summary Logs give you an AI-generated root cause hypothesis within seconds of a failure. This is your first stop — not the raw console output.
For a full guide, see Viewing Run History and Analytics and Debugging Failed Runs.
OpenClaw Monitoring
OpenClaw provides its own observability layer:
First 60 seconds triage (run in order when something breaks):
Figure 5: Debugging decision tree — start with Paradime's AI-generated Summary Logs, then drill into OpenClaw diagnostics if the issue is at the agent layer.
Troubleshooting Common Issues
Issue 1: gog Authentication Failure
Symptoms: gog gmail search returns 401 Unauthorized or Token has been expired or revoked.
Root Cause: OAuth token expired or credentials file path is wrong.
Fix:
Time to first clue: Run gog gmail search 'newer_than:1d' --max 1 — if this fails, the issue is authentication, not your script.
Issue 2: Google Sheets "Spreadsheet Not Found"
Symptoms: gog sheets get returns 404 or Spreadsheet not found.
Root Cause: Wrong spreadsheet ID, or the Google account doesn't have access.
Fix:
Double-check the spreadsheet ID from the URL.
Ensure the authenticated Google account has Editor access to the sheet.
Test:
gog sheets metadata --json
Issue 3: OpenClaw Cron Job Doesn't Fire
Symptoms: The weekly CRM sync never runs. No logs, no errors.
Root Cause: Cron disabled, gateway not running, or schedule expression incorrect.
Fix:
Log signatures to look for:
cron: scheduler disabled→ Enable cron in gateway configheartbeat skipped reason=quiet-hours→ Adjust quiet hoursunknown accountId→ Delivery target doesn't exist
Issue 4: Slack Webhook Returns 403 or 404
Symptoms: Script runs successfully but no Slack notification appears.
Root Cause: Invalid webhook URL, or the webhook has been deactivated.
Fix:
Go to your Slack workspace → Apps → Incoming Webhooks → verify the webhook is active.
Test the webhook directly:
If testing works but the script doesn't send, check that
SLACK_WEBHOOK_URLis set in the environment where the script runs.
Issue 5: OpenClaw Agent Returns Malformed JSON
Symptoms: json.loads(result.content) throws JSONDecodeError.
Root Cause: The LLM wrapped the JSON in markdown code fences or added commentary.
Fix: Add explicit formatting instructions to your prompt:
Alternatively, use the OpenClaw SDK's structured output feature:
Issue 6: Paradime Bolt Schedule Fails with "Command Not Found"
Symptoms: Bolt run fails immediately with python: command not found or gog: command not found.
Root Cause: The Bolt runtime environment doesn't have your local tools installed.
Fix:
Ensure your dbt™ project includes a
requirements.txtorpackages.ymlwith all Python dependencies.For the
gogCLI, the script must run in an environment where OpenClaw and its skills are installed. Consider using the OpenClaw native cron instead of Bolt for this specific use case, or package the script as a dbt™ Python model.
Quick Troubleshooting Decision Tree
Figure 6: Rapid troubleshooting decision tree — route to the right fix in under 60 seconds.
Wrapping Up
You now have a fully automated personal CRM pipeline that:
Scans your Gmail and Google Calendar for recent interactions every week.
Updates a structured contact log in Google Sheets with interaction counts, timestamps, and context.
Flags contacts that haven't been touched in over 14 days and sends you a Slack reminder.
Runs on a schedule via Paradime Bolt (with AI-powered debugging) or OpenClaw's native cron.
Is debuggable from the first second — Summary Logs in Paradime and
openclaw doctorgive you instant root cause analysis.
What to Do Next
Tune the follow-up threshold: Adjust
FOLLOWUP_THRESHOLD_DAYSbased on your relationship cadence — 7 days for active deals, 30 days for dormant network contacts.Add meeting prep briefings: Use OpenClaw's daily cron to scan your calendar each morning and deliver a briefing on today's meeting attendees based on your CRM data.
Enrich with LinkedIn data: Add a browser skill to OpenClaw that pulls recent activity from LinkedIn profiles for each contact.
Build a dbt™ model layer: If your CRM data grows, model it in dbt™ within Paradime to create analytics on interaction frequency, relationship health scores, and network growth.
The combination of Paradime's production-grade orchestration and OpenClaw's autonomous agent capabilities gives you a personal CRM that doesn't just store data — it actively manages your professional relationships while you focus on the conversations that matter.
For more on Paradime Bolt scheduling, see the Creating Schedules documentation. For OpenClaw cron configuration, refer to the Cron Jobs documentation. For the gog Google Workspace skill, visit ClawHub.

