← All workCase 01 / 07
Maxis · Data & AI DevOps
Data agents that check their own numbers
Plain-language analytics on BigQuery and Power BI, with a guardrail that validates every figure before anyone sees it.
- Role
- Design, build and run (LLMOps)
- When
- 2026 to now
- Status
- In production
The problem
Business teams could not query the warehouse themselves, so every KPI question became a ticket for an analyst.
Pointing a language model at a raw warehouse is worse than no answer: it invents tables that do not exist and numbers nobody can trace.
What I built
A multi-agent system on Vertex AI Agent Engine, built with Google ADK. A semantic router sends each question to the right specialist agent. SQL generation is M-Schema aware, so the agent works from the real schema instead of guessing it.
A grounding guardrail validates every number against live BigQuery results before it reaches a user. Multi-turn memory, query planning and anomaly detection sit around it, and when confidence is low the agent abstains instead of guessing. Answers come back as a short narrative with a chart and a table.
A sibling agent turns natural language into DAX for Power BI. To test it I built an adversarial QA harness: probes that feed the agent inputs the test suite never covered, score the answers, and turn every failure into a permanent regression case.
- questionplain language, multi-turn
- semantic routerpicks the specialist
- SQL agentM-Schema aware
- grounding guardrailchecked against live BigQuery
- answer, or abstainno unverified numbers
Where it stands
In production at Maxis, answering telecom KPI questions for non-technical users. The grounding loop eliminated hallucinated figures: every number shown has been checked against the warehouse that produced it.
I own the LLMOps loop end to end: containerised Cloud Run deploys, versioned prompts and agent configs, reliability and cost monitoring.
Internal system, so no screenshots or data are shown here.
- Python
- Google ADK
- Vertex AI Agent Engine
- BigQuery
- Cloud Run
- Power BI / DAX