If you ask a general-purpose chat model for the float on an activity, it will give you a number, confidently, and it will be made up. That is not a flaw to be prompted away; it is what a language model is. Verian is built on the opposite assumption: the model is never the source of a figure. This post is about the architecture that follows from that.
Two different jobs
An answer in Verian is assembled from two kinds of work. Tools compute: the critical path engine, the float calculator, the earned-value functions, the register matcher, the clause finder. They run on the project record and return figures with their provenance. The model reads the question, decides which tools to call and in what order, and writes the sentence that presents what came back. It is allowed to be good at the thing it is good at, and nothing else.
L. Ferreira asked, in the weekly review
“Verian, what’s driving the risk on mechanical completion?”
M4 depends on the T-102 hook-up, which has eight days of float. Risk R-0231, late gate valves, sits on that path. The forecast for M4 is 23 November.
Answered with L. Ferreira’s access · figures computed from the record
Sources used
- Rev 13Schedule
- R-0231Risk register
- SUP-0877Supplier letter
What a tool-computed figure looks like
Every figure carries three things: the value, the tool that computed it, and the record it was computed from, down to the revision. Eight days of float is the schedule engine on Rev 13. Forecast at completion $24.88M is the earned-value function on the cost record as reconciled at 09:41. If the model were to write a figure that no tool returned, the answer fails a check before it is shown. In practice this means an answer sometimes says I do not have that in the record, which is the correct answer more often than people expect.
| Question | Tool that answers it | Record it reads |
|---|---|---|
| What is driving the forecast for M4? | Critical path engine | Live schedule, current revision |
| How much float is left on the hook-up? | Float calculator | Live schedule, current revision |
| What does this change cost? | Earned value and forecast functions | Cost record, as reconciled |
| Which clause does this letter touch? | Clause finder | Contract and clause library |
| Which risks are on the path to M4? | Register matcher + path engine | Risk register and schedule |
Access is part of the answer
Tools run with the access of the person who asked. The planner's question is answered from what the planner may see; a cost figure the planner cannot see does not reach the model at all, so it cannot leak into a sentence by accident. In a group chat where a question would need figures some members cannot see, Verian says so and answers the asker privately. This is enforced below the model, which is the only place it can be enforced reliably.
When the record has no answer
A question about a document that was never connected, a date that was never entered, a revision that does not exist: the tools return nothing, and the answer says so. There is no fallback to the model's general knowledge, because in project controls a plausible wrong number is worse than no number. The answer will suggest which source would need to be connected.
Every answer is on the record
An answer given in a meeting is logged with the question, the asker, the tools called, the records read and their revisions. Document Control keeps the same discipline for files: every revision, transmittal and approval on one trail. When a figure quoted in a review is challenged three months later, the trail shows what it was computed from, by what, and for whom.
- The model never produces a figure; tools do, from the record, with provenance.
- An answer that cannot be computed says so instead of guessing.
- Access is enforced below the model, per asker.
- Every answer, revision and approval is logged with its sources.