How to Generate Sales Follow-Up Emails with OpenClaw in Paradime

Feb 26, 2026

Table of Contents

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:

  1. Pulls deals with no activity in the last 7 days from your CRM (or Google Sheets)

  2. Drafts personalized follow-up emails for each stale deal

  3. Saves those drafts directly into Gmail for human review

  4. 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

CRM_API_KEY

API token for your CRM (HubSpot, Salesforce, etc.)

CRM Settings → Integrations → Private Apps

GOOGLE_CREDENTIALS_JSON

Google OAuth credentials JSON (stringified)

Google Cloud Console → APIs & Services → Credentials

OPENCLAW_API_KEY

API key for OpenClaw SDK authentication

OpenClaw dashboard or openclaw CLI during onboarding

Optional Variables

Variable

Default

Description

USE_SHEETS_CRM

false

Set to true to use Google Sheets instead of CRM API

DAYS_INACTIVE

7

Number of days of inactivity before a deal is flagged

Configuring in Paradime Bolt

  1. Navigate to Settings in the Paradime application

  2. Go to Workspaces → Environment Variables

  3. In the Bolt Schedules section, click Add New

  4. Add each variable with its key and value

  5. 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

0

At minute 0

Hour

9

At 9 AM

Day of Month

*

Every day

Month

*

Every month

Day of Week

2,4

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:

  1. Scheduled Run — Time-based cron triggers (what we're using)

  2. On Run Completion — Dependency-based triggers (chain jobs)

  3. On Merge — Git merge triggers (CI/CD pipelines)

  4. 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 start blocked: set gateway.mode=local

Gateway mode not configured

Run openclaw onboard --install-daemon

EADDRINUSE

Port 18789 already in use

Kill the existing process or change port

refusing to bind gateway without auth

Auth not configured

Complete onboarding: openclaw onboard

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.compose and gmail.modify scopes

  • 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 read access 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-20250514 for 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.yml is on your default branch (main or master)

  • Check cron expression syntax — use 0-6 for days (Sunday through Saturday), not 1-7

  • Ensure timezone is a valid IANA timezone string (e.g., America/New_York, not EST)

  • 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: true in 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

  1. Eliminated tribal knowledge dependency — The system doesn't rely on anyone remembering to check for stale deals

  2. Automated context gathering — Deal information flows directly from your CRM into the email drafts

  3. Personalized at scale — OpenClaw generates unique, context-aware follow-ups for every deal, not generic templates

  4. Human-in-the-loop safety — Emails are saved as drafts, never sent automatically. Your reps review, tweak, and send

  5. Reliable scheduling — Paradime Bolt runs the workflow every Tuesday and Thursday at 9 AM without fail

  6. 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

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.