How to Generate Sales Follow-Up Emails with OpenClaw in Paradime
Automate sales follow-ups with OpenClaw in Paradime. AI checks CRM for stale deals, drafts personalized follow-up emails, and saves them as Gmail drafts.
Mar 18, 2026
How to Automate Sales Follow-Ups with Paradime, OpenClaw, and Gmail — A Complete Workflow Guide
Every sales team has been there. A promising deal goes quiet. Nobody remembers who was supposed to follow up. The CRM says the last activity was two weeks ago — or worse, the CRM says nothing at all because nobody updated it.
Stale documentation, missing context, and tribal knowledge aren't just annoying. They're revenue killers. When your follow-up process lives in someone's head instead of in a system, deals slip through the cracks. Reps waste time reconstructing context that should have been captured automatically. And managers can't coach what they can't see.
The cost of these gaps is staggering. According to industry benchmarks, 44% of salespeople give up after a single follow-up, even though 80% of deals require five or more touches to close. The problem isn't laziness — it's friction. Manually checking which deals are stale, pulling up context, and drafting personalized follow-ups takes real time. So it doesn't happen.
This guide shows you how to eliminate that friction entirely. You'll build an automated workflow using Paradime, OpenClaw, and the Gmail API that:
- Pulls deals with no activity in the last 7 days from your CRM (or Google Sheets)
- Drafts personalized follow-up emails for each stale deal
- Saves those drafts directly into Gmail for human review
- Runs on a cron schedule every Tuesday and Thursday at 9 AM
No more tribal knowledge. No more missed follow-ups. Near-100% coverage, every week.
What Is Paradime?
Paradime is an AI-native platform for agentic data engineering — often described as "Cursor for Data." It replaces dbt Cloud™ and provides a unified environment for coding, shipping, and scaling data pipelines for analytics and AI.
The key component we'll use in this workflow is Bolt, Paradime's built-in orchestration and scheduling engine. Bolt lets you:
- Schedule dbt™ and Python jobs using cron expressions
- Run custom Python scripts as part of your data pipeline
- Manage environment variables and secrets securely
- Monitor job execution with built-in alerting and notifications
Bolt supports Schedules as Code — you define your schedules in a paradime_schedules.yml file, commit it alongside your dbt™ project, and Paradime handles the rest.
What Is OpenClaw?
OpenClaw is an open-source AI agent that runs locally on your hardware and orchestrates tasks across chat apps, files, the web, and your operating system. It connects to large language models like Claude or GPT via API and uses skills to take action on your behalf.
For sales follow-ups, OpenClaw is particularly powerful because it can:
- Analyze deal context and engagement history
- Draft personalized emails that sound human, not templated
- Interact with CRM APIs and Gmail programmatically via the
openclaw-sdk - Run on recurring cron schedules for fully automated workflows
The openclaw-sdk is the Python SDK that gives you a programmatic interface to create agents, run tasks, and manage workflows:
Architecture Overview
Before diving into the setup, here's how the pieces fit together:
Figure 1: End-to-end architecture — Paradime Bolt triggers a Python script that queries your CRM, uses OpenClaw to draft personalized emails, and saves them as Gmail drafts for human review.
Setup: openclaw-sdk + CRM API (or Google Sheets as CRM) + Gmail API
Step 1: Install Dependencies
Create a pyproject.toml or requirements.txt in your dbt™ project directory:
If you're using Poetry (recommended for Paradime Bolt):
Step 2: Configure Your CRM Data Source
You have two options depending on your stack:
Option A: CRM API (HubSpot, Salesforce, Pipedrive, etc.)
Most CRMs expose REST APIs to query deals and activities. For example, with HubSpot:
Option B: Google Sheets as CRM (Lightweight Alternative)
For smaller teams or those who track deals in spreadsheets:
Step 3: Set Up Gmail API for Draft Creation
You'll use a Google Cloud service account (or OAuth credentials) to create drafts in Gmail:
The Script: Pull Stale Deals, Draft Follow-Ups, Save as Gmail Drafts
Here's the full sales_followup.py script that ties everything together:
How the Script Works — Step by Step
Figure 2: Sequence diagram showing how the script orchestrates CRM queries, OpenClaw AI drafting, and Gmail draft creation for each stale deal.
Environment Variables: CRM_API_KEY, GOOGLE_CREDENTIALS_JSON, OPENCLAW_API_KEY
Your script relies on three critical environment variables. Here's how to configure them securely in Paradime Bolt.
Required Variables
Variable | Description | Where to Get It |
|---|---|---|
| API token for your CRM (HubSpot, Salesforce, etc.) | CRM Settings → Integrations → Private Apps |
| Google OAuth credentials JSON (stringified) | Google Cloud Console → APIs & Services → Credentials |
| API key for OpenClaw SDK authentication | OpenClaw dashboard or |
Optional Variables
Variable | Default | Description |
|---|---|---|
|
| Set to |
|
| Number of days of inactivity before a deal is flagged |
Configuring in Paradime Bolt
- Navigate to Settings in the Paradime application
- Go to Workspaces → Environment Variables
- In the Bolt Schedules section, click Add New
- Add each variable with its key and value
- Click the Save icon
Figure 3: Steps to configure environment variables in Paradime Bolt's secure settings interface.
For bulk upload, you can also use a CSV file with Key and Value columns:
Security note: Environment variables configured in Bolt are only available during schedule execution — they're not exposed in the Code IDE or version control. For the GOOGLE_CREDENTIALS_JSON, store the entire JSON string as the value. Refer to Paradime's environment variable docs for details.Your Python script accesses these at runtime:
Bolt Schedule: Cron Every Tuesday/Thursday at 9 AM
Now let's schedule the script to run automatically. Create (or update) the paradime_schedules.yml file in your dbt™ project root:
Schedule Configuration
Understanding the Cron Expression
The expression 0 9 * * 2,4 breaks down as:
Field | Value | Meaning |
|---|---|---|
Minute |
| At minute 0 |
Hour |
| At 9 AM |
Day of Month |
| Every day |
Month |
| Every month |
Day of Week |
| Tuesday and Thursday |
Tip: Validate your cron expressions at crontab.guru before committing.
Deployment
Once you commit paradime_schedules.yml to your default branch (main or master), Paradime automatically detects and registers the schedule. The system checks for changes every 10 minutes, or you can manually refresh via Bolt → Parse Schedules in the UI.
Bolt supports four trigger types:
- Scheduled Run — Time-based cron triggers (what we're using)
- On Run Completion — Dependency-based triggers (chain jobs)
- On Merge — Git merge triggers (CI/CD pipelines)
- Bolt API — Programmatic REST API triggers
Monitoring and Debugging
Once the schedule is live, you'll want visibility into every run. Here's how to monitor at each layer of the stack.
Paradime Bolt Monitoring
Bolt provides built-in run history, status tracking, and SLA monitoring. After each execution:
- Run status: Check whether the job passed, failed, or breached SLA
- Run logs: View full stdout/stderr output from your Python script
- Notifications: Slack and email alerts fire automatically on failure or SLA breach
The sla_minutes: 15 setting in the YAML means you'll be alerted if the job takes longer than 15 minutes — a good indicator that something is stuck (rate limits, network issues, etc.).
Script-Level Logging
The script includes structured logging that outputs to Bolt's log viewer:
OpenClaw Agent Monitoring
For deeper debugging of the AI drafting step, you can inspect OpenClaw execution details:
You can also use OpenClaw's built-in diagnostic tools:
Before vs. After: The Transformation
Figure 4: The manual follow-up process is error-prone and inconsistent. The automated workflow delivers near-100% coverage with personalized drafts ready for human review.
Troubleshooting Common Issues
1. OpenClaw Gateway Won't Start
Symptoms: openclaw status shows the gateway is not running.
Common causes and fixes:
Error Log | Cause | Fix |
|---|---|---|
| Gateway mode not configured | Run |
| Port 18789 already in use | Kill the existing process or change port |
| Auth not configured | Complete onboarding: |
2. Gmail Drafts Not Appearing
Symptoms: Script reports success, but no drafts appear in Gmail.
Checklist:
- Wrong account: Verify the OAuth credentials correspond to the correct Gmail account
- Missing scopes: Ensure your Google Cloud OAuth consent screen includes
gmail.composeandgmail.modifyscopes - Stale tokens: Refresh OAuth tokens if they've expired
If using OpenClaw's gogcli for Gmail integration, verify:
3. CRM API Returns Empty Results
Symptoms: Script finds 0 stale deals even though you know there are some.
Possible causes:
- API key permissions: Ensure your CRM API key has
readaccess to deals and activities - Date format mismatch: Different CRMs use different date formats — check your parsing logic
- Pagination: If you have more than 100 deals, you may need to paginate
4. OpenClaw Agent Returns Poor-Quality Drafts
Symptoms: Emails sound generic, repetitive, or off-tone.
Fixes:
- Add more context: Include deal notes, previous email threads, and company info in the prompt
- Switch models: Try
claude-sonnet-4-20250514for better instruction-following - Temperature tuning: Lower temperature for more consistent output
5. Bolt Schedule Not Firing
Symptoms: The schedule exists but never runs.
Checklist:
- Verify
paradime_schedules.ymlis on your default branch (mainormaster) - Check cron expression syntax — use
0-6for days (Sunday through Saturday), not1-7 - Ensure timezone is a valid IANA timezone string (e.g.,
America/New_York, notEST) - Manually trigger via Bolt → Parse Schedules to force a refresh
6. Cron Job Delivery Failures in OpenClaw
If you're also running OpenClaw cron jobs alongside Bolt:
Common issues include:
- Cron disabled: Check that
cron.enabled: truein your OpenClaw config - Quiet hours: Heartbeat may be skipped if outside active hours
- Delivery target doesn't exist: Verify channel configuration for announcements
Wrapping Up
Let's recap what you've built:
Figure 5: The complete solution — from problem identification to near-100% follow-up coverage with human-in-the-loop quality control.
What You've Achieved
- Eliminated tribal knowledge dependency — The system doesn't rely on anyone remembering to check for stale deals
- Automated context gathering — Deal information flows directly from your CRM into the email drafts
- Personalized at scale — OpenClaw generates unique, context-aware follow-ups for every deal, not generic templates
- Human-in-the-loop safety — Emails are saved as drafts, never sent automatically. Your reps review, tweak, and send
- Reliable scheduling — Paradime Bolt runs the workflow every Tuesday and Thursday at 9 AM without fail
- Full observability — Logs, SLA monitoring, and Slack alerts keep you informed of every run
Where to Go Next
- Add more CRM context: Pull associated contacts, email threads, and meeting notes into the OpenClaw prompt for even richer drafts
- Multi-channel follow-ups: Extend the script to also draft LinkedIn messages or Slack reminders for internal team members
- Feedback loop: Track which AI-drafted emails get sent vs. discarded to improve prompt quality over time
- Escalation rules: Flag deals over a certain value or inactivity threshold for manager attention
The gap between "we should follow up on stale deals" and "we follow up on every stale deal, every week, with personalized context" is no longer a staffing problem. It's an automation problem — and now you have the blueprint to solve it.
Useful Resources
Interested to Learn More? Try Out the Free 14-Days Trial
One AI-native workspace to build, ship, and monitor dbt™ — without the tool sprawl.
More Guides
How to Run OpenClaw in Paradime
Learn how to run OpenClaw automations in Paradime — schedule morning briefings, inbox triage, calendar cleanup, and more with encrypted secrets and zero infrastructure.
How to Summarize Slack Channels Daily with OpenClaw in Paradime
Summarize busy Slack channels daily with OpenClaw in Paradime. AI reads messages, extracts key decisions and action items, and posts a digest.
How to Generate Security Compliance Reports with OpenClaw in Paradime
Generate security compliance reports with OpenClaw in Paradime. AI compiles evidence from your trackers into structured reports ready for audit review.
Join industry leaders winning with DinoAI agents
Data engineers and analysts at the most AI-native startups and enterprises use Paradime's DinoAI agents everyday to become market leaders.