All Articles
Tail Latency in Scheduled Claude API Workloads: A Three-Layer Guardrail Against Retry Storms
After running six sites in parallel through scheduled Claude API tasks for several months, 14 days of logs revealed three distinct p95/p99 patterns and a retry storm I had been creating from my own client. This is the guardrail design I landed on — jitter, budget, circuit breaker — with the before/after numbers.
Stabilizing Claude API Structured Responses in Production — Notes on tool_use, JSON Schema, and Layered Validation
Getting Claude to return JSON takes a few lines. Keeping that JSON usable in production is a different problem. Here is the layered design I landed on after running a wallpaper classification pipeline through Claude API, built around tool_use, JSON Schema, and domain validation.
Designing Graceful Degradation for the Claude API — A Four-Tier Fallback Architecture That Keeps AI Features Quietly Alive
Once Claude API features hit real production traffic, model-level fallback alone stops being enough. This article walks through an SLI-driven four-tier degradation design, with Python and TypeScript code, SLO burn-rate alerting, and the operational trade-offs an indie developer actually runs into.
A Two-Tier Setup — Haiku 4.5 Orchestrator with Opus 4.6 Worker for Balancing Cost and Quality
How an indie developer's two-tier setup — Haiku 4.5 as the orchestrator and Opus 4.6 as the worker — cuts monthly API spend by roughly 70% without sacrificing the quality readers pay for.
Archiving Claude API Responses to Cloudflare R2: An Implementation Memo for Audit, Replay, and Incident Analysis
An implementation memo on persisting Claude API requests and responses into Cloudflare R2 so you can audit, replay, and triage production incidents — covering Workers waitUntil patterns, PII masking, and a D1 metadata index for fast lookups.
Absorbing the Claude API "Tool Result Submitted" Error in a Retry Layer: A Small Conversation-History Repair
How I absorbed the Claude API "Tool result could not be submitted because the previous turn was not a tool use" error inside a small retry layer, with the diagnosis order I followed after it hit a production batch.
Absorbing Claude API 529 Overloaded in Production — Resilience Patterns from a 50M-Download Indie Studio
529 Overloaded won't go away with a naive exponential backoff. Drawing on lessons from 50 million app downloads, this piece walks through queue-based absorption, model-aware fallback, and circuit-breaker design with working code.
Adding Priority and Fairness to a Claude API Job Queue — Backpressure Patterns from a 50M-Download Indie App
A practical design for adding three-tier priority queues and Deficit Round Robin fairness to a Claude API worker. Drawn from running review-automation pipelines across an indie app catalog with 50M cumulative downloads, with full Python code and production metrics from a year of operation.
Designing a Model-Selection Fallback That Survives this model is currently unavailable on Claude API
The 'this model is currently unavailable' error from Claude API behaves nothing like a 529 Overloaded or a rate limit. After six months running it across six auto-publishing pipelines as an indie developer at Dolice, I'm sharing the failure conditions I observed and the per-request model-fallback implementation that ended my weekend firefighting.
Allocating the 200K Context Window in Claude API — Budgeting System, Tools, Memory, and History in Production
Treat Claude API's 200K context as a budget rather than an open shelf. A TypeScript-backed allocation architecture that carves system, tools, memory, history, and headroom into explicit envelopes — built and tuned in a wallpaper app earning real ad revenue.
Why tool_result could not be submitted Keeps Coming Back, and How to Build a Recovery Handler That Actually Holds
Run a Claude agent long enough and one day it starts: 'tool_result could not be submitted', back to back, and retries change nothing. The error message hides four completely different root causes. Here is what I learned debugging this across the six auto-publishing pipelines I run as an indie developer, with the TypeScript recovery handler I now ship in production.
A Morning Digest Agent across App Store Connect, Play Console, Crashlytics, and AdMob — 30 days of running it on Claude Agent SDK
Opening four dashboards each morning across six apps used to eat 30 to 50 minutes of my day. Here is the Claude Agent SDK recipe that compressed it into one email, with the measured numbers from a full month.