How to Build a Weekend Planner Agent with OpenClaw in Paradime
Feb 26, 2026
Build an AI Weekend Planner with Paradime, OpenClaw, and Bolt — No Local Config Headaches
Stop wrestling with .env files and brittle cron tabs. In this guide, you'll wire up a fully automated weekend planner that checks the weather, scans your Google Calendar for commitments, and suggests activities tailored to your preferences — all orchestrated by OpenClaw and scheduled through Paradime's Bolt, with results delivered straight to Slack every Friday at 4 PM.
If you've ever burned an hour debugging a missing API key that only surfaces at runtime, this is the workflow you wish you'd built months ago.
What Is Paradime?
Paradime is the all-in-one AI platform that replaces dbt Cloud™. It gives fast-moving analytics and data teams a single workspace to code, ship, debug, and scale data pipelines — without juggling separate tools for development, scheduling, monitoring, and cost management.
The platform is built around three pillars:
Pillar | What It Does |
|---|---|
Code IDE | An AI-native IDE (powered by DinoAI) that cuts dbt™ and Python development time by 83%+ with in-context data samples, lineage, and docs. |
Bolt | Lightning-fast scheduling and CI/CD for dbt™, Python, and AI pipelines — driven from a UI or YAML, with real-time Slack/email alerts. |
Radar | FinOps intelligence that slashes Snowflake and BigQuery warehouse costs so you can redirect credits toward AI use cases. |
Why does this matter for a weekend planner? Because Bolt gives you a production-grade scheduler with UI-driven environment variable management, cron configuration, and built-in monitoring — all SOC 2 Type II compliant. No more .env files committed to Git. No more SSH-ing into a server to tail logs.
Key takeaway: Paradime handles the "run it reliably in production" part so you can focus on what the automation actually does.
A Taste of dbt™ in Paradime
If you're new to dbt™ within Paradime, here's what a basic model looks like:
And the scheduling config that runs it (we'll cover this in detail later):
What Is OpenClaw?
OpenClaw is an open-source AI agent framework that turns LLMs into autonomous, tool-using assistants. Previously known as Moltbot before its 2026 rebrand, OpenClaw has rapidly accumulated 100k+ GitHub stars thanks to a simple premise: your machine, your data, your models.
Unlike hosted agent platforms, OpenClaw runs locally (or on your own infrastructure) and connects to any model provider — OpenAI, Anthropic, Google Gemini, or local models via Ollama. Its architecture is clean:
Figure 1: The OpenClaw agent loop — perceive, plan, act, observe, repeat.
OpenClaw's plugin system lets you register custom tools that any agent can use immediately:
Setup: openclaw-sdk + Weather API + Google Calendar API
Here's the full dependency and credential setup to get from zero to a working weekend planner.
Prerequisites
Python 3.10+ installed and verified (
python3 --version)A Paradime account (sign up here)
API keys for WeatherAPI (free tier at weatherapi.com)
Google Cloud project with Calendar API enabled and a service account or OAuth credentials
A Slack workspace with an incoming webhook URL
An OpenClaw API key (from your OpenClaw instance settings)
Step 1: Install the OpenClaw SDK
Step 2: Obtain Your API Keys
Credential | Where to Get It |
|---|---|
| weatherapi.com/my → Copy your API key |
| Google Cloud Console → APIs & Services → Credentials → Create Service Account → Download JSON key |
| OpenClaw settings → API Keys → Generate |
| Slack → Apps → Incoming Webhooks → Add to Workspace → Copy URL |
Step 3: Configure OpenClaw Environment
OpenClaw reads environment variables from a .env file in priority order:
Process environment (parent shell)
.envin the current working directory~/.openclaw/.env(global fallback)envblock in~/.openclaw/openclaw.json
Create your .env file (never commit this to Git):
Then configure your OpenClaw model provider in ~/.openclaw/openclaw.json:
Opinion time: The
${VAR_NAME}substitution in OpenClaw's config is genuinely good design. It means youropenclaw.jsoncan live in version control while secrets stay in.env. Most local agent setups get this wrong.
Figure 2: Secrets stay in .env; config stays in version control. Clean separation.
The Script: Check Weekend Weather, Scan Calendar, Suggest Activities
This is the core automation — a Python script that uses the OpenClaw SDK to orchestrate a multi-step weekend planning workflow.
Architecture Overview
Figure 3: End-to-end flow — from Bolt cron trigger to Slack delivery.
The Script
Environment Variables: The Right Way
Here's every environment variable this project needs, where it goes, and why you should manage it through Paradime's UI instead of a local file.
Variable | Purpose | Sensitive? |
|---|---|---|
| Authenticates with WeatherAPI for forecast data | ✅ Yes |
| Path to Google service account key file for Calendar API | ✅ Yes |
| Authenticates with your OpenClaw instance | ✅ Yes |
| Incoming webhook endpoint for posting the plan | ✅ Yes |
| Target city for weather forecasts (default: San Francisco) | ❌ No |
| Comma-separated activity preferences | ❌ No |
Setting Env Vars in Paradime Bolt (UI)
This is where Paradime removes the pain. Instead of managing .env files across machines:
Navigate to Settings in the Paradime app
Go to Workspaces → Environment Variables
In the Bolt Schedules section, click Add New
Enter the Key (e.g.,
WEATHER_API_KEY) and ValueClick the Save icon 💾
For bulk setup, use the Bulk Upload option with a CSV:
Why this is better: Paradime's variable management is SOC 2 Type II compliant, supports per-schedule overrides (so your staging schedule can use a different Slack channel), and keeps secrets out of your Git repo entirely. Admin access is required to modify — no junior dev accidentally overwriting production keys.
Figure 4: Environment variable management — before and after Paradime.
Bolt Schedule: Cron Every Friday at 4 PM
Now let's schedule the weekend planner to fire automatically. You have two options: the UI or YAML-as-code.
Option A: Paradime Bolt UI
Open Bolt in Paradime (app.paradime.io/bolt)
Click Create Schedule
Configure:
Under Commands, add:
Under Notifications, add your Slack channel and email for
failedandslaeventsClick Deploy
Option B: Schedules as Code (YAML)
Add this to your paradime_schedules.yml at the root of your dbt™ project:
Cron tip:
0 16 * * 5means "minute 0, hour 16, any day of month, any month, Friday (day 5)." Validate at crontab.guru before deploying. Also note that Paradime uses standard cron day numbering (0=Sunday, 6=Saturday) — don't use 1-7 ranges.
Figure 5: Bolt orchestration flow — YAML defines it, Bolt runs it, alerts keep you informed.
Monitoring and Debugging
Once your schedule is live, you need visibility. Paradime Bolt provides three layers of observability out of the box.
The Bolt Dashboard
Navigate to Bolt in the Paradime app to see all schedules at a glance:
Status — Running, Passed, Error
Last Run / Next Run — When it last executed and when it will fire again
Duration — How long each run took
Trigger Type — Scheduled, manual, or API-triggered
Run Logs (Three Depths)
Click into any run to access three log tiers:
Log Type | What It Shows | When to Use |
|---|---|---|
Summary Logs | DinoAI-generated overview with warnings and suggested fixes | Quick health check — is it green or red? |
Console Logs | Full chronological execution output with "jump to error" navigation | Finding the exact line that failed |
Debug Logs | System-level operations, dbt™ internals, and performance data | Deep troubleshooting and performance tuning |
DinoAI-Powered Debugging
Paradime's built-in AI assistant (DinoAI) automatically generates a Summary Log for every run. For failed runs, this includes:
A plain-English description of what went wrong
The specific command and line that failed
Suggested fixes based on the error pattern
Example DinoAI output:
Setting Up Alerts
Configure notifications in your paradime_schedules.yml (shown above) or through the Bolt UI:
Slack channels — get pinged instantly when a run fails or breaches SLA
Email — backup notification for critical failures
Microsoft Teams — also supported for enterprise setups
For more details, see the Paradime notification settings docs.
Troubleshooting Common Issues
Here are the issues you're most likely to hit, and how to fix them fast.
1. 401 Unauthorized from Weather API
Cause: WEATHER_API_KEY is missing, expired, or incorrectly set.
Fix:
Check the key in Paradime: Settings → Workspaces → Environment Variables → Bolt Schedules
Verify the key works locally:
If using a free tier, confirm you haven't exceeded the daily call limit
2. google.auth.exceptions.DefaultCredentialsError
Cause: GOOGLE_CREDENTIALS_JSON path is wrong, or the JSON file isn't accessible in the Bolt execution environment.
Fix:
For Bolt schedules, the credentials file must be available in the dbt™ project directory or at an absolute path the runner can access
Consider base64-encoding the JSON and storing it as a Bolt environment variable, then decoding at runtime:
3. OPENCLAW_API_KEY Not Recognized
Cause: The OpenClaw SDK expects the key to be set in the environment, but it's only configured in openclaw.json.
Fix:
Ensure the variable is set in both the
.envfile and as a Bolt Schedule environment variableOpenClaw's env precedence: Process env →
.env(CWD) →~/.openclaw/.env→openclaw.jsonenvblock
4. Slack Webhook Returns 403 Forbidden
Cause: The webhook URL has been revoked or the Slack app was removed from the workspace.
Fix:
Re-generate the webhook: Slack → Your Apps → Incoming Webhooks → Add New Webhook to Workspace
Update the
SLACK_WEBHOOK_URLin Paradime Bolt environment variables
5. Cron Fires at the Wrong Time
Cause: Timezone mismatch. Bolt defaults to UTC if no timezone is specified.
Fix:
Explicitly set
timezone: America/Los_Angeles(or your local timezone) inparadime_schedules.ymlDouble-check your cron expression at crontab.guru
Remember:
0 16 * * 5inAmerica/Los_Angelesmeans 4 PM Pacific, which is 11 PM or midnight UTC depending on DST
6. Script Runs But No Slack Message
Cause: The script completed without errors but the Slack payload was malformed.
Fix:
Check Console Logs in Bolt for the "✅ Weekend plan sent to Slack!" confirmation
Test the webhook independently:
Ensure the
blockspayload structure matches Slack's Block Kit format
Figure 6: Troubleshooting decision tree for failed weekend planner runs.
Evaluating LLM Output Quality with dbt-llm-evals
Since this planner relies on an LLM to generate activity suggestions, you might want to monitor the quality of those outputs over time. Paradime's open-source dbt-llm-evals package lets you run warehouse-native evaluations without sending data to external APIs.
Add it to your packages.yml:
Then configure evaluation criteria in dbt_project.yml:
This gives you automated scoring and drift detection on your weekend planner's LLM responses — directly in Snowflake, BigQuery, or Databricks. No data egress, no external dependencies.
Wrapping Up
Here's what you've built:
Component | Role |
|---|---|
OpenClaw | AI agent framework — orchestrates weather checks, calendar reads, and LLM-powered suggestions |
Weather API | Provides Saturday/Sunday forecasts for your city |
Google Calendar API | Surfaces existing commitments so the planner doesn't double-book you |
Paradime Bolt | Schedules the whole thing on a cron ( |
Slack | Delivers the finished weekend plan to your team or personal channel |
The real win here isn't any single piece — it's the combination. OpenClaw gives you the agentic intelligence. Paradime Bolt gives you the production reliability. And the UI-driven environment variable management means you'll never debug a "works on my machine" secrets problem again.
Next steps:
Add more tools to your OpenClaw agent — restaurant APIs, event discovery (Eventbrite, Meetup), transit schedules
Use Bolt's On Run Completion trigger to chain the planner with upstream data pipelines
Set up Paradime Radar to track the warehouse cost of running evaluations with dbt-llm-evals
Explore the OpenClaw Skills Marketplace for pre-built Google Calendar and weather integrations
Happy weekends. 🌤️

