Longitudinal
How is this moving over time? Compare any measure against its own history to see trend, seasonality and inflection.
this period vs. last · YoY · run-ratethe shape at the origin of meaning
Performance Intelligence for the people who actually have to read their numbers — owners, general managers, family-business operators. Drop a CSV, get the analyses that matter, decide better.
Generic BI tools hand you a blank canvas and breed analysis-paralysis. GestaltBI is opinionated about which cuts to show first — three lenses that answer the questions operators actually ask — then gets out of the way once you know what you're looking at.
How is this moving over time? Compare any measure against its own history to see trend, seasonality and inflection.
this period vs. last · YoY · run-rateWho's winning right now? Rank and compare across customers, products and territories at a single point in time.
by customer · by product · by regionWhat's actually driving the move — volumes, prices, costs, or some combination? Attribute the delta to its causes.
Δ = volume + price + cost effectOne synthetic indicator with the right cadence, objectivity and operational utility.
GestaltBI comes from a tradition of management accounting that puts gross margin first — because it's the only synthetic indicator that's fast, honest and useful enough to learn from daily.
Updated by every single transaction — not a quarterly close. The signal moves at the speed of the business.
Built on the matching principle — no allocation guesswork, no overhead apportionment games to argue about.
Concrete enough to act on tomorrow. It connects directly to the levers an operator can actually pull.
Your data already lives in a sheet. GestaltBI meets it there, infers a sensible configuration, and renders the full visualization stack — no data team, no pipeline to stand up.
Start from any tabular dataset — a CSV, a worksheet, a sheet. Headers in the first row, that's the only contract.
One shared engine — @gestaltbi/infer — reads your columns and proposes types, geo/time tags, codes and human labels. Same heuristics everywhere, in Italian and English.
Out comes a six-file config bundle. Commit it to a repo and the client renders it live — or fine-tune in the desktop editor first, with a rete.js graph for the processing pipeline.
The client ships with a route that fetches your six config files straight from GitHub via jsDelivr and renders a fully-configured visualization stack against them. No rebuild. No deploy. No backend.
Start from sample-config — a worked example of all six files.
Replace data.csv, adjust the structure tags, push.
Anyone with the URL gets your live dashboard. Pin a SHA for a frozen, reproducible demo.
One inference engine, one streaming runtime, three ways to author config, and a client that renders it all. Every piece is open source and built to be used on its own.
The Angular 21 client — a mode × view dispatch shell that runs CSV-imported data through a configurable pipeline and renders maps, charts and tables. Deploys to GitHub Pages.
Framework-agnostic streaming pipeline. Compose named ops over RxJS observables with JSON-defined process graphs. Eleven built-in ops — geocode, aggregate, heatmap, regionify and more.
Pure-JS inference engine — the single source of truth shared by Sheets, Excel and the editor. Reads a table, proposes types, tags, codes and labels. Change a heuristic here, every tool follows.
Tauri 2 + Angular desktop editor for config repos. Purpose-built UIs for each of the six files, a rete.js processing graph, drop-a-CSV scaffolding, and one-click atomic commits via the Git Data API.
Google Sheets add-on. Reads the active sheet, previews the inferred config in a sidebar, and downloads the six-file zip — ready to drop into the editor or commit to a repo.
Excel Office add-in, fully static — no server, no build. The taskpane reads the active worksheet, previews the inference, and downloads the same six-file bundle as its Sheets sibling.
Plus maintained forks of the data libraries the stack depends on — olap-cube-js, pandas-js and parquetjs — kept alive where upstream went quiet.
The config-driven, op-based core means GestaltBI grows with you — new analyses, new data sources, new authoring surfaces — without forking the client.
The OpRegistry maps op names to classes for dynamic instantiation. Ship a custom op, register it, reference it from processing.json — the processor walks your graph the same way it walks the built-ins.
A rete.js node graph in the editor round-trips with the JSON — connections express the require[] dependencies. Design the dataflow by dragging, not by hand-editing arrays.
Inference heuristics already speak Italian and English geo & time vocabularies. Because the engine is one shared module, teaching it new column conventions improves every authoring surface at once.
Author against a local folder, a private remote, or no remote at all. The editor uses your own git credentials and never phones home — your data and tokens stay on your machine.
Open the live demo, fork the sample config, or browse the source. Everything is open and MIT-licensed.