Cases · DuffBeauty on Google Cloud
An accounting agent that prepares the entries; the bookkeeper approves them.
DuffBeauty is a retail group with several shops and one small finance team. We built four things, in this order: the data pipelines, the warehouse, the accounting agent, and a way for employees to ask questions of their own data in Claude Team. A builder agent built and maintains all four.
Built in this order
The situation
- Several shops, an accounting system, an inventory and ERP system, and a finance team that answered every question by exporting spreadsheets.
- The group wanted an agent to prepare the entries and a person to approve them inside the accounting system. It also wanted its people to ask questions of the data directly in the AI tool they already used.
- It did not want to depend on a platform we own. The data, the pipelines, the warehouse, and the agents' tools live in the group's own Google Cloud project, and the group itself controls access.
The whole platform, one step at a time, with the reason and the safeguard at each step, is in a technical guide under Resources.See how it is built →
The parts, and the one that built them
1. The pipelines and the warehouse
- Comes in
- Every night: the accounting system, the inventory system, each shop, and the day's exchange rates.
- The agent
- Scheduled jobs pull each source through one shared client per system, keep the raw files unchanged as evidence, and load them into BigQuery in layers: raw, staging, core, and finance-ready marts. Ledgers, supplier balances, orders and payments, invoice lines converted to the home currency, cost of goods.
- The people
- Nobody exports a spreadsheet to answer a question. The finance team gets every figure from one place.
- Sign-off
- "Acts alone", on a schedule. When a source changes, the pipeline reports it instead of guessing.
- Traceable
- Every figure in a mart traces back to the raw file it came from and the night it arrived.
2. The accounting agent
- Comes in
- Orders, payments, and supplier invoices from the warehouse.
- The agent
- Prepares the entries: matches, applies the group's bookkeeping rules, converts currencies, checks its own work, and writes the proposed lines in the format the accounting system imports.
- The people
- The bookkeeper no longer retypes and matches, and spends the time on the exceptions and on approving a batch instead of entering one line at a time.
- Sign-off
- "Asks first", always, and the agent asks inside the accounting system, where the bookkeeper already works. Nothing is posted until a person approves it there.
- Traceable
- Each proposed line links to the order or invoice it came from and the rule that was applied.
3. The MCP servers: employees ask questions of their own data
- Comes in
- "Why did costs rise in that shop last quarter?" from an employee in Claude Team.
- The agent
- The question reaches an MCP server, a program that gives your AI assistant a defined way to read your data. It runs on Cloud Run, behind sign-in, reads only what that employee may see, and answers with the figures and the records behind them. Exports go out as files the team can open.
- The people
- The person who used to build the spreadsheet now reads the answer and spends the time on what it means.
- Sign-off
- "Acts alone" for questions inside the company. "Asks first" before any figure leaves it.
- Traceable
- Every answer is saved with its query and the tables it read.
4. The builder agent
- Comes in
- A new source, a changed field, a new question the finance team wants answered.
- The agent
- An agent works in Claude Code, inside the project's own rules: a written scope before any pipeline, data contracts per table, guardrails and checks, and decision records. Its setup scripts show a plan and change nothing until a person approves it. It writes the pipelines, the tests, and the MCP servers, and maintains them.
- The people
- The operator is the person at the group who checks and signs off the agents' work. Here the operator reviews a plan and approves it, instead of writing the data pipelines by hand. Every change to the cloud waits for the operator's approval.
- Sign-off
- "The operator signs off" on every change to the cloud; a change to production needs a second, explicit approval.
- Traceable
- Every material change has an entry with an id; every decision has a record.
The tech choices, and why
The choices are ours and we would make them again. Each has one reason.
- Google Cloud, in the group's own project
- The data stays with the group, the group itself controls access, and nothing moves into a platform we own.
- BigQuery in layers: raw, staging, core, marts
- Every finance-ready figure traces back through the layers to its raw file.
- Cloud Run jobs, one nightly Workflow, Cloud Scheduler
- The smallest set of services that runs a nightly pipeline reliably, with no orchestrator to operate.
- Unchanged raw files in Cloud Storage
- The raw files are the evidence: when a figure is questioned, the file it came from is still there.
- No service-account keys anywhere: code ships from Git through Cloud Build, and each job runs as its own identity
- There is no key to leak, and each job and service reaches only what it needs.
- Setup scripts that show a plan and apply it only on approval
- The operator sees what will change before it changes; the scripts skip what already exists.
- MCP servers on Cloud Run with sign-in, not a shared API key
- Each employee sees what they may see; access is per person and reversible.
- Read-only access to the source APIs, which the code enforces
- The pipelines can never write back into the systems of record.
Before and after
To answer a question about costs, someone exported data from three systems, and it took two days.
The employee asks in Claude Team and gets the answer, with the records behind it.
Entries were typed and matched by hand, one line at a time.
The agent prepares them; the bookkeeper approves a batch inside the accounting system.
Adding a source was an IT project with a quote.
The builder agent writes the pipeline from a scope brief; the operator reviews the plan.
The stack in this case
We name each product so you can see whether this setup fits the stack you already have.
Google Cloud
- BigQuery
- Cloud Run
- Workflows
- Cloud Scheduler
- Cloud Storage
- Secret Manager
AI tools and connections
- Claude Team
- Claude Code
- Model Context Protocol
- GitHub
Product and company names and marks are trademarks of their respective owners, used to identify the products referred to. No endorsement or partnership is implied. Google Cloud, BigQuery, and Cloud Run are trademarks of Google LLC. The Model Context Protocol mark is owned by LF Projects, LLC.
Sources
- Google Cloud: Cloud Run documentation
- Google Cloud: Workflows documentation
- Google Cloud: Cloud Scheduler documentation
- Google Cloud: BigQuery documentation
- Google Cloud: Cloud Storage documentation
- Google Cloud: Secret Manager documentation
- Google Cloud: Cloud Build documentation
- Model Context Protocol specification
- Anthropic: Claude Code
Case written 24 October 2026, from the project as built; technology references checked the same day.
DuffBeauty has agreed to be named in this case.
If your finance team answers questions by exporting spreadsheets, let's talk.
Book a conversation