How to Score and Prioritize Leads with OpenClaw in Paradime

Feb 26, 2026

Table of Contents

How to Build Automated Lead Scoring with Paradime, OpenClaw, and Google Sheets

Stop hand-scoring leads in spreadsheets. If your sales team is still manually eyeballing company size, job titles, and email opens to decide who to call first, you're burning hours that should go toward closing deals.

This guide walks you through building a fully automated lead-scoring pipeline that reads leads from a Google Sheet, evaluates them against firmographic and engagement signals using OpenClaw's AI capabilities, assigns a score, writes it back to the sheet, and pings your sales channel on Slack — all scheduled to run daily at 8 AM via Paradime Bolt.

No local config headaches. No fragile cron jobs on someone's laptop. Everything is UI-driven, version-controlled, and secure.

What Is Paradime?

Paradime is an AI-native data platform — often described as "Cursor for Data" — that replaces dbt Cloud™. It gives analytics and data engineering teams a single workspace to code, ship, debug, and scale data pipelines using dbt™ and Python.

The features that matter for this tutorial:

  • Code IDE: An AI-native editor (powered by DinoAI) that eliminates boilerplate and surfaces full data lineage directly in the interface.

  • Bolt Scheduler: A production-grade orchestration engine for dbt™ and Python with cron scheduling, CI/CD triggers, Slack/email notifications, and 99.9% uptime — so your lead-scoring job actually runs every morning.

  • Environment Variables: Securely store API keys, credentials, and webhook URLs at the workspace or schedule level — no .env files littering your repo.

  • SOC 2 Type II, GDPR & CCPA: Enterprise-grade security out of the box.

Why not just use a cron job on a VM? Because when that VM reboots, or when someone's laptop stays closed on Monday morning, your pipeline silently dies. Bolt gives you monitoring, AI-powered debugging (DinoAI summarizes failures and suggests fixes), and schedule-level overrides — all from a UI.

What Is OpenClaw?

OpenClaw is an open-source, local-first AI agent platform. Think of it as an operations partner rather than a chatbot — it connects to your file system, terminal, browser, and communication channels to research, execute, and deliver concrete outcomes.

For our use case, we're using the OpenClaw Python SDK (openclaw-sdk) to tap into its AI-driven evaluation capabilities:

  • AI-Powered Scoring: Send structured lead data to OpenClaw, and it returns a fit-and-intent score based on your custom criteria.

  • Modular Skills: OpenClaw's skill system lets you plug in custom evaluation logic for industry classification, engagement signal weighting, and more.

  • API-Driven: The SDK provides a clean Python interface — pip install openclaw-sdk — with typed methods for creating jobs and running agent tasks.

Architecture Overview

Before we start wiring things together, here's how the pieces fit:

Figure 1: End-to-end lead scoring pipeline — Bolt triggers the Python script daily, which reads from Google Sheets, scores via OpenClaw, then writes results back and notifies Slack.

Setup: openclaw-sdk + Google Sheets API

Step 1: Install Dependencies

In your Paradime dbt™ project root, create (or update) a pyproject.toml for Poetry-based dependency management. Paradime uses Poetry to handle Python environments in Bolt schedules.

Step 2: Set Up Google Sheets API Credentials

  1. Go to Google Cloud Console → Create a new project (or use an existing one).

  2. Navigate to APIs & Services → Library → Enable both the Google Sheets API and the Google Drive API.

  3. Go to APIs & Services → CredentialsCreate Credentials → Service Account.

  4. Give the service account a name (e.g., lead-scoring-bot), assign the Editor role.

  5. Under the service account, click Keys → Add Key → Create new key → JSON.

  6. Download the JSON file. You'll base64-encode its contents and store it as an environment variable in Paradime.

Important: Share your Google Sheet with the service account's email address (the client_email field in the JSON file) — give it Editor access.

Step 3: Set Up OpenClaw API Key

  1. Install OpenClaw locally if you want to test: curl -fsSL https://openclaw.ai/install.sh | bash

  2. Run openclaw onboard --install-daemon to configure.

  3. From the OpenClaw dashboard (openclaw dashboard), generate an API key with jobs:write scope.

  4. Copy the key — it starts with sk-....

Step 4: Set Up Slack Incoming Webhook

  1. Go to Slack APICreate New App → From Scratch.

  2. Under Features, enable Incoming Webhooks.

  3. Click Add New Webhook to Workspace → Select your #sales-alerts channel.

  4. Copy the webhook URL (format: https://hooks.slack.com/services/T.../B.../xxx).

Environment Variables in Paradime

Here's where Paradime's UI-driven setup eliminates config pain. Instead of .env files, secrets managers, or Docker env flags, you store everything in the Paradime Settings panel.

Figure 2: Environment variable configuration flow in Paradime — all secrets are stored securely in the Bolt Schedules section, accessible only to admins.

How to Configure

  1. From any page in the Paradime app, click Settings.

  2. Navigate to Workspaces → Environment Variables.

  3. In the Bolt Schedules section, click Add New.

  4. Add the following variables:

Key

Value

Description

GOOGLE_CREDENTIALS_JSON

Base64-encoded service account JSON

Google Sheets authentication

OPENCLAW_API_KEY

sk-...

OpenClaw API authentication

SLACK_WEBHOOK_URL

https://hooks.slack.com/services/...

Slack notification endpoint

SPREADSHEET_ID

Your Google Sheet ID

The sheet containing lead data

  1. Click the Save icon.

Security note: Only workspace administrators can configure these variables. They're encrypted at rest and available exclusively in Bolt schedule execution — not exposed in the Code IDE or Git history. This is a meaningful upgrade over dbt Cloud™'s environment variable handling.

The Lead Scoring Script

Create a file called scripts/score_leads.py in your dbt™ project root. This is the core of the pipeline.

Google Sheets Structure

Your spreadsheet should have these columns:

Company

Industry

Employee Count

Contact Title

Email Opens (30d)

Page Views (30d)

Form Submissions

Score

Tier

Last Scored

Acme Corp

SaaS

250

VP Sales

12

34

2




The Script

What This Script Does — Step by Step

Figure 3: Sequence diagram of the daily lead scoring pipeline — from Bolt trigger through scoring to Slack notification.

Bolt Schedule: Cron Daily at 8 AM

Now, let's schedule this to run automatically every morning. You have two options in Paradime — UI-based or schedules-as-code. Both are first-class.

Option A: UI-Based Setup

  1. Navigate to Bolt in the Paradime sidebar.

  2. Click Create Schedule.

  3. Fill in:

  4. Under Commands, add:

  5. Under Notifications, configure Slack channel #data-team for failed and sla events.

  6. Click Save.

Option B: Schedules as Code

Add this to paradime_schedules.yml in your dbt™ project root (alongside dbt_project.yml):

Why poetry install as the first command? Paradime uses Poetry for dependency management. The first command in any Bolt schedule that uses Python must be poetry install to set up the virtual environment and install packages like openclaw-sdk and gspread.

Merge this to your main branch. Paradime checks for changes every 10 minutes automatically, or you can manually trigger a parse from the Bolt UI via Parse Schedules.

Cron Expression Cheat Sheet

Expression

Description

0 8 * * *

Every day at 8:00 AM

0 8 * * 1-5

Weekdays only at 8:00 AM

0 */2 * * *

Every 2 hours

0 8,14 * * *

8:00 AM and 2:00 PM

Validate your cron expressions at crontab.guru.

Monitoring and Debugging

Once your schedule is live, Paradime gives you three layers of observability — and this is where the platform genuinely shines compared to rolling your own scheduler.

Run History Dashboard

Navigate to Bolt → daily-lead-scoring to see every execution:

  • Status: Passed / Error / Running

  • Trigger: Manual or Automatic

  • Duration: How long the run took

  • Branch + Commit: Exactly which code ran

Three Log Levels

Click into any run, then select the python scripts/score_leads.py command to access:

Log Type

What It Shows

When to Use

Summary Logs

DinoAI-generated overview with warnings and suggested fixes

First stop — quick assessment

Console Logs

Full chronological execution output (print statements, errors)

Finding the specific line that failed

Debug Logs

System-level details (environment setup, dependency install)

Deep troubleshooting (Poetry install issues, env var problems)

Figure 4: Debugging decision tree for failed Bolt runs — start with DinoAI summaries and drill deeper as needed.

Slack and Email Notifications

If you configured notifications (and you should), Paradime sends alerts when:

  • A run fails — so you know immediately, not when sales complains at noon.

  • A run breaches SLA — if scoring takes longer than 30 minutes, something is wrong.

Troubleshooting Common Issues

1. ModuleNotFoundError: No module named 'openclaw_sdk'

Cause: poetry install didn't run, or openclaw-sdk isn't in pyproject.toml.

Fix: Ensure poetry install is the first command in your Bolt schedule. Double-check that openclaw-sdk is listed under [tool.poetry.dependencies] in pyproject.toml.

2. google.auth.exceptions.DefaultCredentialsError

Cause: GOOGLE_CREDENTIALS_JSON environment variable is missing or incorrectly encoded.

Fix:

Copy the output and paste it as the value for GOOGLE_CREDENTIALS_JSON in Paradime Settings → Bolt Schedules Environment Variables.

3. gspread.exceptions.SpreadsheetNotFound

Cause: The service account email doesn't have access to the Google Sheet.

Fix: Open your Google Sheet → Click Share → Add the client_email from your service account JSON (looks like lead-scoring-bot@project-id.iam.gserviceaccount.com) with Editor access.

4. openclaw_sdk.errors.AuthenticationError

Cause: Invalid or expired OPENCLAW_API_KEY.

Fix: Regenerate the key from the OpenClaw dashboard (openclaw dashboard). Ensure the key has jobs:write scope. Update the value in Paradime Settings.

5. Slack Notifications Not Arriving

Cause: Webhook URL is incorrect, or the Slack app was removed from the channel.

Fix: Test the webhook manually:

If this fails, regenerate the webhook from Slack API → Your App → Incoming Webhooks.

6. Rate Limits on Google Sheets API

Cause: The Google Sheets API has a default quota of 60 requests per minute per user.

Fix: Add a small delay between write operations, or batch updates using sheet.batch_update():

7. OpenClaw Returns Unparseable JSON

Cause: The AI model occasionally returns conversational text around the JSON.

Fix: Add defensive parsing:

Before and After: Manual vs. Automated Lead Scoring

Figure 5: Time comparison — manual lead scoring takes 8-12 minutes per lead; the automated pipeline handles it in seconds.

Wrapping Up

Here's what you've built:

  1. A Python script that reads leads from Google Sheets, sends them to OpenClaw for AI-driven scoring (firmographic + engagement signals), writes scores back, and notifies sales on Slack.

  2. A Paradime Bolt schedule that runs this pipeline every day at 8 AM UTC — with cron scheduling, Poetry-based dependency management, and secure environment variables.

  3. A monitoring setup that gives you DinoAI-powered log summaries, console logs, and debug logs — plus Slack and email alerts for failures.

The entire thing is version-controlled (the YAML schedule lives alongside your dbt™ project), UI-configurable (environment variables and schedules can be managed without touching code), and secure (SOC 2 Type II, encrypted secrets, admin-only access).

What to do next:

  • Refine your scoring criteria: Adjust the prompt sent to OpenClaw based on your ICP — what industries, company sizes, and engagement thresholds actually predict conversion for your business.

  • Add re-scoring on new activity: Use Bolt's API trigger type to kick off a re-score when your CRM webhook fires on new engagement events.

  • Connect to dbt™ models: Load scored leads into your warehouse and build dbt™ models on top — track scoring accuracy over time, build dashboards, and close the feedback loop.

The gap between "we should automate lead scoring" and "it runs every morning" is smaller than you think. With Paradime handling orchestration and OpenClaw handling intelligence, you can ship this in an afternoon.

Useful links:

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.