compile_events · live
awaiting first compile…

The reasoning layer
under your
finance product.

scroll ↓
platform pulse · live0 compiles · 0 in last window
Single-digit ms

Warm-cache compile latency for 50-driver models. Cold compile takes longer; warm and recompile are fast.

bench · 50-driver
bit-identical

Same IR always produces same outputs. Regulator-grade reproducibility.

determinism test
Tenant-isolated

Per-key authentication boundary. Cross-tenant access architecturally impossible.

security posture
100/ 100

Institutional Excel-export rubric on the artifact your customer downloads.

rubric · public
Specimen · architecturethree surfaces · one engine
Your product surface
The interface your customer sees · Your chat UX, your dashboard, your agent, your iframe.
MCP surface

Your agent calls flatland_compile directly. Schema-typed tool surface, llms.txt-discoverable.

REST surface

Your backend curls the engine. Stable JSON contract, idempotent compile semantics.

Webhook surface

compile_events stream to your queue. Same channel this page subscribes to.

Authentication + tenant isolation boundary
Per-key auth. Per-tenant data partition. Cross-tenant access architecturally impossible.
Flatland compile engine
• Typed IR ingest
• Topological sort
• DAG evaluation
• Assertion engine
• Dimensional inference
• Sensitivity propagation
• Scenario overlay
• Excel export (rubric-scored)
Three integration surfaces, one compile engine. You build the UI; we hold the math. Your customer never sees us, unless you want them to.

Embed it under MCP.
Call it from your backend.
Run it co-located.

Specimen · IR JSONread it in 60 seconds
saas_seed_v3.ir.json · canonical · 47 drivers · 12 assertionsapplication/json
1{
2 "model_id": "saas_seed_v3",
3 "namespace": "ndo.finance",
4 "version": "1.0.0",
5 "drivers": [
6 {
7 "id": "mrr",
8 "category": "assumption",
9 "type": "Currency(USD)", // typed at compile time
10 "value": 8000,
11 "description": "Monthly recurring revenue, base period"
12 },
13 {
14 "id": "churn",
15 "category": "assumption",
16 "type": "Percentage",
17 "value": 0.06,
18 "feeds_into": ["net_retention", "ltv_cac"]
19 },
20 {
21 "id": "gross_profit",
22 "category": "computed",
23 "type": "Currency(USD)",
24 "formula": "revenue - cogs", // AST-evaluated, no eval()
25 "depends_on": ["revenue", "cogs"]
26 }
27 ],
28 "assertions": [
29 {
30 "id": "cash_runway_ge_6mo",
31 "condition": "cash_runway_months > 6",
32 "severity": "structural" // breaks ship-readiness, not compile
33 }
34 ],
35 "scenarios": [
36 { "id": "base" },
37 { "id": "downside_a17", "overlay": { "churn": 0.085, "new_logos_q": 8 } }
38 ]
39}
✓ schema-valid · ✓ compiles in 240ms cold · ✓ exports to Excel rubric-passView the docs →
The IR is the contract. If your platform can read JSON, it can read a Flatland model. If it can write JSON, it can build one. The compile engine takes it from there.
Next stepsread deeper · or talk to us

Your customers' models.
Our compiler.
Your interface.

Flatland · index of everything
© 2026 Flatland · made for systems of record · live pulse · awaiting first compile