Tech Stack
Architecture
Supervisor Agent -> Tool Router -> Specialized Sub-Agents (each with memory + tools) -> Action Executor -> State Persistence (Supabase). Retry logic via Inngest durable functions.Every AI agent tutorial shows you how to chain an LLM to a tool. Nobody tells you what happens when that tool times out at 3 AM, the LLM hallucinates a function call, or your agent enters an infinite loop that burns $200 in API credits.
I've built 7 production AI agents. Here's what I learned.
The Agentic Loop Pattern: Every reliable agent follows the same loop: Sense (gather context) -> Think (reason about state) -> Decide (pick an action) -> Act (execute the tool) -> Learn (update memory). If any step fails, the agent knows how to recover instead of crashing.
Memory Architecture: Short-term memory lives in the conversation context. Long-term memory goes to pgvector — embedded and retrievable by semantic similarity. This means your agent remembers past interactions without stuffing everything into the prompt. I use Supabase with pgvector because it's PostgreSQL under the hood — no separate vector DB to manage.
The Supervisor Pattern: Don't build one mega-agent. Build specialized sub-agents (researcher, writer, executor) coordinated by a supervisor. The supervisor decides which agent to invoke based on the task. This keeps each agent's prompt focused and its tool set minimal — both critical for reliability.
Error Handling That Actually Works: Every tool call gets wrapped in a retry with exponential backoff. If an LLM returns malformed JSON, the agent re-prompts with the error message. If a tool fails 3 times, the agent escalates to a human via Telegram/Slack. Never let an agent silently fail.
The Cost Control Pattern: Set a per-request token budget. Track cumulative tokens across the agent loop. If the agent exceeds the budget, force a summary and exit. I've seen agents burn $50 in a single runaway loop — budget enforcement is non-negotiable.
State Persistence: Use Inngest or Temporal for durable execution. If your server restarts mid-agent-loop, the agent resumes from the last checkpoint. This is the difference between a demo and a system you can sell to clients.
What I'd Do Differently: Start with deterministic workflows (n8n, Inngest) and only add AI agents where decisions genuinely require reasoning. Most business logic doesn't need an LLM — it needs an if-statement. Save the agents for the 20% of tasks that truly benefit from intelligence.
Want to build something like this?
I architect and deploy end-to-end AI systems — from MVP to revenue.
Let's Talk