In private development

Dashboards from a question are in development: built and tested against simulated platform services, and not released. The sample below is real chart output on synthetic data.

BI dashboards

In development
Sample on synthetic data

Dashboards from a question.

Ask a business question in plain language. Emolysis finds the tables, proposes a semantic model you confirm, builds and tests a gold table, charts it and publishes a link you control.

The path

Question to link

  1. Question

    Ask in plain language, in the app or your editor

  2. Semantic model

    Measures, dimensions and grain that you confirm

  3. Gold table

    Built from a template and proven by golden tests

  4. chart.v1

    One chart spec, drawn the same everywhere

  5. Share

    A link you control, on paid plans

The path

From a question to a link.

Five steps, each with something you can read before the next one starts. The examples are illustrations.

  1. Question

    Ask in plain language.

    A good question names the measure, the breakdown and the period. You type /dashboard and the question in the app, or ask from an editor or coding agent that supports MCP.

    Example questionExample
    Monthly revenue by region for the last 12 months, with order counts.
  2. Semantic model

    Confirm a semantic model.

    The agent searches your catalog, or the files in your project when you work locally, for tables that hold the measures and dimensions. It lists the measures, the dimensions, the grain, the joins and the filters, and you confirm or correct them. This is the step designed to catch a wrong measure, grain or join, so read it.

    Example semantic model · you confirm it
    Measures
    Revenue (sum), orders (count)
    Dimensions
    Month, region
    Grain
    One row per month and region
    Joins
    Orders to stores
    Filters
    Last 12 months
  3. Gold table

    Build and test a gold table.

    The agent fills the Aggregation / gold template for your platform, often after Dedupe / conform for messy sources, and runs its golden tests on DuckDB. The test uses input with known totals and checks every aggregate against them, including totals that cross a one-to-many join. A red result goes back to the template, not to your platform.

    gold.monthly_sales · synthetic rowsSynthetic
    monthregionrevenueorders
    2026-01North1180002021
    2026-01South960001749
    2026-01West1410002304
  4. chart.v1

    Draw it from a chart spec.

    The agent picks charts that fit the data: a KPI for a headline figure, a line for a trend, a bar for a comparison, a table for exact values. Each chart is a chart.v1 spec that names the dataset, its fields and how they map to the axes. The same spec is drawn in the desktop app and in the browser.

    chart.v1 · a line chart, excerptExcerpt
    {  "version": "chart.v1",  "type": "line",  "title": "Monthly revenue by region",  "dataset": { "source": "gold.monthly_sales", "fields": [ ... ] },  "encodings": {    "x": { "field": "month" },    "y": [{ "field": "revenue", "aggregate": "sum" }],    "series": { "field": "region" }  }}
  5. Share

    Publish a link you control.

    Publishing is the moment a dashboard leaves your machine. You choose who can open it, and the dashboard keeps one stable link: each publish adds a revision, a fixed snapshot of the rows its charts show, and the link can be revoked. Publishing shared links is a paid-plan feature; on the Free plan you build dashboards locally.

    A shared dashboard · in development
    Link
    emolysis.com/d/<id>
    Who can open it
    Anyone with the link, your organization or only you
    Revisions
    Each revision is fixed. Publishing again adds a revision under the same link
    Expiry
    Snapshot links only: an optional date. A dashboard's stable link has none
    Revoke
    Any time; this deletes the published data

Live sample

A live sample.

Every chart type the agent uses, drawn in your browser from chart.v1 specs, the way a shared dashboard is.

Sample data · Synthetic

Sample store dashboard

Synthetic data for a fictional outdoor-gear retailer with 18 stores, January to September 2026. Every order, from any channel, is fulfilled by one store. It is not a customer's data and not a result from Emolysis.

Revenue, year to date

Definitions

Revenue
revenue, version 2. Confirmed on Oct 1, 2026
Order value in euros after discounts, excluding cancelled and refunded orders.
Expression, filter and grain of revenue
Expression
sum(net_amount_eur)
Filter
order_status not in ('cancelled', 'refunded')
Grain
one row per order line
Data
Data for Revenue, year to date
MonthRevenue
Jan 2026€355K
Feb 2026€377.4K
Mar 2026€395.7K
Apr 2026€406.5K
May 2026€409.1K
Jun 2026€406K
Jul 2026€402.3K
Aug 2026€403.6K
Sep 2026€414.1K

Orders, year to date

Definitions

Orders
orders, version 1. Not confirmed
Orders placed in any channel, each counted once, excluding cancelled orders.
Expression, filter and grain of orders
Expression
count(distinct order_id)
Filter
order_status <> 'cancelled'
Grain
one row per order
Data
Data for Orders, year to date
MonthOrders
Jan 20266,074
Feb 20266,455
Mar 20266,768
Apr 20266,953
May 20266,996
Jun 20266,943
Jul 20266,878
Aug 20266,900
Sep 20267,079

Stores reporting

Data
Data for Stores reporting
StoreStores
S011
S021
S031
S041
S051
S061
S071
S081
S091
S101
S111
S121
S131
S141
S151
S161
S171
S181

Monthly revenue by region

Definitions

Revenue
revenue, version 2. Confirmed on Oct 1, 2026
Order value in euros after discounts, excluding cancelled and refunded orders.
Expression, filter and grain of revenue
Expression
sum(net_amount_eur)
Filter
order_status not in ('cancelled', 'refunded')
Grain
one row per order line
Month
order_month, version 1. Confirmed on Oct 1, 2026
The calendar month in which the order was placed, in the local time of the store that fulfils it.
Expression and grain of order_month
Expression
order_date
Grain
month
region
region, version 1. Not confirmed
The sales region of the store that fulfils the order: North, South or West.
Expression of region
Expression
store_region
Data
Data for Monthly revenue by region
MonthRegionRevenue
Jan 2026North€118,000
Jan 2026South€96,000
Jan 2026West€141,000
Feb 2026North€125,930
Feb 2026South€101,560
Feb 2026West€149,890
Mar 2026North€132,570
Mar 2026South€105,980
Mar 2026West€157,180
Apr 2026North€136,720
Apr 2026South€108,340
Apr 2026West€161,480
May 2026North€138,110
May 2026South€108,490
May 2026West€162,490
Jun 2026North€137,600
Jun 2026South€107,140
Jun 2026West€161,250
Jul 2026North€136,860
Jul 2026South€105,640
Jul 2026West€159,770
Aug 2026North€137,840
Aug 2026South€105,470
Aug 2026West€160,290
Sep 2026North€141,980
Sep 2026South€107,680
Sep 2026West€164,460

Orders by region

Definitions

Orders
orders, version 1. Not confirmed
Orders placed in any channel, each counted once, excluding cancelled orders.
Expression, filter and grain of orders
Expression
count(distinct order_id)
Filter
order_status <> 'cancelled'
Grain
one row per order
Month
order_month, version 1. Confirmed on Oct 1, 2026
The calendar month in which the order was placed, in the local time of the store that fulfils it.
Expression and grain of order_month
Expression
order_date
Grain
month
region
region, version 1. Not confirmed
The sales region of the store that fulfils the order: North, South or West.
Expression of region
Expression
store_region
Data
Data for Orders by region
MonthRegionOrders
Jan 2026North2,021
Jan 2026South1,749
Jan 2026West2,304
Feb 2026North2,156
Feb 2026South1,850
Feb 2026West2,449
Mar 2026North2,270
Mar 2026South1,930
Mar 2026West2,568
Apr 2026North2,341
Apr 2026South1,973
Apr 2026West2,639
May 2026North2,365
May 2026South1,976
May 2026West2,655
Jun 2026North2,356
Jun 2026South1,952
Jun 2026West2,635
Jul 2026North2,343
Jul 2026South1,924
Jul 2026West2,611
Aug 2026North2,360
Aug 2026South1,921
Aug 2026West2,619
Sep 2026North2,431
Sep 2026South1,961
Sep 2026West2,687

Revenue by region, year to date

Definitions

Revenue
revenue, version 2. Confirmed on Oct 1, 2026
Order value in euros after discounts, excluding cancelled and refunded orders.
Expression, filter and grain of revenue
Expression
sum(net_amount_eur)
Filter
order_status not in ('cancelled', 'refunded')
Grain
one row per order line
Region
region, version 1. Not confirmed
The sales region of the store that fulfils the order: North, South or West.
Expression of region
Expression
store_region
Data
Data for Revenue by region, year to date
RegionRevenue
North€1,205,610
South€946,300
West€1,417,810

Orders by channel, year to date

Definitions

Orders
orders, version 1. Not confirmed
Orders placed in any channel, each counted once, excluding cancelled orders.
Expression, filter and grain of orders
Expression
count(distinct order_id)
Filter
order_status <> 'cancelled'
Grain
one row per order
channel
channel, version 1. Confirmed on Oct 1, 2026
Where the customer placed the order: web, mobile app, marketplace or store pickup.
Expression of channel
Expression
order_channel
Data
Data for Orders by channel, year to date
ChannelOrders
Web26,202
Mobile app19,144
Marketplace10,418
Store pickup5,282

Orders and average basket by store, year to date

Data
Data for Orders and average basket by store, year to date
Orders, year to dateFormatAverage basket
5,093Flagship€63.56
3,508Standard€48.02
1,984Outlet€39.05
4,288Flagship€71.88
2,438Standard€54.56
1,496Outlet€35.40
5,396Flagship€79.33
2,590Standard€50.75
2,079Outlet€46.77
5,856Flagship€69.30
4,073Standard€47.55
2,319Outlet€38.04
4,550Flagship€62.79
2,910Standard€61.50
1,612Outlet€41.91
6,042Flagship€68.73
3,326Standard€47.84
1,486Outlet€36.93

Top products, year to date

Top products, year to date
ProductCategoryUnitsRevenue (EUR)
Trail running shoeFootwear3,120389,880
Rain shell jacketApparel2,210309,400
Merino base layerApparel4,050243,000
Insulated bottleAccessories6,900172,500
Day pack 24LBags1,980158,400
HeadlampAccessories3,650127,750
Hiking sock 3-packApparel7,120113,920
Trekking polesAccessories1,24099,200

Definitions

Revenue (EUR)
revenue, version 2. Confirmed on Oct 1, 2026
Order value in euros after discounts, excluding cancelled and refunded orders.
Expression, filter and grain of revenue
Expression
sum(net_amount_eur)
Filter
order_status not in ('cancelled', 'refunded')
Grain
one row per order line

Principle

Askinwords.Provethenumbers.Shareonlywhatyouchoose.

What it rests on

Five things behind every chart.

What the dashboards rest on, from the table to the pixel.

Tested

Tested before it goes live

The table behind every live chart passes golden tests first. The Aggregation / gold template is tested on input with known totals, including totals that cross a one-to-many join, so double counting and averages of averages are caught before a chart shows live numbers. Until then, a chart is labelled illustrative or sample.

Model

A semantic model you confirm

Measures, dimensions, grain, joins and filters, listed before anything is built. Confirming the model is the step designed to catch a wrong measure, grain or join. Reading it takes a minute.

Charts

Seven chart types

Bar, line, area, scatter, pie, KPI and table. Bars can be stacked or horizontal, lines and areas can be stacked, and a KPI shows one figure with an optional trend line. Numbers can be compact figures, fixed decimals, percentages or currency.

  • Bar
  • Line
  • Area
  • Scatter
  • Pie
  • KPI
  • Table

One spec

One chart spec, two places

A chart looks the same in the desktop app and in the browser. Both draw the same chart.v1 spec. Every chart also lists its data in a table, for screen readers and for exact values.

  • chart.v1
  • Accessible names
  • Data tables

Local first

Local first

Without a platform, you can build a dashboard from local files on DuckDB, signed in to your Emolysis account. You can drop in a CSV or Parquet file, ask a question and get a tested gold table and a dashboard on your machine. Connect a platform when you want the numbers to come from the full data, and publish only when you want to share.

  • CSV
  • Parquet
  • DuckDB

Sharing

Share a link, not a copy.

Publishing is the one step designed to store your data with Emolysis, and it happens only when you choose it.

  1. Anyone with the link

    Signed in or not. Use it only for data you would share that way, because anyone the link reaches can open it.

  2. Your organization

    Signed-in members of your Emolysis organization can open it. This is the default.

  3. Only you

    Only you can open it, when signed in. The setting is fixed for the link: to change it, revoke the link and publish again, which makes a new link.

  4. One link, fixed revisions

    Each revision is a fixed snapshot of the rows the charts show. Publishing again adds a revision under the same link, so the link you sent stays the same.

  5. Revoking and expiry

    You can revoke a link at any time, which deletes its published data. A snapshot link, for charts published on their own rather than as a saved dashboard, can also have an expiry date; a dashboard's stable link has none.

  6. What gets uploaded

    The dashboard's charts and the data behind them are uploaded: the table the charts read, not your full source tables.

Paid plans

Publishing shared links is a paid-plan feature. On the Free plan you build dashboards on your machine, from local files or from a connected platform. The pricing page lists what each plan includes.

See the planned plans

At first

At first, the browser viewer may open only anyone-with-the-link dashboards. Organization and only-you dashboards may need the Emolysis app until signing in on the website is available.

Sharing in the docs

Data handling

What leaves your machine.

Building a dashboard follows the same rules as everything else in Emolysis. To write code, the agent sends prompts to the AI model provider you choose, and a prompt can include table and column names, schemas and sample values from your data. With your own model key, prompts go to that provider under your key and its terms. With a paid plan's included usage or usage credits (on Enterprise, metered usage), they pass through Emolysis's metering service on the way to the model provider. That service is designed not to store or log their content; it records token counts for billing.

A dashboard leaves your machine when you publish it, and only then. What you publish is uploaded and stored by Emolysis for the audience you chose, until you revoke it, or until a snapshot link's expiry date.

What leaves your machine lists every case.

Questions

Dashboards, answered.

How a question becomes a dashboard, and who sees what you share. More in the FAQ.

How do dashboards from a question work?

You type a business question, such as monthly revenue by region for the last year. Emolysis finds the source tables in your catalog, proposes a semantic model of the measures and dimensions involved, and builds a gold table with the Aggregation / gold shape, tested like any other pipeline. It then picks charts that fit the data and draws the dashboard. You review it, change what you want, and publish it as a link when you are ready.

Who can see a dashboard I share?

You choose when you publish. There are three settings: anyone with the link, members of your organization who are signed in, or only you. Organization is the default. The setting is fixed for that link. To change it, revoke the link and publish the dashboard again with the new setting: that makes a new link with a new URL, and the old one stops opening. A dashboard shared with anyone who has the link can be opened by anyone you, or they, send it to, so use it only for data you would share that way.

Which plans can publish shared dashboards?

Publishing shared links is a paid-plan feature. On the Free plan you build dashboards on your machine, from local files or from a connected platform. The pricing page lists what each plan includes. Nothing can be bought yet.

Can I update a shared dashboard?

Yes. A dashboard keeps one stable link. Each publish, or a refresh with publishing on, adds a revision: a fixed snapshot of the rows its charts show. People with the link see the latest revision, and the most recent revisions are kept.

Can I revoke or expire a shared link?

Yes, you can revoke a link at any time, which deletes the published data. Revoking does not delete the dashboard on your machine: publish it again and Emolysis makes a new link with a new URL. A dashboard's stable link has no expiry date; a snapshot link, for charts published on their own rather than as a saved dashboard, can have one. Someone who opens a revoked or expired link sees a page that says so, without any of the data. Copies people made while a link was open, such as screenshots, are outside what revoking can reach.

What chart types do dashboards support?

The chart spec Emolysis uses defines seven types: bar, line, area, scatter, pie, KPI and table. Bars can be stacked or horizontal, lines and areas can be stacked, and a KPI shows one figure with an optional trend line. Numbers can be formatted as compact figures, fixed decimals, percentages or currencies. The same spec is drawn in the desktop app and in the browser.

Is the sample dashboard real data?

No. It is synthetic data for a fictional retailer. It exists to show every chart type the agent uses, and it is drawn in your browser from the same kind of chart spec a shared dashboard uses.

Nothing is released yet

Ask, then prove it.

Dashboards from a question are in development. Early access is by invitation while we build, starting with data engineering teams on Databricks.