A multi-agent AI system that helps a platform team review, test, ship, and operate software with more consistency and less toil — adopted across the lead engineering team.
High-level architecture, drawn as built — tap any block
Across a growing set of repositories, code review, QA, release coordination, and reliability monitoring were largely manual — slow to perform, hard to keep consistent, and a constant pull on senior engineers' time.
Approach
I designed and built a set of specialist AI agents in Claude Code, each owning a single workflow and sharing a common library of reusable skills. The orchestrator composes them into dynamic workflows that fan work out in parallel and adversarially verify findings before anything is surfaced. They integrate with the team's existing toolchain through MCP, sit behind safety guardrails that gate anything destructive, and the read-only ones run as scheduled loops that catch drift and post a summary — never acting unattended. The newest layer points the other way — hooks and skills that sharpen the engineer's side of the loop: reframing vague prompts at session start, surfacing blindspots before unfamiliar work, and quizzing the author on their own change before it ships.
four decisions that shaped it
Organise agents by workflow, not by role — so each carries only the context it needs.
Push shared conventions into a skills layer — so knowledge isn't duplicated across agents.
Make orchestration a workflow, not a script — fan out, verify, then synthesize.
Tier model capability by stage, like infrastructure — cheap executors for mechanical work, a top-tier advisor consulted on demand, and security-critical stages pinned so no cost tier can downgrade them.
Outcome
Rolled out to the lead engineering team and in daily use — seven specialist agents sharing a 50-skill library, behind guardrails that gate anything destructive. Review quality has visibly improved and developer feedback has been consistently positive; the next iteration adds the numbers I want to manage it by — cycle time and defect leakage — because adoption should be measured, not assumed.
The fan-out, quantified
Modeled as a two-phase workflow: fan out → adversarially verify.
Best speedup8.0×vs running them one after another
The cap — not the count — sets the wall-clock; a pipeline skips the barrier's idle wave.
// how I build · sheet 03/07
How I build
Six positions I'll defend about building and scaling a platform — opinionated on purpose.
platform baseline
Ship identity, updates, and observability before a single feature.
For connected products, the platform's job is to keep a fleet secure, updatable, and visible — not to ship features on day one. Device identity, over-the-air update, and end-to-end telemetry are the load-bearing walls; bolt them on later and you're rebuilding the foundation under a live fleet.
first moveidentity + OTA + telemetry pipeline, before product features.
standardization
Pick the boring defaults before the team is big enough to argue.
The cheapest time to standardize IaC modules, secret management, pipelines, and an SLO convention is at two repos, not twenty. Every week you wait, divergence compounds and migration turns political. Standardization isn't bureaucracy — it's the paved road that lets people stop reinventing plumbing.
first movea Terraform module library + one pipeline template + one observability convention.
kubernetes
Don't run Kubernetes until the problem is Kubernetes-shaped.
AKS is right when you have many services, real scaling needs, and a team that can own the operational surface. For a handful of services it's a tax — managed container platforms ship the same outcome with a fraction of the ops. Complexity should be earned by load, not adopted for the résumé.
first movejustify the cluster against service count and on-call capacity.
reliability vs cost
An SLO is a budget — spend it, don't gold-plate.
Chasing more nines than users actually feel just burns money and engineering time. Define the SLO from real user experience, then spend the error budget: ship faster while it's healthy, slow down and harden when it's not. Reliability and cost aren't opposites — the error budget is the dial that trades them on purpose.
first moveset SLOs from user-felt signals, then let the budget drive pace.
AI in delivery
Let agents propose; never let them push unattended.
AI agents are a force-multiplier on review, QA, and release prep — but anything destructive stays behind a human gate and a guardrail. Compose them into workflows that fan out and self-verify, give them a shared skills layer so conventions don't drift, and run the read-only ones on a schedule so problems surface on their own. The win is consistency and removed toil, not autonomy for its own sake.
first moveagents behind guardrails, gated on anything irreversible.
leadership
If the team can't ship without me, I've failed.
A lead who hoards context becomes the bottleneck: the team stalls whenever they're unavailable, and burnout follows. My job is to make myself progressively unnecessary — mentor, document, pave the road — so the team moves faster than any one person could.
first movewrite it down, hand it over, and stay off the critical path.
// experience · sheet 04/07
Where I've built things
Infrastructure Architect (prev. DevOps Engineer)
Jul 2023 — present
Culligan InternationalMilan · IoT · water
Lead IoT infrastructure architecture & reliability for the Culligan IoT Platform.
Own end-to-end infra design & operations — scalability, security, cost.
Mentor the DevOps/SRE team; evolve CI/CD, IaC & Datadog across global IoT.