Forecasts
A line or bar chart over dates can continue past today: a dashed line inside the range its next periods are likely to fall in. Members turn it on chart by chart, in the chart's Appearance (Charts → Forecast). A KPI on a period that isn't over can say where that period is heading in the same way — On track for €205K (€190K–€222K) — turned on KPI by KPI (KPI cards → See where the period is heading). And asked where a number is heading, Axi answers with the same forecasts (Asked to Axi). This page says how they all work.
The model
Forecasts come from Timestral-28M, an open-weight time-series model published by Mistral AI. It forecasts from a chart's history alone: it isn't trained on your data and learns nothing from it. For each period ahead it gives three values:
- the median — the dashed line;
- the 10th and 90th percentiles — the band: 8 times in 10, the real figure should land inside it.
Axiome picked it by testing several models on series none of them had seen, against the plain rule of repeating the last season: it beat that rule at every grain, and its band held 76–83% of the real figures. Its misses fall more often above the band than below — a growing series tends to outrun its forecast.
Forecasts use neither the AI model your workspace chose nor any AI credits.
What is sent, and where
When a chart shows a forecast, it sends the forecast service numbers only: each line's values, period by period, and how many periods to forecast. No measure or field name, no date, no workspace, no member, no value of a breakdown. A KPI's projection sends the same: its number's days, as numbers (see KPI projections for what it reads first). So does a forecast Axi makes for an answer (Asked to Axi).
- The service runs in Axiome's own Google Cloud project in Paris (
europe-west9), beside the app, and only the app can call it. No third party is involved, and nothing reaches Mistral AI. - It stores nothing: it answers and forgets. Its logs hold sizes and timings, never a value.
- The app keeps an answer for ten minutes, and the browser for two, so the same chart doesn't ask twice.
The guards
A forecast is drawn only where it can be trusted; otherwise the chart says why — under the chart for what its data lacks, on the editor's Forecast row for how it is built.
| Guard | Rule |
|---|---|
| Chart | A line chart (split or not, on one value axis or two) or a bar chart without a Split by. Not a scatter or a pie, nor stacked, side-by-side or horizontal bars, nor lines mixed with bars, a top N or a chart of individual rows |
| Measure | A number — and not a running total or a comparison with earlier periods, whose next values are already known |
| Dates | Grouped by day, week, month, quarter or year, sorted oldest first |
| Today | The chart ends at the current period or the one before |
| Complete data | The result stayed under the row limit: 20,000 rows, about 2 MB |
| Lines | Ten at most |
By grain:
| Grain | History needed | Forecast by default | Choices | History used, at most |
|---|---|---|---|---|
| Day | 42 days | 30 days | 7, 14, 30, 60 days | 2 years |
| Week | 8 weeks | 13 weeks | 4, 8, 13, 26 weeks | 4 years |
| Month | 24 months | 6 months | 3, 6 months | 3 years |
| Quarter | 6 quarters | 2 quarters | 1, 2 quarters | 2 years |
| Year | 5 years | 2 years | 1, 2 years | 30 years |
- Half the history at most: a forecast never runs further ahead than half the history it reads — a chart of 42 days forecasts 21.
- The period still running (today, this week, this month…) is left out of the history: half a month would read as a bad month. The chart shows what it holds so far, and the forecast where it should end. A sum or a count is never expected below what the period already holds.
- Gaps: a period with no rows counts as 0 for a sum, a count or a distinct count, and stays unknown for an average, a ratio or a balance. Each line of a split starts at its own first period, so a value launched later doesn't read as zeros before it.
- Never below zero for a line that never was.
- Months need 24: with fewer, the band missed too often above on series that grow. Years were never long enough to test: their numbers are a guess.
- A filter that starts mid-period — the last 90 days by week — leaves the first period short: it is left out of the history, or, with earlier history, read whole from before the chart's dates.
Earlier history
A forecast reads the rows its chart already has. A chart of a short period — the last 12 months by month — holds too few of them to forecast, or too few to show a yearly season. Members can turn on Earlier history under a chart's Forecast: the forecast then also reads the periods before the chart's dates, up to the History used, at most above, while the chart itself shows only its own dates.
- What it reads: the chart's measures, with its own conditions and its tab's, by its date grouping and its Split by, over the periods before its dates. A date condition on another field — a signup year, a cohort — still applies. Only split values the chart shows are read, and only days that are over, in UTC.
- How often: one query per person and chart. Axiome keeps the answer for the rest of the day, for each person, on each of Axiome's servers: a chart opened all day runs it once.
- When it reads nothing: the chart's dates have no start, so it already reads everything; or they already cover as much as a forecast uses.
- If it fails, the forecast falls back on the chart's own rows, and its tooltip says how much history it used.
What it costs your warehouse. The query compares the date column with the window's two ends as they are, so a warehouse that partitions by date reads only those partitions: for a chart of the last 12 months by month, the 25 months before them. Like projections, it is opt-in, chart by chart: turn it on where a chart needs it.
KPI projections
A KPI on this week, this month or this quarter so far can say where the period is heading. Members turn it on in the KPI's Appearance, under Projection.
- What it reads: the KPI's number by day — with its own conditions and its tab's — over the year before the period, up to the last day that is over. Today counts as a day ahead, and so does yesterday while it is still running in UTC, the clock the warehouse's days are counted in.
- What it shows: what the period holds up to that day, plus the model's median for every day left. On a period's first day, nothing is in yet, and the whole period is forecast.
- The range: the days' ranges don't simply add up, since the errors of neighbouring days partly cancel out. Axiome combines them halfway between days that move together and days that don't. Tested on weeks, months and quarters cut at their start and a quarter, half and three quarters through, the range held the real end 86.5% of the time — and at least 80.7% at every point of a period.
| Guard | Rule |
|---|---|
| Dates | This week, this month or this quarter so far, on the KPI or its tab — your workspace's week start and fiscal year count. Not this year: a year ahead was never tested |
| Measure | A sum or a count. Not an average, a unique count, a rate or a balance, whose days don't add up to the period, nor a running total |
| Date | Kept by day |
| History | At least 56 days |
| Range | Never below what the period already holds, for a number that never goes below 0 |
What it costs your warehouse. Unlike a chart's forecast, which uses the rows the chart already has unless it reads earlier history, a projection runs a query of its own: the KPI's number by day over about a year. Axiome keeps the answer for the rest of the day, for each person, so it runs at most once a day per person and KPI on each of Axiome's servers. On BigQuery, a year of days scans roughly 10 to 20 times what the KPI's own number scans. Turn projections on where they help.
Asked to Axi
Asked where a number is heading — will we make the month?, what will next quarter look like? — Axi answers with the same model and the same guards as the board: a likely figure and the range it lands in 8 times in 10, which its answer gives in words.
- What it reads: the measure by its date grouping — day, week, month, quarter or year — with the conditions Axi passed, over up to the History used, at most above, through the end of the period after the running one: data dated ahead of today shows itself, and is refused. A week, a month or a quarter still running, of a sum or a count kept by day, is projected at its pace, as a KPI projection is, from its days over the year before the period. The periods after it come from the trend, as a chart's forecast does.
- When it refuses: too little history, data that stopped before the last period or runs ahead of today, a running total. Axi says why, and offers what the data allows. Data that stopped gets no projection of its running period either: its missing days would read as zeros.
- What it costs your warehouse: one query a question for the periods, read fresh, and the running period's days at most once a day per person and measure — the same read a KPI on the same measure and conditions makes, kept the same way.
- Its limits: the same hourly cap per person as the board's forecasts; the same numbers are forecast once and reused for ten minutes. Axi's turn spends its AI credits as any other; the forecast itself spends none.
- Its figures in the answer are marked as forecasts — a dashed underline, and a popover that says how they were made: see Forecasts in Axi's answers.
What a forecast can't know
It continues the chart's or the KPI's own history — its level, its trend, its seasons — and nothing else: a promotion, a price change, a new market or any event yet to come is invisible to it. Data whose latest days still settle (payments, delayed imports) can read low at the end, and pull the forecast down with them. It is the trend continued, never a target.
Plans
Forecasts, KPI projections and Axi's forecasts are included in every plan.
The model's license
Timestral's weights are © 2026 Mistral AI, under Mistral's Modified MIT license, whose notice ships with the service. Axiome runs them on its own servers; no data of yours goes to Mistral AI.