Reference · How it is built
Every component in the running system, what it is allowed to do, and the path a single question takes from a browser to a fact and back.
This is the structural claim the whole design rests on, and it is easier to see than to describe: there is no edge between the language model and the data.
Each takes a validated argument schema and returns the same envelope: the result, its basis, how many entities matched, how many are represented, and every exclusion with a reason. An argument value that does not exist raises an error listing the valid ones.
The agent cannot invent an identifier. It has to look one up, and ambiguity comes back as ambiguity rather than a guess.
Screening returns distributions and rankings across the portfolio; drill-down returns rows and refuses above fifty entities rather than truncating.
Schedule, rig demand and the risk register, with unassigned work surfaced rather than netted away.
Analogue projects with their post-investment reviews, document retrieval always scoped to a resolved entity set, a one-page card assembled for a single project, and a call that retraces any figure to its source facts.
The loop runs until the model stops asking for tools. What happens next is the part that is unusual: the draft is checked in code, against the envelopes it was built from.
Facts are written once and never updated. Each carries the plan vintage it belongs to, which is the only reason “what changed between two plans, and why” is answerable at all.
Three containers on one virtual machine. Only one of them is reachable from the internet.
| Table | Rows | What it holds |
|---|---|---|
| fact_timeseries | 482,569 | Annual profiles, partitioned by vintage |
| fact_scalar | 31,024 | NPV, IRR, reserves, one value per project |
| risk_revision | 4,511 | Risk scores over time, latest wins |
| document_chunk | 3,043 | Section-split text with embeddings |
| conformance | 2,990 | Estimate quality per project per measure group |
| well | 1,796 | Producers and injectors, with spud dates |
| risk | 1,509 | Register entries across the portfolio |
| document | 702 | Plans, reviews, notes, registers |