Reporting · One module of the operating system
Every number is arithmetic
over records you can open.
The command centre answers what needs you today. The cost position answers where each job actually is. Both are computed live from source records at the moment you ask, not from a nightly batch or a stored running total, and no model is involved in producing any of them. Committed cost is the value of orders you have actually sent. Actual cost is supplier invoices you have actually approved, converted to ex GST with the working shown.
The Founding Builders Programme · Onboarding in small cohorts
01 / What it does
What this feature does
Reporting in VIABUILD is not a separate analytics product bolted onto the side. It is the same records the rest of the operating system writes, read back and added up. That has one consequence worth stating before anything else. There is no import step, no reconciliation between the system that runs the job and the system that reports on it, and no window in which the two disagree. What the concepts mean, and why builders find out too late, is covered in job cost reporting and financial visibility.
The honest framing for this module is that it is deliberately unintelligent. Every figure is deterministic arithmetic. The same inputs always produce the same outputs, the calculations are unit tested, and there is no language model anywhere in the path that produces a number. Oryn™ puts records into the system by reading documents. Arithmetic turns records into numbers. Keeping that boundary is why the position on your screen can be trusted rather than interpreted, and it is the reason we do not describe any of this as AI forecasting.
There are two questions this module answers, and they are different. Where is the job now, which is a position read backwards out of the record. And where is it heading, which is a forecast built forwards. The forward-looking cash view has its own module and its own page on cash flow forecasting. Everything below is about the position and the daily picture.
02 / Why it matters
Why builders need it
The ledger is a rear-view mirror
Accounting tells you what has been invoiced and paid. On a build the money is decided when an order is raised, which is weeks earlier, and that gap is the only window in which a job can still be steered.
A dashboard that is not current is a liability
A figure refreshed overnight is wrong all day. Numbers computed at the moment you ask cannot be stale, and there is no batch to fail quietly on a Tuesday.
Stored totals drift
A total kept by adding and subtracting goes wrong the first time an invoice is edited or two writes land at once, and nothing indicates it has. A number derived from its source cannot disagree with its source.
GST silently doubles your error
Comparing a GST-inclusive invoice against an ex GST budget makes every job look ten per cent worse. The conversion has to be explicit, and where it had to be inferred you deserve to be told.
A forecast nobody reviewed is not a forecast
Software that quietly projects a final cost invites you to trust a guess. Here the default is a rule you can state in one sentence, and the system marks which lines a human has actually reviewed.
Reports you cannot get out are not reports
A number trapped behind a screen cannot go to your accountant, your bank or your board. Every report exports, and the ones that matter weekly can send themselves.
03 / The VIABUILD way
How VIABUILD handles it
Committed is orders you sent. Actual is invoices you approved, ex GST. Forecast is the greater of budget, committed and actual until a person says otherwise.
The cost position on a job is three columns per cost code, and each has a precise definition rather than an intuition. Budget is the sum of the lines on the latest locked budget for that job, so a superseded lock cannot be double counted. Committed is the value of purchase order lines on orders that have actually gone out, which means sent, acknowledged, partially received or received, and never a draft. Actual is the value of supplier invoice lines on invoices that have reached approved, exported or paid, converted to ex GST.
That conversion is worth a sentence of its own, because it is where most job costing quietly goes wrong. The system uses an explicit ex GST amount if the invoice carries one. Failing that it subtracts the recorded GST. Failing that it strips GST at the rate on the invoice, then the contract, then your organisation default. And when it has had to infer rather than read, the figure is marked on screen so you know which lines carried an assumption. Being told that a number was inferred is more useful than a number that looks equally confident either way.
The forecast final cost follows one stated rule. Until a person reviews a line, its forecast is the greatest of its budget, its committed and its actual, because a line that has already spent more than it was given is not going to come in on budget. From that come cost to complete, variance to budget and cost percent complete, and at the job level a forecast gross margin computed as the contract value converted to ex GST less the total forecast cost. Lines still on the default are labelled as such, lines a human has reviewed are labelled reviewed, and a review that has not been touched in thirty days is labelled stale. The only human input anywhere in the chain is that reviewed forecast figure.
The command centre in front of all this is composed from what you are allowed to do rather than being one fixed screen, so an estimator, a project manager and an owner each open a different dashboard. It leads with what needs a decision today, invoices waiting on review, orders ready to send, variations awaiting a decision and tasks that have run past their date, then the money row, the jobs flagged on schedule slip, the site picture, the order commitment split and the portfolio. Nothing on it is a stored snapshot.
- Budget from the latest locked budget, never a superseded one
- Committed from orders actually sent, never from drafts
- Actual from approved supplier invoices, converted to ex GST
- Inferred GST conversions are marked rather than hidden
- Forecast defaults to the greater of budget, committed and actual
- Reviewed, default and stale forecasts are labelled distinctly
- Computed on request, no nightly batch and no snapshot tables
- CSV export, and scheduled reports that email themselves
04 / The workflow
How it runs, step by step
- 01
Open the command centre
It leads with what needs a decision today rather than with a chart. Invoices to review, orders ready to send, variations awaiting a decision, and anything on site that has run past its date.
- 02
Read the money row
Accounts payable outstanding, what falls due this week, total committed on open orders, the estimating pipeline and the count of jobs in delivery. Each is a live sum, not a figure someone updated.
- 03
Follow a flagged job
Jobs are flagged where the programme has slipped, either an overdue task or a baseline finish that has moved by five days or more, so the risk that surfaces is one you can act on today.
- 04
Open the cost position
Budget, committed and actual by cost code with the definitions above. The seam between what you promised and what you have been invoiced is the earliest honest read on where the job is going.
- 05
Review the forecast where it matters
Every line starts on the default rule. Reviewing a line replaces it with your number and marks it reviewed, and the system tells you when that review has gone stale so a forecast cannot quietly age.
- 06
Read the margin
Forecast gross margin at the job level is the contract value converted to ex GST less the total forecast cost, so the comparison is like for like rather than a contract including GST measured against costs that do not.
- 07
Run the portfolio view
Every job in one list with the same cost summary behind each, fetched in a single batched call rather than one query per job, plus prebuilt reports covering work in progress, job profitability and safety compliance.
- 08
Send it where it needs to go
Reports export to CSV, and a saved report can be scheduled daily, weekly or monthly and emailed with the file attached. Runs are recorded, so a retry never sends the same report twice.
05 / FAQ
Common questions.
No, and we would rather lose the buzzword than the trust. Every figure on the dashboard, in the cost position, in the forecast final cost and in the cash flow forecast is deterministic arithmetic over source records. There is no language model in the path that produces any number, the calculations are unit tested, and the same inputs always produce the same outputs. Oryn™ reads documents and puts records into the system. Arithmetic turns those records into numbers. Software that describes a projection as AI forecasting is asking you to trust something you cannot check, and on money that is the wrong trade.
Budget is the sum of the lines on the latest locked budget for the job, chosen by version so a superseded lock cannot be counted twice. Committed is the value of purchase order lines on orders that have actually been issued, meaning sent, acknowledged, partially received or received, so a draft order you are still working on never inflates your commitment. Actual is the value of supplier invoice lines on invoices that have reached approved, exported or paid, converted to ex GST. Cost codes carry through all three, which is what makes them comparable rather than three unrelated totals.
Explicitly, and it is told to you when it had to be assumed. The system uses an ex GST amount recorded on the invoice line if there is one. If not, it subtracts the recorded GST amount. If neither exists, it strips GST at the rate on the invoice, then the rate on the contract, then your organisation default. That last case is an inference rather than a reading, so those lines are marked on screen. Mixing a GST-inclusive cost against an ex GST budget is one of the most common ways a job appears to be losing money when it is not, which is why the conversion is a named, tested step rather than an assumption.
By a rule you can state in one sentence. Until a person reviews a line, its forecast is the greatest of its budget, its committed and its actual, because a cost code that has already committed or spent more than it was budgeted is not going to finish on budget. Reviewing a line replaces that default with the number you enter, and the line is labelled reviewed. If a reviewed line has not been touched in thirty days it is labelled stale, because an old forecast presented with the same confidence as a fresh one is a trap. The one and only human input in the whole chain is that reviewed figure. Everything else is derived.
Live. Every figure is computed from source records at the moment the page asks for it. There are no materialised views, no snapshot tables and no nightly aggregation job, so there is no batch that can fail quietly and leave you reading yesterday. Within a session results are held briefly on the client to avoid re-querying on every click. The one aggregate that is stored, a purchase order’s invoiced amount, is recomputed from the invoices attached to it rather than incremented, which is deliberate. A stored total that is added to drifts the first time something is edited.
There is a cost-to-cost work in progress calculation per active job. Percent complete is costs to date over budget, and earned revenue is the contract sum at that percentage, giving you the earned position on every live job in one list. Job profitability and safety compliance are available the same way. What we will not oversell is the over and under claimed leg of a full WIP statement, which is why this page describes what the report computes rather than implying a complete WIP schedule. The accounting concepts themselves, including why over and under claiming matters, are set out in the work in progress reporting guide.
Yes, within a governed structure rather than as free-form querying. You choose one of six data sources covering jobs, budget costs, invoices, purchase orders, suppliers and defects, then pick columns from an allow-list for that source and apply filters. The result exports to CSV, and it can be saved. It is not arbitrary SQL against your database, which is a constraint rather than an omission. A reporting tool that can run any query can also run a slow one, an unscoped one, or one that reads across organisations.
Yes. A saved report can be scheduled daily, weekly or monthly and arrives by email with the data attached as a CSV. Schedules run against Australian time, every run is recorded with its status and row count, and a run that has already succeeded is not repeated, so a retry after an interruption cannot send you the same report twice. Reports export as CSV rather than PDF. The transactional documents that need to look right for someone else, orders, invoices, variations and the programme, are the ones that generate PDFs.
Because it is composed from what each person is allowed to do rather than being one fixed screen with sections greyed out. An estimator opens an estimating dashboard, someone running jobs sees invoices, orders, site operations and the portfolio, and a view-only account gets an honest statement that their access is read-only rather than a screen of empty cards. The point is that the first thing you see is work you can actually action.
06 / Keep reading
Related features & guides
Read a live job position instead of last month’s.
Lock a budget, raise the orders, approve a few supplier invoices, and watch budget, committed and actual move by cost code, with the forecast telling you which lines a person has reviewed and which are still on the rule.
