Computational model graph

Model the parts. Read the whole.

Model your system as nodes, relationships and formulas. Change anything, and every value it touches recomputes — across units, states and time — without you editing another line. Your agents query numbers they can explain, and prove.

REST API · Python SDK · self-hostable

The problem

Agents act on your business. Can you prove the math?

An agent reprices a plan, rebalances a portfolio, plans capacity. The number it used came from a spreadsheet that drifted, a query with no units, or a model no one can re-run. Six months later an auditor asks why — and nothing holds up.

AwareDB sits between your agents and your business reality. Every value is computed from an explicit model — unit-correct, reproducible, reversible.

The agent asks in language; AwareDB answers in math.

How it works

Agents propose. AwareDB computes. Agents act.

A closed loop where every decision is grounded in a model you control — not the agent's say-so.

Observe

Your agents read what's happening and propose a change to the model.

Compute

AwareDB recalculates with correct units, applies your formulas and rules, and returns the result — or runs a what-if first, without touching stored data. You change one input; everything it impacts recomputes on its own — you never touch the rest of the model.

Act

They execute on a number they can explain, with every change logged and reversible.

Language guesses. The model doesn't.

The engine

You write the parts. The whole computes itself.

A node carries inputs and formulas about itself — local, plain, written as if nothing else exists. You never declare what depends on it, never enumerate combinations, never wire the consequences. At calculation time the engine resolves the result across every dimension its inputs carry — units, states, time — and recomputes everything your change touches. You author inputs; you read outputs; the impact in between is the engine's job.

what-if · runs against a copy, nothing saved
MRR21,278 EUR/mo
Burn57,389 EUR/mo
Runway13.1 mo
runway = cash / (payroll + other − mrr) = 750,000 / (66,667 + 12,000 − 21,278) = 13.1 mo
ARR 255k / 600k runway 13.1 / 12mo 322 / 400
  • Local in, emergent out

    Write a formula once as plain math. If an input it touches has variants, the result comes back per variant. The formula never mentions them.

  • Real units

    A value carries kW, EUR, km. The unit is just another dimension that rides through the math; a mismatch surfaces as a warning, never a silent wrong number.

  • Every state at once

    Declare that a value has states in one place; every formula downstream becomes state-aware on its own, resolved on demand.

  • What-if is just calculation

    Change an input and read the new output. A scenario or a projection is the same recompute, run against a copy — nothing downstream to touch, nothing saved.

  • Deterministic and reversible

    Same inputs, same outputs, every time. Every change logged with the deltas to undo it.

See the full type system →
Hard problems

The hard part is the consequences. That's the part you don't write.

Model each node as if nothing depends on it. The engine resolves every dimension — variants, levels, time, states — at calculation time.

Engineering

Variants resolve themselves

A car's motor, wheels and battery each come in variants, and you want range, top speed and weight for every combination.

Write range = battery.capacity / power_at_speed(speed) once, as if there's one car. Declare the variants separately, where they live. At calculation time the result comes back resolved per configuration, in km — the formula never mentions a variant.

Worked example: electric car →
Manufacturing

A change that rolls up five levels

Price a train: a friction pad rolls into a brake system, into a bogie, into a car, into the train, into a 30-year lifecycle cost.

Each level's cost is written as the sum of the level below — nothing more. Swap one component and the total recomputes through all five levels, maintenance intervals carried as real distances. You never trace the ripple.

Worked example: train BOM →
Professional services

Capacity, before you commit

Know the moment you sign a client whether the team is now overbooked — when hours, rates and headcount usually live in three different places.

utilization = hours_needed / capacity_total, overbooked = utilization > 1. Add the client to the model; the answer is already computed. Nothing else to update.

Worked example: accounting firm →
FP&A

"What's our runway if…"

Ask how a hire, a price change or a raise moves runway — and get the full recompute, every target included.

Change one input. MRR, burn, runway and every OKR recompute together, against a copy — nothing saved. Ask the next question. The what-if is just the model, asked differently.

Worked example: SaaS P&L →
Any quantitative model

One engine, any units

Compute EUR/month and m/s² with the same correctness — euros and kilowatts never silently mixed.

Every quantity is unit-aware end to end; a dimensional mismatch surfaces as a warning, not a wrong number. The car and the P&L run on the same engine.

Worked example: any model above →
Portfolio / planning

The best option across every state

The right choice depends on state — holding period, market, allocation — with too many combinations to try by hand.

Describe the constraints and the target once. Goal-seek, optimize and constraint-solve search the model's states and return the input that hits it. You state what good looks like; the engine finds it.

Worked example: portfolio →
Build

One model. Reachable from anything that speaks HTTP.

SDK & REST

One command endpoint, sixteen verbs. A typed Python client mirrors it. Query, update, and run analyses from any language.

SDK reference →

Self-hostable

Runs in your environment; your model, your data. The engine is private — self-hosting is by arrangement, so get in touch.

Talk to us →

Workflow tools

Call AwareDB over HTTP from the automation tools you already have. Run scenarios and read results inside existing workflows.

Put a model behind your numbers.

Install the Python client, push a few nodes with formulas, and read back a computed, unit-correct value in minutes.