Case study · AI engineering

Two agents on one data layer, and not a single number from memory.
OnlyFacts publishes the Australian climate data that newsrooms quote by name. We built the agent that answers their readers in plain English, grounded in a live query every time, and cited like everything else on the site.
What it changes: A reader gets the figure they came for in one question, instead of hunting nine data sections and emailing the team. And the answer carries its source, so it is safe to republish.
- Client
- OnlyFacts.io, Australia
- Sector
- Climate data, nonpartisan fact tank
- Engagement
- 2025 to ongoing
- Status
- Live in production
- What we built
- Two agents on a dedicated data layer
- Licence context
- Data published under CC BY 4.0, free to republish with attribution
- Grounded retrieval
- 190 data tools
- Calculator tool
- Deep research agent
- Source citations
- Guardrails
- Evaluation suite
190
Data tools, one per view
75%
Less data per report
< 3
Weeks to a working pilot
2
Agents on one data layer
The ask
A reporter is filing on deadline. She needs one number: electric vehicle registrations in a single Sydney postcode, against the rest of New South Wales. It is published, but reaching it means working out which of nine data sections holds it, reading a ranked list thousands of rows long, then opening more pages for the state and the prior year.
Most give up and email the team. Hours of a small team’s week went on answering questions the database could already answer. And OnlyFacts publishes under CC BY 4.0, so a wrong number does not sit on the site waiting to be corrected. It travels.
A data layer, not a chatbot
So we did not point a general model at the site. We built a dedicated data layer of 190 tools, one per published view, each bound to that view’s chart type. The agent cannot ask what the site cannot answer. Every sum goes through a calculator call, the open web is switched off, and every figure is shown with the query that produced it.
Essential Agent
Live on onlyfacts.io. Answers at national, state, LGA and postcode level, grounded in the database.
Deep Research agent
Takes a multi step question and returns one synthesised report, at 75% less data per run than the naive approach.
Guardrails, not vibes
No open web, no uploads, no code execution. Asked for a projection it cannot support, it declines in plain words.
How it answers one real question
Taken word for word from the live agent: “What is Australia’s emissions trend with state and sector breakdowns?”
- 01Answerability check. It confirms every dimension exists before any tool runs. If one were missing, it stops and offers three questions it can answer.
- 02Query the data. Two separate tool calls, national then by state. It may not bundle two questions into one query.
- 03Calculator, not head. The gap to the 2030 target, 43 minus 24.7 equals 18.3, is worked out with a calculator call rather than in its head.
- 04Answer, cited. A named actor in every sentence, neutral verbs, and a footnote on every figure, sourced to the DCCEEW inventory.
Why it keeps working
Most AI projects quietly get worse. The model updates, the wording drifts, and nobody notices until a reader does. So nothing ships until it clears four checks.
- Does the number match the database?
- Is that the right chart for this data?
- Is the citation there?
- Has a banned word crept back in?
The move that pays for itself
Those four checks are why OnlyFacts can switch to a newer, cheaper model the week it launches. We run the suite and show the answers did not change.
“AvestaLabs has been an indispensable partner for OnlyFacts. Their development of AI agents on our proprietary datasets combined deep technical expertise with innovative problem-solving and sound strategic advice. They have become a collaborative and trusted extension of our team.”
The job transfers
Anyone held to their numbers
Research desks
Regulators
Investment committees
Anyone who publishes data
Compliance teams
Clinical registries
Statistical agencies
More ai engineering work

AI engineering · Life insurance · Australia
They stopped choosing which calls to hear
Life Insurance Direct sells life cover on the phone. We built the system that reads every one of those calls, scores both sides, and hands the team a review queue in risk order instead of a sample.
- 9,218 in four months, both sides
- Calls read
- Live, in their own cloud
- Status
Next
Tell us which part of this looks like your problem.
We will walk you through how it was built, who built it, and what it took to keep it running afterwards.