How Muvia works, from the source to Monday's PDF.
Muvia copies data from the systems you already run, organises it in a model, lets you analyse it in SQL or with the assistant, and puts it in front of the people who decide. The analytics engine is built on ClickHouse and runs in the cloud, in the AWS Milan region.
The platform, layer by layer.
Six layers on one analytics engine, one per company. Every product leads to its detail.
Model
Connect
One analytics engine per company, in the cloud on AWS Milan
Explore the platform, layer by layer.
Pick a layer: the products that make it up and where to read more.
Connect
Files, databases and applications become tables in your company's analytics engine: copied incrementally, never queried live.
Go to the detail- ERP · SQL Serverincremental · 07:00
- CRM · Salesforcehourly · 06:30
- Budget 2026 · Exceluploaded yesterday
- Marketing · HubSpothourly · 06:45
Model
Datasets with stable fields and the Project Map from source to report: dashboards, reports and alarms stand on them.
Go to the detailMargin by customer
Certified
customer, revenue, margin %
Orders by week
Draft
week, orders, channel
Lineage
- erp.orders
- Margin by customer
- Management dashboard
SELECT channel,
sum(margin) / sum(revenue) AS margin_pct
FROM margin_by_customer
WHERE month = '2026-09'
GROUP BY channeldirectonlinedistributors
- Item C-11407:42Stock below the minimum · owned by purchasing
- Distribution-channel customer06:00No orders for 45 days · to sales
Scheduled reports
The week on 1 pageMonday 07:00 · PDF to 6
Ask
Athena answers inside Muvia; the AI assistants you already use connect to the same server.
Go to the detailWhy did the distributor margin drop in September?
- muvia · query_sqlinvoices, discounts and costs — ERP
- muvia · query_sqlclosed deals — CRM
The distributor margin went from 31% to 24%. Two causes weigh on it: the average discount rose from 8% to 13% on three customers, closed at the end of the quarter, and shipping costs are up 9% since August.
Distributor margin, by weekwk 34–39
Roles
- ControllerRead dashboards and reports
- SalesSales and customers
API keys
- Key for the ERPRead-only
Audit
- Sign-in with passkey08:12
- Role changed09:40
- API key created11:05
The log is sealed every night.
Featured products.
The six most projects start from.
- Live IngestLive Ingest: CSV, Excel, SQL Server, PostgreSQL, MySQL, Oracle, Salesforce, HubSpot, Dynamics 365 and more: every source becomes a table.Connect
- DatasetsA query's result with stable fields, read by dashboards, reports and alarms.Model
- FunctionsPython on a fixed base: pandas, scipy, scikit-learn, onnxruntime and joblib.Analyse
- DashboardsDashboards by area and by role, also on a wall screen in kiosk mode.Act
- AlarmsThresholds with a register: acknowledge, classify and annotate.Act
- Athena AIAnswers on the project's data, SQL written, fixed and explained, charts. It always shows the query it ran.Ask
1Connect
Your data stays in your systems. Muvia keeps an up-to-date copy.
With Live Ingest, every source becomes a table and a query in your company's own database. Dashboards, reports and alarms work on that copy, so your ERP does not take a query every time someone opens a chart.
- FilesUpload the file and it becomes a table, ready to query.
- CSV
- Excel
- DatabasesCopied on a schedule, incrementally, over an encrypted TLS connection. Never queried live.
- Microsoft SQL Server
- PostgreSQL
- MySQL and MariaDB
- Oracle
- ApplicationsReady-made connectors for the common services, plus a generic one for anything that exposes a REST API.
- Salesforce
- HubSpot
- Microsoft Dynamics 365
- Google Sheets
- SharePoint
- OneDrive
- SFTP
- Generic REST API
- MachinesWith Muvia Industrial, an edge node on the shop floor reads the PLCs and sends the data to Muvia.
- Siemens S7
- OPC UA
- Modbus TCP
How a copy works
- One table and one query per source
- The table holds the copied data; the query is where analyses and dashboards start from.
- On a schedule
- Copies run on their own, as often as you set for each source.
- Incremental
- With a date or counter column, after the first copy Muvia brings over only new or changed rows. For files and apps, the source decides the mode.
- If a copy fails
- Muvia removes the rows it had written; a failed replacement leaves the table as it was.
Three ways to write a copy
For each source you choose what happens to the data already copied when new data arrives.
| Mode | What happens |
|---|---|
| Replace | The table is rewritten with the contents of the latest copy.For example: the price list or the supplier master data. |
| Append | New rows are added to the ones already there.For example: stock movements or meter readings. |
| Update | Existing rows are updated and new ones added.For example: orders, which change status until they ship. |
2Model
Numbers with a contract, from source to report.
Every dataset declares its fields, with role, type and unit, and the query column each one reads. Dashboards and reports point at the fields, not at columns: when the source changes, they do not need rebuilding.
- Datasets with stable fields
- Every field has an identifier that never changes. Dashboards and reports point at the field, not at a column name: when the source changes, you do not rebuild them.
- Certified Datasets
- A dataset moves from draft to certified, or is retired. Certified ones are offered first, and Athena prefers them.
- Project Map
- From a number in a report, trace back to the field, the query and the source it comes from. Before changing something, see what depends on it.
- SourceSQL Server, ORDER_LINES
- Querysales_lines
- DatasetSales.margin
- DashboardMargin by customer
- ReportMonday PDF
3Analyse
Ask in SQL. Save the answers. Print them.
Queries run on a read-only login against your company's database, so you can explore as much as you like without any risk of changing a record.
SELECT c.company_name,
sum(l.amount - l.cost) AS margin
FROM sales_lines AS l
JOIN customers AS c ON c.code = l.customer_code
WHERE l.date >= toStartOfYear(today())
GROUP BY c.company_name
ORDER BY margin DESC
LIMIT 10- SQL editor
- The query workshop: write, run, look at the result, save. Every copied source is already a table you can query.
- Saved queries
- The queries you use often stay saved in the SQL editor, ready to reopen and run again when you need them.
- Notebooks you can print to PDF
- Text, query, table and function cells in sequence, evaluated over the chosen period. The result is a document you read on screen and print to PDF.
- Python functions and machine-learning models
- When SQL isn't enough, write a Python function with pandas, scipy and scikit-learn, or upload an ONNX or joblib model your team trained, and put it in a flow that runs on a schedule.
Try it first, with no side effects
A flow in trial mode really runs on the data, but its effects are recorded instead of carried out. You see what would happen, then decide.
- No writes to the database
- No commands sent to PLCs
- No emails sent
4Act
The numbers reach the people who act on them, in the form they will use.
Some people watch a screen on the floor, some read a PDF on Monday morning, some only want to hear about it when something goes out of bounds. Muvia covers all three from the same data.
Dashboards
Charts and indicators on one page, opened in the browser or left running on a wall screen in kiosk mode.
The logistics manager has today's shipments on the warehouse screen.
Scheduled PDF reports
A notebook becomes a PDF at the time you choose. Every copy is archived and emailed to the people who should get it.
Every Monday at 8, management gets the week's sales and margins.
Alarms
Thresholds on your data that open an episode when they are crossed. Every episode goes into a register, where it is acknowledged, classified and annotated. When late data arrives, the outcome is recomputed.
An item's stock drops below its minimum: an episode opens and the warehouse acknowledges it.
Flows
Chains of catalogue functions or your own Python functions, running in the cloud on the platform's data.
An indicator that combines sales with quality rejects, computed by a Python function.
Notification channels
Set up once where alerts should go, and every alarm reuses them.
Production alarms to the shift supervisor, warehouse alarms to logistics.
If you would rather ask than write SQL, there is Athena.
Meet AthenaAthena answers questions on your project's data, writes, fixes and explains queries, builds charts and widgets, and searches the documents you upload. It always shows you the query it ran, so you can check the answer.
The assistants, one per job
- Athena
- SQL assistant
- Script assistant
- Chart assistant
Each assistant is a module your company chooses whether to switch on. The assistants use language models from third-party providers.
For developers: Muvia's data inside your own systems.
When another program needs the numbers you built in Muvia, there is no need to export files.
- Read-only REST API
- Projects, datasets with their rows, and edge nodes, read with an API key. The API reads; it does not change anything.
- Signed webhooks
- Muvia calls your systems when something happens. Every call is signed so you can verify where it came from, and every delivery is kept in a log.
- GET/v1/company
- GET/v1/projects
- GET/v1/projects/{project_id}/datasets
- GET/v1/projects/{project_id}/datasets/{dataset_id}/rows
- GET/v1/projects/{project_id}/nodes
Muvia Industrial
Machines to read as well?
Muvia Industrial adds an edge node that reads the PLCs on the shop floor and brings line data into the same engine as sales, purchasing and quality.
Bring us a question you can't answer today.
We start from a real question your business has and walk the path from source to dashboard with your systems, not a demo dataset.