Run a Snowflake data platform with three specialist agents

Zia Said, a solo data engineer, split ingestion, dbt modelling and BI across three Claude Code agents that coordinate only through committed Git documents, and one handoff turned a data gap into enforced freshness tests.

Done withClaude Code· Oct 16, 2026

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.

Try it

With Claude Code· 5 parts to fill in

You are the [analytics engineer] agent for our [Snowflake] warehouse. You own [the dbt transformation layer] and nothing else. Before you build on a table another agent owns, read its contract in [the shared Git repo]/contracts. If data looks wrong or a contract is missing, do not guess: write a dated handoff file in [the shared Git repo]/handoffs addressed to the owning agent with From, To, Date and Re headers, commit it, and stop work on that model. When an answer needs a business decision such as scope or cost, write it up for me and wait. Once a contract is agreed, add consumer-side freshness and schema tests to CI and report when they are green.

Square brackets are the parts to fill in. The prompt is ours; the story is theirs.

Where they said it

Related