The $30/Month Wake-Up Call
I was running two simple OpenClaw cron jobs:
- Daily email summaries (job postings from Gmail)
- Google Sheets tracker updates
Both were using Claude Sonnet 4.5, OpenClaw’s default model. Great model—incredibly capable, thoughtful responses, handles complex reasoning.
But here’s the thing: I didn’t need Sonnet for these tasks.
Extracting job titles from emails and writing them to a spreadsheet? That’s not a reasoning-heavy task. It’s structured data processing. And I was paying Sonnet pricing ($3 per million tokens) when I could’ve been using Haiku ($0.25 per million tokens).
12x cheaper. Same quality output for structured tasks.
Understanding OpenClaw’s Model Options
OpenClaw supports multiple AI models through OpenRouter, and each has different strengths and price points:
Premium Tier (Expensive, High Reasoning)
- Claude Sonnet 4.5: ~$3/1M tokens — Best for complex reasoning, creative writing, nuanced decisions
- GPT-4o: ~$2.50/1M tokens — Strong all-rounder, good for mixed tasks
Budget Tier (Cheap, Fast, Great for Structured Tasks)
- Claude Haiku 3.5: ~$0.25/1M tokens — Fast, reliable, perfect for data extraction and simple automations
- GPT-4o Mini: ~$0.15/1M tokens — Cheapest OpenAI option, great for straightforward tasks
- Gemini Flash 2.0: FREE (with API key) — Fast, free tier available, excellent for high-volume tasks
When to Use Which Model
Here’s the decision framework I use:
Use Premium Models (Sonnet, GPT-4o) When:
- Writing creative content (blog posts, emails to humans)
- Complex decision-making (“Should I reply to this email?”)
- Nuanced interpretation (sentiment analysis, intent detection)
- Multi-step reasoning (planning, problem-solving)
- High-stakes actions (anything that could go wrong)
Use Budget Models (Haiku, Mini, Flash) When:
- Extracting structured data (emails → spreadsheets)
- Formatting and transformation (JSON → CSV, HTML → plain text)
- Simple classification (“Is this a job posting? Yes/No”)
- Templated responses (“Send ‘Thanks for reaching out’ reply”)
- High-volume repetitive tasks (daily cron jobs)
My Cost Optimization Story
Here’s what I did to cut costs by 90%:
Step 1: Audit My Cron Jobs
I listed all my automated tasks:
cron(action="list")
Found two jobs running daily on Sonnet:
- Email Job Summaries: Search Gmail for job postings, extract title/company/link
- Google Sheets Tracker: Add new jobs to a tracking spreadsheet
Both were pure data extraction—no reasoning needed.
Step 2: Add Budget Models to Config
I updated my OpenClaw config to allow cheaper models:
{
"models": {
"allowed": [
"claude-3.5-haiku",
"claude-3-haiku",
"gpt-4o-mini",
"gemini-2.0-flash-exp:free"
]
}
}
Applied the patch without replacing my entire config:
gateway(action="config.patch", raw=JSON.stringify(patchConfig))
Step 3: Update Both Cron Jobs
Changed the model from Sonnet to Haiku:
cron(action="update", jobId="email-job-id", patch={
payload: { model: "claude-3.5-haiku" }
})
cron(action="update", jobId="sheets-job-id", patch={
payload: { model: "claude-3.5-haiku" }
})
Step 4: Monitor Quality
I let both jobs run for a week and checked the output. Result?
Identical quality. Zero degradation. The job titles were extracted correctly, the spreadsheet updates were perfect, and I was now paying 12x less.
Real Cost Comparison
Let’s do the math on my two daily jobs:
Before (Sonnet 4.5)
- Email job: ~10K tokens/day × $3/1M = $0.03/day
- Sheets job: ~8K tokens/day × $3/1M = $0.024/day
- Total: $0.054/day = $1.62/month
After (Haiku 3.5)
- Email job: ~10K tokens/day × $0.25/1M = $0.0025/day
- Sheets job: ~8K tokens/day × $0.25/1M = $0.002/day
- Total: $0.0045/day = $0.14/month
Savings: $1.48/month (91% reduction)
For just two jobs. If you’re running 10-20 automations, this compounds fast.
The Free Tier Option: Gemini Flash
Google’s Gemini Flash 2.0 has a generous free tier (up to 15 requests/minute). For high-volume tasks that don’t need premium reasoning, this is unbeatable:
- Get a free API key: https://aistudio.google.com/apikey
- Add to config:
GEMINI_API_KEY=your-key - Use model:
gemini-2.0-flash-exp:free
Cost: $0.00
Best Practices for Cost Optimization
1. Default to Budget, Upgrade When Needed
Start with Haiku or Mini. If the output quality isn’t good enough, then upgrade to Sonnet. Don’t assume you need the premium model.
2. Use Model Overrides Per Job
You can set different models for different cron jobs:
{
"payload": {
"kind": "agentTurn",
"message": "Extract job titles from my Gmail",
"model": "claude-3.5-haiku" // Override here
}
}
3. Monitor Token Usage
Run session_status() regularly to see your token consumption and costs. Look for high-volume tasks that could be switched to cheaper models.
4. Batch When Possible
Instead of running a cron job every hour (24 API calls/day), run it once daily and process all items in one batch. Fewer calls = lower base cost.
5. Cache Repeated Queries
If you’re asking the same question multiple times (e.g., “What’s the format for job title extraction?”), cache the response and reuse it. Don’t pay twice for the same information.
Common Mistakes to Avoid
❌ Using Sonnet for Everything
Just because it’s the default doesn’t mean it’s the right choice. Audit your tasks.
❌ Switching to Free Models for Complex Tasks
Don’t sacrifice quality for cost on high-stakes tasks. If you’re writing emails to clients or making business decisions, use Sonnet.
❌ Forgetting to Update Model Allowlists
If you try to use a model that’s not in your allowed list, the job will fail silently. Always update your config first.
❌ Not Testing After Switching
Always validate output quality after changing models. Run the job a few times and spot-check the results.
Model Selection Cheat Sheet
| Task Type | Recommended Model | Cost/1M Tokens |
|---|---|---|
| Data extraction | Haiku 3.5 | $0.25 |
| Simple classification | GPT-4o Mini | $0.15 |
| High-volume tasks | Gemini Flash (free) | $0.00 |
| Creative writing | Sonnet 4.5 | $3.00 |
| Complex reasoning | Sonnet 4.5 | $3.00 |
| Code generation | GPT-4o | $2.50 |
The Bottom Line
You don’t need a Ferrari to drive to the grocery store. And you don’t need Sonnet to extract job titles from emails.
Match the model to the task.
- Structured data? Haiku.
- High volume? Gemini Flash (free).
- Complex reasoning? Sonnet.
I cut my costs by 90% with zero quality loss. You can too. 🙌
Action Steps
- List your current cron jobs:
cron(action="list") - Identify structured/simple tasks
- Add budget models to your config
- Update job models one at a time
- Validate output quality
- Monitor with
session_status()
Your wallet will thank you. 💰