A report can contain correct numbers and still give the wrong impression. A forecast may be presented as an achieved result, a budget as a current estimate or a partial-month actual as a full-month outcome. AI drafting increases that risk when the input provides values without their evidence type and dates.
The proposed process below labels and checks reporting values before circulation. It does not establish a forecasting method, give financial advice or guarantee prediction accuracy. The information owner approves the definitions and comparisons. The practical output is a typed value register and narrative check that keep expected, hypothetical and recorded outcomes distinct.
Record what kind of evidence each figure represents
Create accepted types such as actual, forecast, budget, scenario and unresolved. Define them in the reporting contract. An actual value is recorded under the accepted source and scope; it can still be provisional or awaiting reconciliation. A forecast is an expectation under a specified method and version, not evidence that the result occurred.
Keep approval state separate from evidence type. An approved forecast remains a forecast. An unapproved actual extract is not automatically a forecast; it is an actual-type record with an unresolved acceptance state. This separation prevents a single approved label from hiding what the value means.
Retain the value's source, metric definition, unit or currency and coverage. If the type cannot be established, leave it unresolved and ask the owner. Do not infer actual status from a column name such as result or from the presence of a precise decimal number.
Preserve the period and the version time
For each value, record the period it describes and when its source or forecast version was prepared. A forecast created in August for September differs from one updated near September's end. Keep both versions if the report compares prediction history or later revisions.
Actual coverage also needs its cut-off. A month-to-date extract is not the final whole-month result. If a required source is incomplete, label that limitation rather than extrapolating without an accepted method. The report can show a partial actual alongside a full-period forecast only when it clearly states that they are different scopes.
Source: OpenAI Structured Outputs describes schema-constrained responses. A proposed input can require type, period, source version and review state for every value. Correct schema shape does not establish that those labels are true. Validate them against the accepted register before generation.
Decide which comparisons are meaningful
Compare values only when the metric, unit, period and inclusion rules support the intended question. Actual versus forecast can be useful as a variance, but it is not a combined total. A forecast for one service should not be compared with actuals covering the whole business without an explicit accepted bridge.
Compute differences deterministically and retain the expression. Keep the original values and labels beside the calculated comparison. A variance can establish the numerical gap under the accepted scope; it does not establish why the forecast differed or whether the business performed well.
If the reporting definition changed, attach the accepted comparability decision. Do not let AI explain a measurement break as a forecast miss. If a forecast has no accepted source or method version, the report should hold it or describe it as an unreviewed input according to the owner's decision.
Reusable typed-value register and narrative check
Use this proposed register for every substantive figure in the report.
| Field | Required entry | Narrative constraint |
|---|---|---|
| Value identity | Stable value ID and metric definition/version | Correct metric named |
| Evidence type | Actual, forecast, budget, scenario or unresolved | Type retained wherever meaning depends on it |
| Amount | Value and accepted unit/currency | No mixed-unit total |
| Period | Start/end, coverage and cut-off | Partial and full periods distinguished |
| Source version | Record/model reference and preparation time | Revised forecast not substituted silently |
| Review state | Accepted, provisional or held; owner decision | Approval does not change evidence type |
| Comparison | Accepted paired IDs, formula and scope check | Gap described without invented cause |
| Limitations | Missing source, changed definition or uncertainty | No concealment in fluent prose |
Before circulation, check each narrative claim:
- Its number matches an accepted value or deterministic comparison.
- Its evidence type remains clear: recorded, expected, budgeted or hypothetical.
- Its period and coverage agree with the register.
- It does not describe a forecast as completed activity or a scenario as a plan.
- It does not add actual and forecast values as if they were disjoint realised amounts.
- Any causal explanation has separate accepted evidence or remains an explicit question.
- The reviewer accepts the exact report version, including provisional inputs and limitations.
The completion check is that the reader can distinguish what happened from what was expected, under which dates and definitions, without opening the raw spreadsheet to repair missing labels.
Work through comparable actual and forecast values
Consider a hypothetical completed reporting period with an accepted actual value of 100 units and an approved forecast of 130 units under the same metric and period. The deterministic difference, actual minus forecast, is minus 30 units. A draft can say the recorded result was 30 units below that forecast. It must not report 230 achieved units or describe 130 as the completed result.
Now suppose the actual value covers only the first part of the month while the forecast covers the full month. The same subtraction does not represent a final forecast variance. The register records the scope difference and the owner decides the appropriate limited comparison. AI should not call it a miss or extrapolate a final outcome without an accepted method.
A later forecast version also needs distinction. If the expected value changes from 130 to 110, keep the original and revised preparation times. A comparison against the latest forecast answers a different question from accuracy against the earlier forecast. The report should name which version it uses.
If an imported row repeats the same stable value identity, it links to the existing record. Similar values from different source versions remain separate until the owner establishes their relationship. A missing type or date creates an unresolved item, not a default actual result.
Constrain retrieval and drafting to accepted evidence
Source: OpenAI file search describes retrieval and file citations from uploaded material. It can locate a forecast note or source explanation, but a citation does not establish the value's accepted type or coverage. Check the source against the typed register and retain the relevant version.
Source: OpenAI function calling describes application execution of requested functions. A reporting lookup can enforce accepted metric and version IDs, returning their types and limitations together. The drafting step should not be able to change those labels or rewrite the forecast history.
Evaluate with fixtures containing approved forecasts, provisional actuals, partial periods, revised methods, hypothetical scenarios and unknown types. Inspect verbs such as achieved, expects and plans as well as arithmetic. A report can pass number matching while failing the meaning check. Record actual reviewer corrections before claiming a clearer reporting process.
Questions about forecast and actual labels
Does an approved forecast count as an actual result?
No. Approval confirms its accepted use within the stated forecasting process; it does not prove the event occurred. Keep evidence type and approval state separate. The report should retain forecast wording even when the expected number was approved by a senior person.
Can we compare month-to-date actuals with a full-month forecast?
Only as a clearly labelled partial-period view under the owner's accepted rule. It is not automatically a final-period variance. Preserve the actual cut-off and forecast period so the reader understands the scope difference, and avoid unsupported extrapolation or a premature performance conclusion.
Should a revised forecast replace the earlier one everywhere?
No. Keep version history and decide which comparison the report intends. The latest estimate and the earlier prediction answer different questions. Preserve original reports and create accepted revisions when needed rather than silently changing the evidence behind an already issued explanation.
If your business needs help defining this process, explore Custom AI agents, the wider AI automation services, and our custom-agent workflow guide. The agents and automation comparison and custom AI agent glossary explain the terms. To discuss your records and approval rules, get in touch.

