Request a callbackBook a call
ai data analyst

AI Data Analyst: every question answered from your own database, built at $0

An AI data analyst is a model that answers business questions by writing and running SQL against your own database, then returning the number with the query it used. Most of them are unreliable for one reason: the model guesses at column names it has never read. Axionry builds one that cannot. It is blocked from executing SQL against any table whose schema it has not just inspected, enforced by a signed token rather than a line in a prompt. It runs inside your own infrastructure against a read-only replica, so your database credentials never leave your network.

Proof point
Running in production across two databases at AccioJob
Try a question
1Question

How many free signups from June converted to paid, by week?

2Schema read
customers

plan tier is a column here, not a separate status table

subscriptions

one row per plan change, so take the first paid one

Schema proof issued, expires in 15 min
AQIAaPr2xQAAAACqL3d1Zw
3Verified SQL
SELECT DATE_TRUNC('week', s."startedAt")
         AS "Week",
       COUNT(DISTINCT c.id) AS "Converted"
FROM   customers c
JOIN   subscriptions s
         ON s."customerId" = c.id
WHERE  c.plan = 'free'
  AND  s.plan = 'paid'
  AND  c."createdAt" >= DATE '2026-06-01'
  AND  c."createdAt" <  DATE '2026-07-01'
GROUP  BY 1 ORDER BY 1
WeekConverted
2026-06-01214
2026-06-08188
2026-06-15243
2026-06-22201

Stage three refuses to run unless it is handed a valid token from stage two for a table in the query. The model cannot skip the schema read, because the check is a signature in code rather than an instruction in a prompt.

Every source, one surface

Connect the databases you already have. All of them, at once.

Most companies do not have a data problem, they have a six places problem. The analyst sits above all of them and treats them as one schema, so a question never has to know which system the answer lives in.

Relational

The primary store for most products, and where most questions end up.

  • PostgreSQL
  • MySQL
  • MariaDB
  • SQL Server
  • Oracle
  • Amazon Aurora
  • CockroachDB
  • SQLite
Warehouse and columnar

Where the history lives once it is too big to keep in the product database.

  • Snowflake
  • BigQuery
  • Amazon Redshift
  • Databricks
  • ClickHouse
  • DuckDB
Document, wide-column and search

Usually holding the events, the logs and the half-modelled things.

  • MongoDB
  • Cassandra
  • ScyllaDB
  • DynamoDB
  • Elasticsearch
  • OpenSearch
  • Redis
Files and sheets

The unstructured half. Nearly always where the number somebody actually wants is hiding.

  • Google Sheets
  • Excel
  • CSV
  • Parquet on S3 or GCS
  • Airtable
  • Exported reports
01

One question, several databases

Your users are in Postgres, your events are in ClickHouse and your billing is in a warehouse. A question that spans all three is normally three exports and a spreadsheet. Here it is one statement: the tables are federated so the join happens in SQL, and the answer comes back as a single result rather than something a human stitched together at the end.

02

Databases in different VPCs, or different accounts

The usual blocker, and it is a networking problem rather than an analytics one. A private read path is built between the accounts, peered or through a private endpoint, so the analyst can reach both and neither database is ever exposed to the internet. Nothing is copied to a third location and no credential leaves your infrastructure.

03

Structured and unstructured, in the same answer

The spreadsheet finance maintains by hand, the CSV the ops team exports every Monday, the Parquet sitting in a bucket: these get registered as queryable tables alongside the real ones. You get the data lake outcome, structured and unstructured queried together in one place, without buying a data lake or hiring someone to run it.

If the data cannot leave

The entire pipeline runs on your own private LLM.

By default the rows never leave your infrastructure: the SQL runs inside your network and only the question and the table definitions reach a hosted model. Where even that is outside policy, the whole thing moves onto a model on hardware you own. vLLM serving on your GPU or a dedicated instance in your own cloud, the analyst reaching it over a private network path, and nothing crossing your perimeter at all. Fully air-gapped deployments with no outbound access are supported.

  • No question, schema or answer leaves your network
  • Same engagement, not a second project or a second bill
  • Where regulated healthcare, finance and public-sector teams usually start
  • How the private deployment works
See how this works
How you pay

Get your AI data analyst built at $0.

That is not a discount. It is when you pay. The work is split into checkpoints with acceptance criteria written down before anything starts, and each checkpoint is invoiced only after you have seen it and accepted it. No deposit.

$0 to start
You hold every dollar until a checkpoint is delivered and you accept it. No approval, no invoice.
Fixed cost, unlimited features
Or hire the team outright: one fixed monthly cost, unlimited feature development, any stack.
The engineer takes your call
The person on your first call is the one who architects and writes it. No account managers, no bench time.

A US agency quotes $50,000 to $150,000 for the same build and asks for 40 to 50% of it before a line is written. Account managers, project managers, sales commission and bench time. None of it appears in your product.

Architecture diagram of an AI data analyst that can only read: a question asked in Claude or ChatGPT goes to an MCP server running in your cloud, through a semantic layer of your metrics and definitions, into generated SQL, then a validation step that enforces read-only access, row limits and cited numbers, before it reaches a read-only replica. The answer returns with the numbers cited, and a write is refused by the database itself.
Every answer comes from a read-only replica through a validated query, with the numbers cited.

What is an AI data analyst?

It is not a chatbot bolted onto a dashboard. It takes a question in plain English, finds the right tables, writes the SQL, runs it against a read-only copy of your database, and hands back the answer with the query attached so anyone can check it.

The people who need one are the people currently waiting. Every company has a queue of questions sitting in front of the one or two engineers who can write SQL. How many trial users from the June cohort converted is fifteen minutes of work and a three-day wait for whoever asked. The wait is the cost, not the fifteen minutes.

Why do text to sql tools get the answer wrong?

Because the model is allowed to guess. Most text to sql products paste a schema dump into the prompt and hope it gets read. On a large schema the dump is truncated, and the model fills the gap with a column name that sounds plausible. It asks for a signup date column that does not exist, the query fails, it tries again, and eventually it lands on something that runs. A query that runs is not a query that is right.

The second failure is quieter and worse. The join is valid SQL and returns a believable number from the wrong relationship. Almost every production database has a legacy column kept for backward compatibility, and anybody who was not told will keep joining on it for years. Nobody notices, because the number looks like a number.

Neither problem is solved by a better model. They are solved by not letting the model near the query until it has read the schema.

How does natural language to SQL stay correct on a real schema?

By removing the ability to guess rather than asking politely. The build runs a three-stage sequence. Stage one returns your business context and a short-lived signed token. Stage two takes that token and returns the exact table definitions for the tables named, issuing a second token scoped to each individual table. Stage three refuses to execute anything unless it is handed a valid token for a table in that query, and the tokens expire after fifteen minutes.

The effect is easy to state. The model physically cannot run a query against a table whose schema it has not just read. That is not an instruction it might ignore under pressure. It is a signature check in code, and it fails closed.

Result size is capped too, which sounds like a limit and works as a correctness feature. A query returning more than a few kilobytes is rejected, so the aggregation has to happen in SQL where it is verifiable, rather than the model pulling ten thousand rows and doing arithmetic on them out of sight.

Where does it run, and who holds the database credentials?

Inside your infrastructure. The service is deployed in your own cloud account, pointed at a read-only replica you create, using a role your team grants. We never hold a credential to your database. In practice that is the sentence that ends a security review rather than starting one.

The role matters more than most teams expect. A blanket read-only grant can read every column in the database, including compensation, contact details and anything regulated. So part of the engagement is writing the grant list: the specific tables and columns the analyst may see, approved by whoever owns data protection at your company, and nothing outside it. A question about data that is not on the list fails at the database rather than being caught by a filter somewhere upstream.

Every question is logged with the SQL it generated, the tables it touched, how long it took and whether it errored. When somebody asks where a number came from, the answer is a row in a table rather than a memory.

What does the semantic layer actually contain?

The part that makes answers correct rather than merely valid. A schema tells the model that a column exists. It does not tell it which filter your company means by a free-tier user, or that two tables describe colleges and only one of them is the source of truth, or that a name field on a legacy table has meant nothing since 2024.

So the engagement writes that down: your glossary in your own words, the joins that are correct as against the joins that merely run, the filter behind each business term, and the tables to ignore entirely. Every company's version is different, which is exactly why this is an engagement and not a signup form. It is also where the accuracy comes from, so it is the part that gets the most attention.

How is this different from a BI tool or an AI analytics tool?

A dashboard answers the question somebody already anticipated. This answers the ones nobody did, which is most of them, and it answers them in the ninety seconds before the person gives up and guesses instead.

A vendor AI analytics tool wants your data in their cloud, or at the very least your credentials in their vault. This runs in yours, and the difference shows up the first time your largest customer sends a security questionnaire.

It also connects to the assistant your team already pays for. The analyst is exposed over MCP, so it appears as a tool inside Claude or ChatGPT in your organisation's workspace, behind your existing Google sign in. Nobody has to learn a new interface or remember another password, which is usually the difference between a tool that gets used and one that gets demoed once.

Can it query several databases at once, including different types?

Yes, and that is usually the reason a team calls in the first place. PostgreSQL, MySQL, MariaDB, SQL Server, Oracle, Amazon Aurora and CockroachDB on the relational side. Snowflake, BigQuery, Amazon Redshift, Databricks and ClickHouse for the warehouse layer. MongoDB, Cassandra, ScyllaDB, DynamoDB and Elasticsearch where the events and documents ended up.

They get federated into one queryable surface, so a join between a table in Postgres and a table in ClickHouse is a single statement rather than two exports and a lost afternoon. Where the databases sit in different VPCs or different cloud accounts, a private read path is built between them, peered or through a private endpoint, and neither database is ever exposed to the internet.

Spreadsheets, CSV exports and Parquet files sitting in a bucket are registered as tables alongside the real ones. That is the part teams assume they need a data lake for, and it is very often the part holding the number they actually wanted. Structured and unstructured, queried together, without buying a lake or hiring somebody to run it.

Can the whole pipeline run on a private LLM instead?

Yes, and for some buyers it is the only version that ever gets approved. In the default deployment the only things that leave your network are the question text and the table definitions. The rows never do: the SQL executes inside your infrastructure and the result set is rendered there. For a lot of teams that is already inside policy, and it is worth checking before assuming otherwise.

Where it is not, the entire pipeline moves onto a model running on hardware you own. vLLM serving on your own GPU or a dedicated instance in your own cloud account, the analyst reaching it over a private network path with no public exposure, and nothing at all crossing your perimeter. Not the question, not the schema, not the answer. A fully air-gapped deployment with no outbound network access is supported too.

This is the same private LLM infrastructure work Axionry already does as a standalone engagement, so it is a configuration of this build rather than a second project with a second bill. Regulated healthcare, financial services and public-sector teams usually start here instead of arriving at it after a failed security review.

Can it find correlations nobody thought to look for?

This is where a single setup pays for itself the second time. Once the databases are federated and the glossary is written, the useful questions stop being the ones somebody planned a chart for. Which acquisition channel produces users still active in month six. Whether support volume moves ahead of churn or behind it. Which onboarding variant correlates with a second purchase rather than a first.

None of those have a dashboard, because nobody knew to build one, and they are usually the questions that move revenue. The analyst can hold both sides at once because both sides now live on the same surface. It writes the query, runs it, and shows you the SQL, so your team argues with the method rather than trusting a number on faith.

What it will not do is tell you a correlation is a cause. It returns the relationship and the query that found it. The judgement stays with your people, which is the correct place for it.

What does this actually replace?

The queue, first. Every company has two or three people who can write SQL, and a line of colleagues waiting on them. Those engineers stop being a help desk and go back to building, which is usually worth more than the analytics itself.

Then the seat sprawl. Most business intelligence licences are paid for people who open the tool twice a quarter, and the seat exists only because that person occasionally needs an answer. That is precisely the use case that should never have needed a seat.

It does not replace your dashboards, and it should not try to. Standing numbers belong on a chart somebody designed deliberately. What changes is everything that is not a standing number, which in most companies is the large majority of what actually gets asked.

Has this been built before, or would we be the first?

It runs in production at AccioJob, where Neeraj is head of engineering. Two Postgres databases, the full table definitions for both held in the knowledge base, and cross-database joins handled through Postgres foreign data wrappers so a single question can span both products in one statement.

The proof chain, the grant scoping and the audit log described on this page are the ones in that system. They are not a design sketch waiting for a first client to fund them.

How an engagement runs

StageWhat happensTimeline
AssessmentRead-only access to one replica. Schema inventoried, the questions your team actually asks classified as answerable or not, the grant list drafted with your data owner, and acceptance criteria written as testable statementsFive business days from access
BuildDeployed in your cloud account, connected to your replica and to your Claude or ChatGPT workspace, with the semantic layer written for the first domain. Delivered as separately accepted checkpoints, each invoiced only after you accept itAbout three weeks
Upkeep, optionalThe semantic layer maintained as your schema moves, further domains added, and the generated queries reviewed each monthMonthly, cancel any time

Builds start at $6,000 and most land between $6,000 and $18,000, set by how many databases are in scope and how much of the schema the first domain has to cover. Optional upkeep from $1,200 a month. The assessment is a fixed fee credited in full against the build, and nothing is payable before a checkpoint is delivered and accepted. Thirty days of defect correction is included.

Why a tool alone does not do this

On a real schema, a raw model gets it wrong nine times out of ten.

This is the number the category does not put on its homepage. Text to SQL looks solved on academic benchmarks and falls apart on the kind of database your company actually runs, with its legacy columns, its two spellings of the same idea and its tables nobody dares delete.

86.6%
GPT-4o on Spider 1.0

The benchmark everyone quotes. Clean, small, academic schemas.

10.1%
The same model on Spider 2.0

Real enterprise databases. The model that looked solved solves one task in ten.

17.1%
A frontier reasoning model, same test

Reasoning helps and does not rescue it. The gap is knowledge of your schema, not intelligence.

Closing that gap is not a model upgrade you can wait for. It is a schema the model is forced to read, a glossary written in your company's own words, and a check that refuses to run SQL when neither is present. That work is the engagement, and it is why this is priced once rather than metered forever.

What it costs

Replace the whole analytics queue for $0 upfront.

You pay nothing to start and nothing at signature. The build is split into checkpoints with acceptance criteria written down before anything begins, and each one is invoiced only after you have seen it working on your own data and accepted it. No deposit, no retainer, no seat count to forecast.

Seat-based AI analytics platformThoughtSpot, list price $25 to $50 per user per monthWhat it costs$92,521 a year at the median of 30 recorded purchases, ranging $36,736 to $231,060, plus 15% to 40% of year one again for implementation
Warehouse-native text to SQLSnowflake Cortex AnalystWhat it costsRoughly $0.20 per question in AI credits, plus the warehouse compute to actually run each generated query
Warehouse-native text to SQLDatabricks GenieWhat it costsNo per-question fee, but you pay SQL warehouse runtime, including the idle time between sessions
Quote-only BI platformSigma ComputingWhat it costsNo published price at any tier. Every number comes from a sales conversation
One more data analystUS averageWhat it costs$127,885 average total compensation, before recruiting, onboarding and the management time
This, built and handed overAxionryWhat it costsFrom $6,000 once. Optional upkeep from $1,200 a month. Nothing payable upfront

Vendor list prices as published. ThoughtSpot contract figures from Vendr marketplace data, 30 recorded purchases, February 2026. Salary figure is the US average total compensation reported by Built In. Benchmark scores from the Spider 2.0 leaderboard.

No seat licence

The people who ask two questions a month cost you nothing. There is no per-user meter, so you stop rationing access to your own data.

No per-question fee

Nothing meters your curiosity. Ask four hundred questions in a week and the invoice does not move, because the invoice is not tied to questions.

Running cost is model calls, and they are small

The expensive reasoning model is called once per question, and only after a small fast model has narrowed the schema. Model selection is ours and it is made as a cost decision, not a default. A team asking a few hundred questions a month usually spends less on inference than a single seat of the platform they were being quoted.

FAQ

Common questions.

Straight answers. If yours isn't here, ask on a 20-minute call.

Can it ever run an UPDATE or a DELETE?+

No. It connects to a read-only replica through a role with no write privilege, so a write is refused by Postgres itself rather than by a rule the model has been asked to follow. The replica is yours and you create it.

Does our data or our schema leave the network?+

The rows never do. SQL executes inside your infrastructure and the result is rendered there. By default the question text and the table definitions are sent to a hosted model, and where even that is not acceptable the whole pipeline runs on a private LLM on hardware you own, including fully air-gapped with no outbound access at all.

How many tables can it handle?+

The production system this is based on carries the full definitions for two databases at once. Table count is not the constraint. The real constraint is how many of those tables carry business meaning that has never been written down anywhere, which is precisely what the assessment measures.

Does it work on something other than Postgres?+

Postgres is where it is proven. MySQL, SQL Server, Snowflake and BigQuery are the same shape of work and the schema layer is adapted rather than rewritten. Ask on the call and you will be told plainly which of those is a port and which is closer to a rebuild.

Do we need Claude or ChatGPT for this?+

You need one of them on a paid organisation plan, because that is where your team will actually ask the questions. Sign in runs through your existing Google workspace over OAuth, so there is no new account to manage. If you would rather it sat behind your own interface instead, that is buildable and costs more.

What stops somebody asking for data they should not see?+

The grant list. The role the analyst uses can only read the tables and columns your data owner approved, so an out-of-scope question fails at the database. Row-level security is available where a team needs per-user scoping on top of that.

Who owns it when the engagement ends?+

You do. It runs in your cloud account, the code and the semantic layer ship into your repository, and all our access is removed at handover with written confirmation. It is deliberately written to be readable, so your own engineers can extend it without us.

How can you price this before seeing our schema?+

That is what the assessment is for, and why it is a fixed fee credited in full against the build. Nobody can responsibly quote a semantic layer without reading the schema first. A fixed quote given before that is a guess, and you are the one who ends up paying for it.

Ready to talk numbers?

Twenty minutes, straight to the engineer. No sales rep, no deck.