Benchmarks (preliminary)
Two questions decide whether Aito fits a problem: is it accurate enough? and is it fast enough? This section answers both with reproducible numbers โ accuracy against tuned ML baselines and public datasets, and throughput/latency against the kind of engine you'd otherwise reach for.
We try to be honest about where Aito wins and where it doesn't.
Results at a glance
Every figure below is generated from a committed benchmark run โ follow any row to the page that earns it.
Accuracy, against the best tuned baseline on the same data:
| Task | Aito | Best baseline | Training time |
|---|---|---|---|
| Invoice routing โ acceptor (link target) | 61.4% (v2) | FLAML 56.2% | 0 s vs 418 s |
| Invoice routing โ GL code (32 classes) | 68.7% (v2) | FLAML 65.7% | 0 s vs 418 s |
| Invoice routing โ processor (high-cardinality) | 23.9% (v2) | FLAML 19.4% | 0 s vs 418 s |
| Expense category (48 classes) | 79.8% (v1) | LightGBM 76.1% | 0 s vs 221 s |
| Invoice line โ SKU matching (live catalogue) | 83.6% (v2, the demo's own query) | BM25 given the same history 89.2% โ ahead | 0 s vs an index build |
| Support triage, five decisions (held-out tickets, new wording) | 61.9% | LLM + RAG 63.4%: level | 0 s, and no LLM call |
| Bank intent (Banking77, 77 classes) | 82.6% | fine-tuned transformers reach the low 90s | 0 s vs a fine-tuning run |
| At 1 000 training rows (expense, data-efficiency) | 64% (v2) | RF 57% ยท LightGBM 56% | 0 s at every scale |
How to read. The invoice-routing suite scores a 2,000-row hold-out, so each of its cells carries a 95% interval of about ยฑ1.6โ2.2 points (published per cell on the GL-coding page) โ read a gap smaller than that as a tie with the tuned AutoML search, not as a win. The expense rows' leads are confirmed by a paired test on their hold-out, so they are wins. Banking77 is the suite where a purpose-built model genuinely beats us. Line matching is quoted against the fair BM25 baseline โ the one that indexes the billing history too; against the catalogue-only index most matching systems actually ship, the margin is much larger (64.4%).
What it costs to run, on a 10M-row linked-invoice database:
| Aito v2 | vs the v1 engine | |
|---|---|---|
| On disk | 3,258 MB | 2.3ร smaller |
| JVM heap, after GC | 597 MB | 3.8ร lower in this configuration โ see footprint |
| Predict latency (GL code, mean) | 123 ms | ~20% faster here; slower on link targets |
| Cold start (GL code, first query) | 1460 ms | ~1.5ร faster |
| Ingest throughput | 21,716 rows/s | queryable immediately, no reindex |
Configuration of these two rows. The heap figure is live heap in a separate server process, read after System.gc(); linked-table priors disabled; production enables them, which the same case measures at about 2.5% more heap. The predict latency figure is measured with linked-table priors disabled; production enables them, and the same ladder measured with them enabled is within ~1.5% per target โ so both are floors for a production configuration rather than what one would measure there. Disk, cold start and ingest are unaffected.
How to read. Footprint is measured at one scale (10M rows), not as a ladder โ see what that does not yet say. Latency figures are single runs on a shared machine with ~8% run-to-run spread; read ratios, not absolute milliseconds.
Where Aito competes โ and where it doesn't
Aito is a predictive database: the same from/where you filter with is
the evidence for predict / recommend / relate, with no training step
and an explanation ($why) behind every result. That framing sets what the
benchmarks should โ and shouldn't โ measure.
- Prediction quality is the point. Against tuned gradient-boosting and AutoML pipelines (Random Forest, LightGBM, FLAML) and against an LLM+RAG setup, Aito is strongest exactly on the hard, high-cardinality, cross-table targets a bag-of-features model struggles with โ on the current baselines it tops the invoice-routing and expense suites, while purpose-built fine-tuned NLP models still lead on Banking77 โ and it gets there with zero training time and full explainability. That's the differentiator; that's what these suites measure first.
- Raw query speed is not our competition area โ and that's fine. For plain indexed search and filtering, a specialized engine (Elasticsearch, a native C++ columnar store) will be faster, and we don't try to beat them at their own game. Aito's bar on that axis is "not too slow": fast enough to serve interactive queries while carrying the prediction layer those engines don't have. The speed page states this plainly, with numbers.
The trade you're evaluating is: a single system that predicts, recommends, relates and searches over your live data with no model-training pipeline โ versus stitching a search engine to a separately-trained, separately-served ML stack. These benchmarks are here to show that trade is a good one on quality, and acceptable on speed.
Accuracy suites
Each suite is a real task with a held-out test set and published baselines, run as a booktest so the numbers are reproducible. We're starting with a focused set and will extend it with more common ML benchmarks over time.
-
Automated GL coding / invoice routing โ predict processor, acceptor and GL code from invoice text with both the v1 and v2 engines, vs Random Forest / LightGBM / FLAML AutoML. On the current baseline (after the engine's scoring redesign) Aito v2 leads top-1 on all three targets with 0 s training โ decisively on acceptor (v2 61.4% vs FLAML 56.2%) and GL code, and on processor (23.9% vs 19.4%) โ on a 2,000-row hold-out with 95% intervals published per cell. FLAML remains the strongest baseline. The rank story backs it up: v2's link priors put the true acceptor at mean rank 1.0 (v1 2.1) and cut the processor rank ~5ร vs v1.
-
Expense categorization โ predict an invoice's expense category (48 classes) from vendor, tax rate, amount and line text, vs Random Forest, LightGBM and FLAML AutoML (an LLM + RAG baseline is a pending slot). The headline: Aito v1 and v2 tie at the top of the top-1 table (79.8% each vs LightGBM's 76.1%) โ a lead a paired test separates โ and Aito is well-calibrated out of the box, with 0 s training and a
$whybehind every prediction, where the tree defaults are over- or under-confident. Reports accuracy, calibration (ECE / Brier / gap), and training time. -
Invoice line โ product matching โ match an incoming invoice line to a SKU in a live catalogue, as a cross-table link prediction, vs BM25 in three strengths. Against a catalogue-only lexical index โ what most matching systems ship โ 83.6% vs 64.4%; against BM25 given the same billing history โ the honest comparison, and the one the page leads with โ BM25 is ahead (89.2% vs 83.6%). That row measures the demo's own query, which names the supplier but not the product NAME the line is matching against; over the full sweep a query that names it reaches 91.5%, above the baseline. The page explains the difference. The differentiator is that the history layer is the database โ corrections are queryable on insert, with no reindex. Also states the open defect (popular SKUs beating thin correct ones) and carries a partner-facing implementation section.
-
Support ticket triage with an agent: five decisions per ticket (product, category, priority, resolution, first step), scored on held-out tickets that were never loaded, against an LLM alone, LLM + RAG and two hybrids. On tickets with new wording, Aito alone (61.9%) and LLM + RAG (63.4%) are level; the LLM alone reaches 26.9%. Aito's lead over all held-out tickets comes from wording it had already seen, and the page says so.
-
Intent classification (Banking77) โ 77-way fine-grained intent on 13k banking queries. 82.6% top-1 with zero training, shown in honest context against fine-tuned transformer sentence-encoders (which reach the low-90s and win on raw accuracy).
-
Smart search & recommendations โ rank the products a shopper was shown so the one they bought comes first, from the query, their profile and the products' attributes, on a generated shop log with a known answer key.
recommendwithbasedOn(0.534 nDCG@10) beats BM25 given the same purchase history (0.468), mostly on wordings the catalogue does not contain; text search still wins on brand queries. Also the For You shelf, with no query.
On the roadmap: text classification (Reuters, BBC News) and retrieval / RAG (BEIR SciFact, where Aito's inverted index feeds retrieval-augmented generation).
Speed & footprint
- Query, predict & write speed โ query latency against Elasticsearch on identical data, the v1-vs-v2 prediction head-to-head at 10M rows, and ingest throughput โ with an honest read on how Aito compares to a specialized search engine.
- Memory & disk footprint โ what the same 10M-row database costs to hold: 3,258 MB on disk, 2.3ร smaller than the v1 engine, and why the heap doesn't grow with the corpus.
- Queries under writes โ what a prediction costs on a database that is being written to the whole time the queries run: 853 ms at p50 under a continuous write load, and every answer byte-identical to a cold recompute.
How it scales
Two different questions get asked with the same word โ how much data do I need? and how big can my database get? โ and one page now answers both on one corpus (expense categorization) with one fixed hold-out, so a number on either axis is about the same data.
- Training size, 1 โ 1 000 000 rows on a corpus that grows by adding tenants, every method on the same rows: Aito leads at N=10, 1 000 and 10 000 with no training step, and is tied at N=100 (at N=1 000, v2 is 64% against a field at 57%); at 100 000 LightGBM leads by about three points; at 1 000 000 LightGBM leads Aito v1 by about 2.4 points after a 2332 s training run, with Aito v1 about 1.6 points behind Random Forest. Published as the crossover it is.
- Database size, to 10 000 000 rows: predict latency, the cost of coding a whole invoice in one batched request, and heap / mapped / disk for both engines, each measured in a dedicated server process on the compacted state โ v2 at 10M holds the database in 215 MB of heap against v1's 2,426 MB, both inside a 4 GB heap.
- The finer engine-to-engine curve on the linked invoice corpus, 1k โ 10M, is the capacity ladder.
How the numbers are produced
Every figure comes from a run, not a slide. Accuracy suites are booktests over
fixed test sets; performance figures come from the InvoicePerf /
FlatInvoicePerf harnesses. The specific numbers on these pages โ including the
ones cited above โ are generated at documentation-build time: a generator
reads each run's committed metrics.json and interpolates it into the page, so
they update themselves on re-baseline and a stale hand-typed digit can't slip
through. The build fails loudly on any unresolved metric token.
Note: These benchmarks are preliminary: each figure comes from a single random seed, so repeat runs will vary. The expense suites score 2,000 held-out rows, which puts a 95% interval of about ยฑ2 points on a cell, and every "ahead of" claim on those pages comes from an exact McNemar test on the rows where two methods disagree โ where the test does not separate them, the page says they are tied. Invoice routing scores 2,000 held-out rows (ยฑ1.6โ2.2 points per cell), so a gap inside that band is a tie.