How to ask questions of your business data in plain English

In AxisIQ, plain-English questions become read-only SQL on your live records, under your permissions, and can be saved as dashboard widgets.

You can ask questions of your business data in plain English when the system turns each question into a real database query and shows you that query with the answer. In AxisIQ there are two ways to do it: ask Axis, the built-in assistant, in conversation, or type a question into the Analytics query workspace and get the SQL written for you to review and run. Both run read-only SQL against your live records, both apply your permissions — fields hidden from you come back empty — and any answer worth keeping can be saved as a report or a dashboard widget. This guide covers how it works, example questions, how to check the SQL, and the limits.

Natural language business reporting has been promised for decades. What changed is that language models are now good at writing SQL. What did not change is that a confident wrong number is dangerous. The approach below is built around one rule: the answer is the query result, not the model's description of it.

How natural language to SQL works in AxisIQ

Every record type in your workspace — orders, customers, stock items, invoices, jobs, whatever your business uses — is a real table in your organisation's own database. Its fields are columns, plus id and created_at.

When you ask a question:

  1. The question and your schema go to the model. It sees which tables and columns exist (the ones you are allowed to see), not your data.
  2. The model writes one read-only SELECT. Joins, grouping, CTEs and UNION are allowed; anything that writes or changes structure is not.
  3. AxisIQ checks the SQL before running it. A parser enforces the rules: a single read-only statement, only your own record types (or system tables you have access to), nothing stacked on the end.
  4. The query runs on live data under your permissions. Each table you reference is replaced by a filtered view of it: only live rows, and any field your role masks becomes NULL.
  5. You see the result and the SQL. In Axis the table or chart appears in the conversation with the query behind it; in the query workspace the SQL lands in the editor and you press Run.

The model never computes the number itself. The database does.

Two ways to ask

Ask Axis

Open Axis from anywhere in the app and type your question. Axis decides when a question needs a query, writes it, runs it and replies with the result table or chart. You can follow up in the same thread — "now just Mumbai", "split that by month" — and it rewrites the query.

Use Axis when you want a conversation, when the answer should lead to an action ("raise payment links for those"), or when the question mixes data with documents in your knowledge base.

The Analytics query workspace

In Analytics, the query workspace has a one-line AI assist above the SQL editor. Type the question, press Enter, and the generated SQL appears in the editor. It does not run until you press Run — the point is that you review it first.

Use the workspace when you want to see and edit the SQL, browse tables and columns in the schema rail, or build something you will save.

Example questions that work well

Questions with a clear measure, a clear grouping and a clear time range get the best SQL:

  • "Total order value by city this month, highest first."
  • "Which customers ordered last quarter but not this quarter?"
  • "How many orders are in each status right now?"
  • "Average days from order to dispatch, by warehouse, for the last 90 days."
  • "Top 10 stock items by quantity sold in the last 30 days."
  • "Invoices more than 30 days past due, with customer and amount."
  • "How many new customers did we add each week this year?"
  • "Which suppliers have more than three late deliveries since April?"

Questions that need sharpening

  • "How are we doing?" has no measure. Ask about sales, collections or orders specifically.
  • "Best customers" — by revenue, by order count, by margin? Say which.
  • "Last month" — calendar month or last 30 days? The model will choose one; say which you mean.
  • Your own vocabulary. If your team says "dispatch" and the field is called shipped_on, mention the field the first time, or add a field description so people and the assistant both understand it.

How to check the SQL behind an answer

You do not need to write SQL to sanity-check it. Read it for four things:

  1. FROM / JOIN — is it looking at the right record types?
  2. WHERE — are the filters what you meant (the right date range, the right status values)?
  3. GROUP BY — is it split the way you asked?
  4. SUM / COUNT / AVG — is it adding the right thing (order value, not number of orders)?

A small example. "Total order value by city this month" might produce:

SELECT city, SUM(order_value) AS total
FROM orders
WHERE created_at >= DATE_FORMAT(CURDATE(), '%Y-%m-01')
GROUP BY city
ORDER BY total DESC

If your orders have a separate order_date and you meant that rather than when the record was created, that is the one-word fix — edit it in the editor or tell Axis "use order date". AxisIQ's SQL is a MySQL-style dialect, so most MySQL examples you find online read the same way.

Turning an answer into a report or dashboard widget

An answer you want every week should not be a question you ask every week.

  1. Save the query. From the query workspace, save it with a name the team will recognise. Axis can also save a query as a report when you ask.
  2. Add it to a report. A report in AxisIQ is a page of widgets. Add the saved query as a table, a chart or a single metric with a trend. A widget can also hold its own SQL rather than pointing at a saved query.
  3. Lay out the page and use the report's time-range selector so the same widgets answer for this week, this month or this quarter.
  4. Make it someone's home. Any member can favourite a report or set it as their own home page, so the warehouse lead lands on dispatch numbers and the founder on sales and collections.

Two other exits are useful: export the result as CSV, or open it in Axis Sheets — if the query reads one record type and includes id, the sheet stays linked to the records.

Permissions and field masking

Plain-English questions do not widen anyone's access:

  • Running queries needs the analytics query permission; building and editing shared reports needs the analytics manage permission. Both are set per role in Permissions.
  • Field masking applies inside SQL. If cost price is masked for your role, a query that selects it returns NULL for that column, and the masked values are never sent to the model.
  • Saved reports run as the viewer. A report shared with the whole team shows each person what their own role allows. Two people opening the same margin report can rightly see different things.
  • Every person's conversations with Axis are their own; nobody else in the organisation can open them.

For setting up roles, see the team and permissions guide.

Limits worth knowing

The guard rails are deliberate, and it is better to know them up front:

  • Read-only. Analytics SQL is a single SELECT. To change records, ask Axis to do it (with permissions and confirmations) or use the screens and flows.
  • 1,000 rows per result. Results beyond that are cut off and flagged. Aggregate (SUM, COUNT, GROUP BY) rather than pulling raw rows; for full extracts, use the record list's CSV export (up to 10,000 rows).
  • 5-second engine budget per query. Most aggregate questions over a growing company's data finish well inside it; a query that does not is usually asking for too much at once.
  • Your record types, not arbitrary tables. Queries can read your own record types and the platform tables your role is allowed to see, nothing else.
  • The model can misunderstand. That is why the SQL is always visible. Treat a new answer the way you would treat a new analyst's first report: check the query once, then trust the saved version.
  • AI provider. The question and the schema (and in Axis, the result rows) are sent to a third-party model provider, currently OpenAI, to generate SQL and responses. You can always write the SQL yourself in the query workspace without involving the AI at all.

Data outside AxisIQ

If some of your data lives in another database — an existing MySQL or PostgreSQL system, MongoDB, or a JSON API — you can connect it in Analytics as an external data source, read-only, and query it in the same editor. Small external tables can be joined with your AxisIQ records in one query. Field masking does not apply to external data, so grant access to those sources deliberately.

Getting started

If your data is in spreadsheets today, the CSV import guide gets it into record types; the AI workspace builder can design those types for you. Then open Analytics or Axis and ask your first question. Start a 14-day trial, no card needed, or book a demo to try it on data shaped like yours.

FAQ

Can I ask questions about my business data in plain English? Yes. In AxisIQ you can ask Axis in conversation or type a question into the Analytics query workspace. Either way, the question becomes a read-only SQL query that runs on your live records under your permissions, and you can see the SQL behind every answer.

How accurate is natural language to SQL? The numbers come from the database, so the risk is the model querying something slightly different from what you meant — the wrong date field or status. Check the FROM, WHERE and GROUP BY of the SQL shown with each answer, and save the version you have checked as a report.

Do I need to know SQL to use AxisIQ analytics? No. You can ask questions and build reports from the generated queries. Being able to read the basic shape of a query helps you confirm an answer, and this guide's four-point check covers what to look for.

Can natural language queries show data I'm not allowed to see? No. Queries run under your own permissions; fields masked for your role return NULL and are never sent to the model. Shared reports show each viewer only what their role allows.

How do I turn a question into a dashboard? Save the query, then add it to a report as a table, chart or metric widget. Any member can favourite a report or set it as their home page.

What are the limits on AI-generated queries in AxisIQ? Each query is a single read-only SELECT, returns at most 1,000 rows, and has a 5-second engine budget. Aggregate in the query rather than pulling raw rows, and use CSV export for larger extracts.