How to Build a Daily Weather Alert with OpenClaw in Paradime
Feb 26, 2026
Build a Daily Weather Alert Bot with Paradime, OpenClaw, and Slack
TL;DR: Wire up OpenClaw's AI agent layer, a free weather API, and a Slack webhook — then schedule the whole thing through Paradime Bolt so your team gets a clothing-and-umbrella forecast every morning at 6:30 AM, zero manual effort required.
What Is Paradime?
Paradime is an AI-native data platform — often called "Cursor for Data" — that replaces dbt Cloud™ for analytics and data engineering teams. It gives you a single workspace to code, ship, fix, and scale data pipelines using dbt™ and Python.
The feature that matters most for this tutorial is Bolt — Paradime's built-in scheduler. Bolt lets you run dbt™ commands and arbitrary Python scripts on a cron schedule, with environment variable management, Slack/email/MS Teams notifications, and AI-powered debugging baked in.
Key capabilities of Paradime Bolt:
Cron-based scheduling with global time-zone support
Python script execution with Poetry-managed dependencies
Environment variable management (workspace-level + per-schedule overrides)
Notification settings (Success / Failure / SLA) routed to Slack, email, or MS Teams
AI-powered debugging via DinoAI, which surfaces root-cause analysis on failed runs
YAML-as-code scheduling for version-controlled pipeline configuration
📖 Docs reference: Creating Bolt Schedules · Bolt Trigger Types
What Is OpenClaw?
OpenClaw is an open-source, self-hosted AI agent with 68,000+ GitHub stars. It runs locally on your machine (Mac, Windows, or Linux) and functions as a local gateway that connects AI models to your tools, chat apps, files, and scripts.
Think of OpenClaw as the intelligent orchestration layer between your code and the outside world:
Model-agnostic — connect OpenAI, Anthropic, local Ollama models, or any OpenAI-compatible API
Channel integrations — Slack, Discord, Telegram, WhatsApp, iMessage, and more
Automation primitives — built-in cron scheduler, webhooks, and heartbeat system
Skills ecosystem — 100+ preconfigured skill bundles for weather, file management, browser automation, etc.
Privacy-first — everything runs on your own infrastructure; you bring your own API keys
📖 Docs reference: OpenClaw Getting Started · OpenClaw Slack Channel Setup
Architecture Overview
Before diving into code, here is the end-to-end flow of the daily weather alert system:
Figure 1: End-to-end data flow — Paradime Bolt triggers the Python script on schedule, which fetches weather data, processes it through OpenClaw for AI-enhanced formatting, and delivers the alert to Slack.
Setup: openclaw-sdk + Weather API + Slack SDK
Prerequisites
Tool | Purpose | Install |
|---|---|---|
Node.js 24+ | OpenClaw runtime | |
Python 3.9+ | Script execution | |
OpenClaw | AI agent gateway |
|
Paradime account | Bolt scheduler | |
OpenWeatherMap API key | Weather data | |
Slack workspace | Alert destination |
Step 1 — Install the OpenClaw Python SDK
The OpenClaw Python SDK provides a Pythonic interface for managing agents, workspaces, and tool execution:
Verify the installation:
Step 2 — Get Your OpenWeatherMap API Key
Sign up at openweathermap.org
Navigate to API keys in your profile
Copy your API key (free tier supports 60 calls/minute — more than enough for daily forecasts)
Step 3 — Create a Slack Incoming Webhook
Go to api.slack.com/apps?new_app=1 — create a new Slack app
Navigate to Incoming Webhooks → toggle Activate Incoming Webhooks to on
Click Add New Webhook to Workspace → select the target channel → Authorize
Copy the webhook URL — it looks like:
https://hooks.slack.com/services/T00000000/B00000000/XXXXXXXXXXXXXXXXXXXXXXXX
⚠️ Keep this URL secret. Anyone with it can post to your Slack channel.
Step 4 — Configure OpenClaw for Slack
If you want OpenClaw to handle Slack delivery (recommended for AI-enhanced messages), configure the Slack channel:
Or use environment variable fallback:
📖 Docs reference: OpenClaw Slack Setup · Slack Incoming Webhooks
Script: Fetch Daily Forecast with Clothing & Umbrella Suggestions
Here is the complete Python script that fetches the daily forecast, formats a weather summary with actionable clothing and umbrella advice, and sends it to Slack.
weather_alert.py
How the Script Works
Figure 2: Script execution flow — from environment variable loading through API call, data parsing, advice generation, and Slack delivery.
Environment Variables: WEATHER_API_KEY, SLACK_WEBHOOK_URL, CITY
The script relies on three environment variables. Here is how to configure them in Paradime Bolt:
Variable | Description | Example |
|---|---|---|
| OpenWeatherMap API key |
|
| Slack incoming webhook URL |
|
| Target city for weather forecast |
|
Configuring in Paradime Bolt
From any page in Paradime, click Settings
Navigate to Workspaces → Environment Variables
In the Bolt Schedules section, click Add New
Enter each key-value pair and click Save
Figure 3: Environment variable configuration path in Paradime Settings.
You can also use schedule-level overrides to run the same script for different cities:
Schedule "Weather — London" →
CITY = London,UKSchedule "Weather — New York" →
CITY = New York,USSchedule "Weather — Tokyo" →
CITY = Tokyo,JP
💡 Tip: Use Paradime's Bulk Upload feature to import variables from a CSV with columns
KeyandValue.
Accessing variables in Python:
📖 Docs reference: Bolt Schedule Environment Variables · Python Scripts in Bolt
Bolt Schedule: Cron Daily at 6:30 AM
Now let's wire everything together by creating a Paradime Bolt schedule that runs the weather alert script every morning.
Option A — UI-Based Schedule
Navigate to Bolt from the Paradime home screen
Click "+ New Schedule" → "+ Create New Schedule"
Configure the schedule:
Field | Value |
|---|---|
Name |
|
Trigger Type | Scheduled Run |
Cron Expression |
|
Timezone | Your local timezone (e.g., |
Commands |
|
Git Branch |
|
Owner Email |
|
Under Notification Settings, add a Slack destination for Failure alerts
Click Save
💡 Tip: Use crontab.guru to verify your cron expression.
30 6 * * *means "at 06:30, every day."
Option B — YAML-as-Code Schedule
For version-controlled configuration, define the schedule in your repository's Bolt YAML file:
Dependency Management with Poetry
Since Paradime Bolt uses Poetry for Python dependency management, ensure your project has a pyproject.toml:
⚠️ Important: The first command in your Bolt schedule must be
poetry install. This installs dependencies and creates the virtual environment before your script runs.
Combining with OpenClaw Cron (Alternative Approach)
If you also want OpenClaw to run its own scheduled tasks (e.g., AI-summarized briefings), you can configure OpenClaw's built-in cron:
This approach leverages OpenClaw's AI model to generate natural-language summaries, while the Paradime Bolt approach gives you deterministic, code-controlled output.
Figure 4: Two scheduling approaches — Paradime Bolt for deterministic script execution vs. OpenClaw Cron for AI-driven summarization.
Monitoring and Debugging
Once your schedule is live, you need to know it's healthy. Here is a repeatable monitoring workflow:
The Measure → Identify → Fix → Validate Loop
Figure 5: Repeatable debugging workflow — measure, identify, fix, validate.
1. Measure — Check Run History
Navigate to Bolt → your schedule → Run History to see all executions:
Status — success / failure / running
Trigger — manual or automatic (cron)
Duration — how long the run took
Branch and commit — exactly what code ran
2. Identify — Drill Into Logs
Click on any run to access three log levels:
Log Type | What It Shows | When To Use |
|---|---|---|
Summary Logs | DinoAI-generated overview with warnings | Quick health check |
Console Logs | Chronological record of all operations | Standard troubleshooting |
Debug Logs | System-level operations and internals | Deep performance investigation |
DinoAI (Paradime's built-in AI debugger) automatically analyzes failed runs and suggests fixes — so you spend less time reading stack traces.
3. Fix — Common Failure Patterns
Symptom | Root Cause | Fix |
|---|---|---|
| Missing environment variable | Add in Settings → Env Vars → Bolt Schedules |
| Invalid or expired API key | Regenerate key at openweathermap.org |
| Webhook URL deleted or channel archived | Create new webhook in Slack app settings |
| Poetry dependencies not installed | Ensure |
Run exceeds SLA threshold | Network timeout or API rate limit | Add retry logic or increase SLA threshold |
4. Validate — Confirm the Fix
After applying a fix:
Go to Bolt → your schedule
Click Run Now to trigger a manual execution
Confirm the Slack message arrives in the target channel
Check the run status shows Success
Configuring Notifications
Set up proactive alerting so you don't need to manually check:
In the Bolt schedule editor, go to Notification Settings
Click Add Destination → select Slack
Configure triggers:
📖 Docs reference: Bolt Notification Settings · Viewing Run History
Monitoring OpenClaw Gateway
If you're using OpenClaw for Slack delivery, monitor the gateway separately:
Troubleshooting Common Issues
Weather API Issues
Problem: requests.exceptions.HTTPError: 401 Client Error
Fix: Your WEATHER_API_KEY is invalid or hasn't been activated yet. New OpenWeatherMap keys can take up to 2 hours to activate. Verify by testing directly:
Problem: requests.exceptions.ConnectionError: Max retries exceeded
Fix: Network connectivity issue. Add retry logic to your script:
Slack Webhook Issues
Problem: Slack webhook failed: 404
Fix: The webhook URL is invalid. Possible causes:
The Slack app was deleted or reinstalled
The target channel was archived
The webhook was revoked
Solution: Create a new incoming webhook in your Slack app settings and update the SLACK_WEBHOOK_URL environment variable in Paradime.
Problem: Slack webhook failed: 400 — invalid_payload
Fix: The JSON payload is malformed. Common causes:
Missing
"text"field as fallback (required even with Block Kit)Invalid Block Kit structure
Add a "text" fallback to your payload:
Paradime Bolt Issues
Problem: Schedule runs but the Python script never executes
Fix: Ensure the first command is poetry install:
Without poetry install, the virtual environment isn't created and dependencies like requests won't be available.
Problem: Environment variable not found in the script
Fix: Verify the variable is set in the correct scope:
Code IDE Environment Variables → only available during development
Bolt Schedule Environment Variables → available in production runs
Go to Settings → Workspaces → Environment Variables → Bolt Schedules and confirm the key exists.
OpenClaw Issues
Problem: OpenClaw cron jobs aren't firing
Fix: Check the common culprits:
Problem: OpenClaw Slack channel not receiving messages
Fix: Run the channel diagnostics:
Common fixes:
Socket Mode: Verify both
appToken(xapp-...) andbotToken(xoxb-...) are validHTTP Mode: Verify
signingSecretand ensure thewebhookPathmatches Slack's Event Subscriptions Request URLScopes: Ensure the bot has
chat:write,channels:history, andapp_mentions:readscopes
📖 Docs reference: OpenClaw Troubleshooting · OpenClaw Cron Jobs
Wrapping Up
You've now built a production-grade daily weather alert system that:
Fetches real-time forecast data from OpenWeatherMap
Generates actionable clothing and umbrella suggestions based on temperature and conditions
Delivers a beautifully formatted Slack message with Block Kit
Runs automatically every morning at 6:30 AM via Paradime Bolt's cron scheduler
Self-monitors with failure notifications and AI-powered debugging
Figure 6: The complete system — data flow (top) and operational infrastructure (bottom).
Next Steps
Multi-city support: Use Bolt's per-schedule environment variable overrides to run alerts for different offices
AI-enhanced summaries: Route forecasts through OpenClaw's agent layer for natural-language briefings tailored to your team's activities
dbt™ integration: Combine weather alerts with data pipeline status in a single morning briefing using Bolt's multi-command schedules
Webhook-driven triggers: Use OpenClaw's webhook endpoints to trigger weather checks on-demand via Slack slash commands
Key Resources
Resource | Link |
|---|---|
Paradime Docs | |
Bolt Scheduling Guide | |
Bolt Environment Variables | |
Bolt Notification Settings | |
OpenClaw Docs | |
OpenClaw Cron Jobs | |
OpenClaw Slack Channel | |
OpenWeatherMap API | |
Slack Incoming Webhooks |

