Back to Notes

Building the Operations Brain: How I Architected an AI Fleet That Runs My Business While I Sleep

How I went from chatbot demos to a production AI operations system — specialized bots, automated schedules, a data pipeline, and executive briefings before breakfast.


1. The Gap

AI agents are everywhere. Production AI operations systems are nowhere.

Every week I see another demo. An agent that books meetings. An agent that summarizes emails. An agent that writes marketing copy when you ask it nicely. They all share the same problem: they wait for you.

I run operations at a public company that designs and sells smart audio eyewear. We're on NASDAQ. We manufacture overseas, half a day ahead of our US headquarters. We run DTC on Shopify and wholesale through retail partners. By the time I sit down at my desk, half the business day at our factories is already over.

The gap isn't "can AI do useful things." The gap is the distance between a chatbot that answers when prompted and an operations system that works while you don't. A system that monitors, collects, synthesizes, and reports — then tells you what matters before you've poured your coffee.

Here's what that gap looks like concretely:

I spent the last several months closing that gap. This is how.

2. The Architecture

The entire system runs on a low-cost cloud VPS. Four specialized bots, each with its own identity, domain expertise, and integrations.

The fleet:

BotDomainKey Integrations
Logistics BotFulfillment & inventoryERP, fulfillment platform, inventory APIs
Marketing BotAdvertising & creativeAd platforms, email marketing, analytics
Sales BotB2B pipeline & marketplaceCRM, marketplace APIs, wholesale orders
OrchestratorSynthesis & executive layerAll of the above + database, messaging

Specialization matters. Early on I tried a single "do everything" agent. It was mediocre at everything. The moment I split responsibilities, each bot got dramatically better at its domain. The logistics bot doesn't need to know about ad performance. The marketing bot doesn't care about fulfillment exceptions. The orchestrator synthesizes across all of them but delegates the domain work down.

The runtime uses an open-source bot management framework with systemd ensuring services restart on failure. Each bot runs as its own process with its own workspace — identity files, skill definitions, persistent memory, and output reports.

Over a dozen automated scheduled jobs run every day across the fleet. Inventory checks every four hours. Marketing performance pulls every morning. Sales pipeline updates twice daily. The narrative compiler runs early morning and delivers to Slack before anyone's at their desk.

None of this requires a Kubernetes cluster. None of it requires a managed AI platform. It's process management, scheduled jobs, and structured prompts on a VPS that costs less than a lunch.

3. The Data Pipeline

Bots producing insights that live in chat messages are bots producing waste.

That was my first painful lesson. The marketing bot would calculate ad return metrics to two decimal places, the logistics bot would flag inventory running low on a best-seller, the sales bot would note a wholesale lead going cold — and all of it would scroll past in a messaging thread. Rich, structured, actionable data, completely inaccessible to anything except my eyeballs.

The fix was a nightly collection pipeline. The orchestrator acts as the collector. Every night, it reads the day's bot activity across the fleet, extracts structured metrics, and pushes them to a central database.

The database schema is deliberately simple:

The retention policy follows a principle I call "summarize up, delete down." Daily granularity is useful for a month. After that, you only need weekly patterns. After a year, monthly is enough. The raw data compresses into narratives at each tier, and the granular data drops off.

The dashboard reads the database on every page load. No CSV exports, no manual data entry, no "let me pull that number for you." The bot generates the data. The pipeline moves it. The dashboard displays it. I look at it.

This is the part that separates an AI assistant from an AI operations system. The assistant answers your question. The system puts the answer where it needs to be before you ask.

4. The Narrative Layer

Raw data is necessary but insufficient. Executives don't read tables. They read stories about tables.

The narrative compiler is the most valuable piece of the entire system. It runs every morning and does three things:

  1. Reads structured data from our ERP (revenue, orders), central database (bot activity, historical trends), and the fleet (service health, job success rates).
  2. Computes a health score — a single number from 0-100 that answers "how's the business doing right now."
  3. Generates an executive narrative that gets posted to Slack.

The health score is a weighted composite. Revenue velocity, order volume trends, inventory levels on key SKUs, marketing efficiency, and system reliability all contribute.

The Slack message lands early morning. My CEO reads it in 30 seconds. He knows month-to-date revenue, which department needs attention, and if any systems are degraded. No meeting required.

DAILY OPERATIONS PULSE

Health Score: 74 ████████░░

Revenue MTD: on track | Orders: trending up
Trend: +X% vs. prior period

⚠ Marketing: Ad efficiency below target
✓ Fulfillment: On track, no exceptions
✓ Inventory: Key SKUs above safety stock

Multiple data sources monitored | All scheduled jobs nominal

The narrative compiler doesn't just report numbers. It contextualizes them. "Revenue is on track" is data. "Revenue is on track, up vs. prior period, driven by DTC with wholesale flat" is insight. The compiler produces the latter.

This is the layer where AI earns its keep in operations. Not by doing the work humans do, but by doing the synthesis humans don't have time to do — connecting data points across systems that don't talk to each other natively.

5. The Monitoring Problem

The hardest engineering problem in an autonomous system isn't building the system. It's knowing when it breaks.

Scheduled jobs fail silently. API keys expire. A bot process crashes at 2am and the process manager restarts it, but the restart loses context. If you don't actively monitor, you're running on faith. Faith is not an operations strategy.

I built bidirectional monitoring:

Layer 1: Self-checks (every 30 minutes)

The fleet runs its own health checks. Disk usage, memory, each bot's service status, scheduled job success rates. Results get logged and pushed to the central database.

Layer 2: External watchdog (every 15 minutes)

A separate lightweight process outside the fleet infrastructure validates that the fleet is alive and responsive. If the fleet goes down at 2am, I know by 2:15am.

Alerting is redundant by design. Critical alerts go to both Slack and a secondary messaging channel. If Slack is down, the secondary still works. If the fleet can't reach Slack, the external watchdog catches it and alerts through a separate path.

MetricWhat It Catches
Service statusProcess crashes, failed restarts
Job success rateSilent scheduled job failures
Disk usageLog files filling up
MemoryMemory leaks in long-running processes
Last activityBot running but not actually producing output

That last one — "last activity" — is the subtlest failure mode. A bot can be running, healthy by every system metric, and completely useless because an upstream API changed its response format. The bot "runs" but produces nothing. Tracking last meaningful output catches this.

6. The Migration

Before the cloud fleet, all of this ran on my laptop.

Local scheduled jobs, scripts with hardcoded paths. It worked — on my machine, while my machine was open, connected to WiFi, and not asleep.

That's not operations infrastructure. That's a demo that happens to be useful sometimes.

The moment that forced the migration wasn't a strategic decision. It was discovering that every single local agent had been silently failing for weeks. The binary paths were wrong after a system update. No alerts, no errors in any UI I checked, just quiet failure.

I had been operating without automated intelligence for weeks and didn't know it. That's the failure mode that should terrify any operations leader experimenting with AI agents. Not the dramatic failure — the silent one.

The migration happened in phases:

Phase 1: Easy wins. Agents that only needed API access (no local file dependencies). Inventory checks, ad platform data pulls. These moved in a day.

Phase 2: Integration-dependent agents. Anything that needed webhook delivery, database connections, or cross-bot communication. Adding webhook delivery to Slack was the single biggest unlock — it meant bots could report to where the team actually works.

Phase 3: The orchestration layer. The narrative compiler, the data collection pipeline, the monitoring system. This was the most complex because it depended on everything else working first.

The key lesson: migrate in dependency order, not complexity order. The simplest agent might depend on the most complex integration. Map the dependency graph first, then sequence the migration.

7. The Documentation Discipline

Undocumented infrastructure is temporary infrastructure. It works until you forget how it works, which takes about three weeks.

Every AI operations system needs five living documents. Not "nice to have" — needs them the way a car needs brakes.

1. System Architecture Map

A visual diagram of all systems, data flows, and API connections. If you can't draw it, you don't understand it.

2. Data Dictionary

Every table, every field that matters, who writes to it, who reads from it, and its retention policy. When someone asks "where does this metric live?" the answer should take ten seconds to find.

3. Operations Runbook

Diagnosis steps, common fixes, escalation paths. When a scheduled inventory check fails, the runbook tells you: check the API credential expiry, verify network connectivity, check if the upstream system is in a maintenance window. In that order.

4. Change Log

Chronological record of every modification. Not git commits — those are too granular. A human-readable log of what changed, why, and what it affected.

5. Integration Matrix

Every credential, where it's stored, when it expires, what breaks if it lapses. This is the document you'll be most grateful for at 11pm when an API key expires and you need to know which component uses it.

These documents are never "done." They're updated every time the system changes. The discipline isn't writing them once — it's maintaining them as living artifacts. I treat documentation updates as part of the definition of done for any system change.

8. What's Next

The system works. It's not finished.

The current architecture handles collection, synthesis, and delivery well. What it doesn't do yet is close the loop — taking the insights it generates and feeding them back into operational decisions automatically.

Three things I'm building toward:

Structured metrics extraction. Right now, some valuable data still lives as text in bot reports. When a bot identifies that ad return metrics have dropped, that number should land in a queryable column, not just in a narrative string. The pipeline needs to extract and store individual metrics, not just summaries.

Cross-bot pattern detection. Today each bot monitors its own domain independently. The next step is correlation. Marketing spend increasing while inventory on the promoted SKU is trending low — that's a problem neither the marketing bot nor the logistics bot would catch alone. The orchestrator needs to watch for cross-domain patterns and flag them before they become fires.

Decision-informed mornings. The goal isn't full automation. It's making sure that by 9am, the vast majority of operational decisions are informed by synthesized, cross-functional AI analysis. Not decided by AI. Informed by it. The human still calls the shots, but the shots are better because the data is already synthesized, contextualized, and delivered.


The Uncomfortable Truth

None of this is technically impressive by Silicon Valley standards. It's a VPS, some scheduled jobs, a few database tables, and structured prompts. The total infrastructure cost is less than $10 a month.

The hard part was never the technology. It was the discipline. Defining what each bot should own. Building the data pipeline so insights don't die in chat threads. Setting up monitoring so silent failures get caught. Documenting everything so the system outlasts your memory of how you built it.

Most organizations experimenting with AI agents are stuck at the demo stage. The agent can do a thing. Impressive. But it doesn't do the thing reliably, autonomously, on a schedule, with monitoring, with data flowing to where decisions get made.

The gap between "AI can do this" and "AI does this every morning and tells me what I need to know before my first meeting" — that's the gap worth closing. It doesn't require cutting-edge models or massive infrastructure budgets. It requires treating AI agents like what they are: operations infrastructure. And infrastructure demands architecture, monitoring, documentation, and discipline.

The bots run while I sleep. But they run because I built the system that makes sure they do.


Joaquin Abondano is the COO of Innovative Eyewear (NASDAQ: LUCY), where he oversees operations across customer support, sales, marketing, design, supply chain, and app development. He writes about AI operations, agentic systems, and building production infrastructure at jabondano.co.