CASE STUDY

ARIA

An AI analyst that refuses to make up numbers.

ARIA is a FinOps agent that answers leadership's cloud-cost questions in plain English: spend, budgets, efficiency, vendor costs. It holds no data of its own. Every answer is assembled live from two production FinOps applications, and every number can be traced to its source.

0
numbers invented, by architecture
100%
of answers on the record, with cost
ARIA
What did we spend on AI services last month?
✓ get_ai_spend
AI services came to $128,437.52 last month, up 4.1% from the prior month.View the breakdown in the reporting app →

SAMPLE EXCHANGE · FIGURES ILLUSTRATIVE

01

The problem

The data existed. Two production apps I'd built already tracked every dollar of multicloud spend and every inefficient workload. But answering a leadership question still meant knowing which app, which page, and which filter. And the obvious fix, "just put an LLM on it," has a famous failure mode: language models confidently invent financial figures. An analyst you can't trust is worse than no analyst. So the engineering problem wasn't making an AI answer cost questions; it was making one that can't answer with a number it didn't retrieve.

02

The system

ARIA is an agent loop around Claude, running on Vertex AI with workload identity: no API keys exist, anywhere. It orchestrates the two upstream apps through 34 read-only tools, executed concurrently, streaming its progress to the user in real time so they watch it fetch before they read its answer.

03

The guardrails

THE CORE RULE

ARIA Never Does Its Own Math

Every tool returns server-computed totals alongside raw records. The agent reads the computed number; it is forbidden from summing rows itself. One question, one number, one source. That single design decision eliminates the whole class of "the AI added it up wrong" failures.

LAYER 1

Rules It Reasons Under

Eight absolute data-integrity rules govern every response: every number traces to a tool result, uncertainty is disclosed, no confidence bluffing, tool errors are reported rather than papered over.

LAYER 2

Validation After the Answer

Before a response reaches the user, the backend checks it: if it contains dollar amounts but no tool succeeded, or none was called, the answer is replaced with an honest error. Fabrication is caught even if the model slips.

LAYER 3

Failures That Instruct

Every tool failure returns an explicit instruction to the model: stop, tell the user this source is unavailable, do not invent numbers. Errors steer the agent instead of silently disappearing.

04

The experience

TRANSPARENT

Watch It Work

Tool calls stream live as pills in the chat: the user sees "fetching budget variance" before the answer arrives. Trust through visibility.

CALIBRATED

Answers Sized to the Question

A lookup gets one sentence and a drill-down link into the source app. A comparison gets a table. A briefing gets the full breakdown. Depth follows the user's words, never the model's enthusiasm.

ACCOUNTABLE

Every Answer on the Record

Full audit log: who asked, what was asked, which tools ran, token counts, response time. Exportable. Plus per-response feedback and one-click CSV, Excel, and PDF export.

"I'm sorry Dave, I'm afraid I can't do that."

ARIA, declining an off-topic question — one of eleven rotating refusals, because guardrails don't have to be boring

05

The stack

Claude (Vertex AI)Extended thinkingPythonFastAPI ReactTypeScriptTailwindSQLite SSE streamingDockerKubernetesWorkload Identity Prompt cachingRate limitingCLI
06

Contact