What they did
Zia Said runs a Snowflake data platform alone and built three Claude Code agents to cover the three jobs: a data engineer agent for ingestion, scheduled loads and recovery, an analytics engineer agent for dbt models and tests, and a BI developer agent for the semantic layer, measures and dashboards. Each has a role definition, behaviour rules, its own commands and a knowledge base of conventions and post-incident rules, plus permissions scoped to what its role touches. They work in dev and test first, then production. The agents never talk to each other in a chat. They write contracts (which tables one provides and another consumes, grain, refresh cadence, freshness SLA) and dated handoff notes into a shared Git repository, each in its own folder, and every message is a commit. Business decisions are escalated to Said.
How it went
Said describes one anonymized exchange. The analytics agent found many product IDs in event data with no match in the product table and asked the data engineer agent whether it was delisting or a load gap. That agent came back with figures: the mapped IDs were about half the products but about 94% of traffic, the rest were other brands excluded by a scope filter on purpose, and only three were truly delisted. It flagged widening the scope as a business call and waited. Said kept the scope, and the agents wrote a contract with freshness tests in CI (warn at 26 hours, error at 50). Those tests soon caught a pipeline that had been loading empty data while the scheduler reported success. No cost or time figures are given.
Worth knowing
The author keeps the internals out of the post, so there is no prompt, tooling list or knowledge-base sample beyond one handoff. The design leans on scoped database permissions rather than instructions to keep each agent out of other layers, and on tests run where the data is consumed rather than on the producer's task status.