Flux analysis
See what moved between two periods, and why. Upload one row per account with the prior and current amounts side by side. ReportForge computes the variance, you explain the material moves, and it writes the report.
What it is and when to use it
Flux answers one question for each account: how much did it move between a prior and a current period, and why?
You upload one row per account with both periods side by side. ReportForge works out the variance, you give a reason for each account that moved materially, and it writes the report.
Use it when you have a prior and a current balance for each account and need to explain the material moves between them.
Step by step in the app
The screens use these names.
Start
On the dashboard, in the Start a new analysis band, choose Analyze period-over-period flux.
Set up and upload
On the setup page, pick the comparison type and the current period, add your file, and choose Create analysis. The setup page offers a sample CSV and a button labelled "view an example report".
Review
The analysis page lists the accounts that need an explanation. On the dashboard the analysis shows as In review until you finalize it.
Explain
Explain mode walks you through the accounts one at a time. For each, you add driver lines: what drove the movement, a dollar amount, and one-time or recurring.
Finalize or generate
Generate draft writes a report from the analysis as it stands. Finalize & generate locks the analysis and then writes the report. Generating needs an industry and an audience.
Read the report
The report page shows the Fact check panel and the trust score. Exports and Actions (including Share) are on that page.
The file
One file, one row per account, prior and current side by side. It can be CSV or Excel (.xlsx or .xls), up to 10 MB. Do not include computed totals such as Gross Profit or Net Income.
| Column | Needed? | What it is |
|---|---|---|
| Account_Code | Optional | If present, it identifies the account; otherwise the account name does. |
| Account | Required | The account name. |
| Account_Type | Required | Revenue, Expense, Asset, Liability or Equity (any capitalization). |
| Prior_Period_USD | Required | The amount in the earlier period. |
| Current_Period_USD | Required | The amount in the later period. |
| Recurrence | Optional | one-time or recurring. |
| Reason | Optional | Free-text reason. |
Amounts may include commas, a "
quot; and negatives in brackets, such as (1,234). A blank or non-numeric amount is an error, never a zero: type 0 where you mean zero.The header row must contain the four required headers. If it is not the first row, you are asked which row is the header.
If something is wrong
If a row has a problem, the page lists it (row number and account) and tells you to fix the rows and upload again. A file with problems never creates an analysis. These are the messages, as the code writes them.
| Where | Message you see (example values) | What to do |
|---|---|---|
| Account blank | Row 4 (blank account): Account is required and blank. | Fill in the account name. |
| Account_Type | Row 4 (Cash): Account_Type "Income" is not one of Revenue | Expense | Asset | Liability | Equity. | Use one of the five types. |
| An amount | Row 4 (Cash): Prior_Period_USD "n/a" does not parse as a number. | Type a number, or 0 where you mean zero. The same message names Current_Period_USD. |
| Same account twice | Row 9 (Cash): duplicate identity key "1000" (first used at row 4). | Keep one row per account. |
| Which row is the header? | Which row is the header? | If the page cannot tell which row holds your column names, you pick it. |
| After the list | Fix these rows and re-upload the file. | Correct the rows and upload again. |
Materiality: what needs an explanation
An account is material, and so needs an explanation, when its change is at least $50,000, or when it moved at least 10% and by at least $10,000.
An account with no earlier amount, or whose sign flipped, is judged on the dollar amount alone.
These are the starting values. You can change the percentage, the dollar amount and whether both must be met (and) or either (or). The page shows how many accounts would become or stop being material, and existing explanations are kept. Thresholds are locked once the analysis is finalized.
Explain mode
The analysis page lists the accounts that need an explanation, and Explain mode walks you through them one at a time. For each account you add one or more driver lines: what drove that part of the movement, a dollar amount, and whether it is one-time or recurring. Splitting a change across several lines is fine.
If the lines do not add up to the whole change, the page shows the "unexplained" remainder. It is shown to you but does not block finalizing.
- Reasons that came in your file are treated as unconfirmed until you confirm them. The finalize checklist has a Confirm all button for this. A confirmed account is flagged for review again if its variance later changes.
- Any account can be marked Ignore, and the choice can be undone.
- A number you type in an explanation is checked against that account's own figures (its change and the two period totals). If it matches one, the real figure is used and checked like any other; if not, it stays as typed and is treated as your number. It never matches another account's figures.
- Outside reason links are available for price-volume-mix only. The flux page does not have the control.
What is in the report
The example report further down this page is built the same way as your own, from a synthetic company. It shows:
- a summary line with the periods compared, the number of accounts and how many are material;
- the material accounts ranked by movement, marked favourable or unfavourable;
- a table of every account with its prior and current amount, the variance in dollars and percent, whether it is material, and a completeness column (for example "Reason missing");
- narrative paragraphs that restate the reasons the controller gave, including a case where the stated drivers add up to more than the computed variance, which the report shows rather than hiding.
Checks and the trust score
Each figure in the prose is checked back to your data in the Fact check panel. It shows a summary ("N need attention" or "Every cited figure checks out") and groups what needs attention. The report page also shows a trust score from 0 to 100.
A report with unverified figures shows the Draft banner. It is a signal to review, not a failure of your data. "Generate draft" is a different thing: it means generating from an analysis that is not yet finalized.
A report cannot be published while any of these is true, and the page says which:
- the report has no trust score;
- a must-pass check has failed;
- a number in the report is not tied to one of your figures yet. You resolve it in the Fact check.
Numbers you typed in your own explanations do not block Publish; they are treated as yours.
For flux there is one more rule: the version must have been generated after the analysis was finalized. A version generated before that can never be published. Finalize, then generate again.
How the numbers are checked
The AI is not allowed to state any number, name, date, category or ranking that is not in your uploaded data.
Variances and other comparison figures are computed from your data and given to the AI as facts to restate, not to calculate.
After the report is written, a validation pass reads each cited figure back against your data. Figures that match are marked verified; a report with unverified figures is shown as a Draft so you know to review it.
If you type a number in an explanation, it is checked against that line's own figures. If it matches none, it stays as you typed it and is treated as your number, not as a checked figure.
The narrative can still contain errors, so review every report before you rely on it.
Periods
Pick the comparison type (Month over Month, Quarter over Quarter, Year over Year or Same Period Last Year) and the current period; the prior period is worked out for you. The period labels can be edited until you finalize.
Finalizing saves a permanent snapshot; there is no un-finalize. After it, explanations, thresholds and labels are frozen, but you can still generate new versions. To keep working, use Duplicate to continue work (a corrected copy) or Start next period.
Start next period (available once finalized) creates a new analysis with the prior label filled in from the one you finalized and the current period moved forward. You upload the new file, and its prior-period figures are compared with the figures you finalized. If an account's earlier figure has changed, the finalize checklist shows an unresolved restatement until you acknowledge or override it.
The free trial covers one analysis covering one period. More analyses need a paid plan.
Versions, exports and read-only share links
Every analysis ends in the same report page.
- Versions. Every generation is saved as a new version of the report. The report page has a version switcher, each version has its own address, and a version can be deleted after a confirmation that names it. The Publish button appears on the current version only, and a published report can be reverted to unpublished.
- Exports. The Exports menu offers Download .docx, Export .md, Download PDF, Export facts .csv and Print. A Draft carries a draft marker in the Word and Markdown exports. The analysis pages have no export; exports are on the report page.
- Read-only share links. From the report page's Actions menu, Share creates a read-only link for someone outside your account. A link always expires (1 to 90 days) and can be password-protected. The share panel shows how many times a link has been viewed.
Working with others
Each analysis, and the reports made from it, has people who can look at it and people who can change it.
- Account owner. Can always do everything on every analysis and report in the account, and can change who has access to anything. Only the owner manages billing, users, downgrading and closing the account.
- Writers. Chosen per analysis. They can edit, upload, explain, finalize, generate reports, publish, delete versions and start the next period. They can also change who the writers and readers are, and they can always read.
- Readers. Chosen per analysis. They can only look: they see finalized analyses and published reports, and nothing in progress. The page says "View only".
- Choosing people. Open Sharing on the analysis page. There are two choices, Who can write and Who can read. Each is the default, All users of the account, or Selected users picked from the people active on your account. An analysis always keeps at least one writer.
- Published reports. Once published, a report has its own setting, Who can read this report: All users of the account (the default), Selected users, or Writers only. The home page has a section, Reports shared with you, for published reports other people made and you may read.
- Notifications. The bell in the top bar tells you when someone makes you a writer or a reader of an analysis, or picks you by name for a published report. There is no email for these.
- Comments. On the report page, Actions then Comments opens a panel where you can add a comment, reply to one, and resolve or reopen a thread.
- Extra users. Each plan is for one user. The account owner can add users at $5 a month each.
- People outside your account. Share creates a read-only link for the report. Asking someone outside to explain an account is not available for flux.
The example and the sample files
A synthetic company. The table is computed by the same classifier your own file goes through. The narrative is hand-written to show the tone and was not produced by the model.
Meridian Outfitters — Q1 → Q2 FY26 Flux
A synthetic company, built to show the shape of a flux report — including a variance that decreased (Marketing Expense) and a driver explanation that over-accounts for its own variance (Professional Fees). The table below is computed by the same materiality logic your own upload runs through. This example uses 10% and $50,000, both required, to keep the list short; a new analysis starts at $50,000, or 10% and $10,000. The narrative paragraph is hand-written to illustrate tone, not generated by the model.
| Account | Type | Q1 FY26 | Q2 FY26 | Variance $ | Variance % | Material | Completeness |
|---|---|---|---|---|---|---|---|
| Product Revenue | Revenue | $4,200,000 | $4,550,000 | $350,000Fav | +8.3% | No | — |
| Service Revenue | Revenue | $800,000 | $1,050,000 | $250,000Fav | +31.3% | Yes | Reason missing |
| Marketing Expense | Expense | $450,000 | $210,000 | -$240,000Fav | -53.3% | Yes | Reason missing |
| Cost of Goods Sold | Expense | $2,100,000 | $2,300,000 | $200,000Unfav | +9.5% | No | — |
| Professional Fees | Expense | $180,000 | $310,000 | $130,000Unfav | +72.2% | Yes | Reason missing |
| Travel and Entertainment | Expense | $0 | $45,000 | $45,000Unfav | NM | No | — |
| Interest Expense | Expense | $60,000 | $58,000 | -$2,000Fav | -3.3% | No | — |
Plans and credits
Flux is one of the three report types. The free trial (10 AI Credits, one analysis covering one period, no card, no time limit) opens all three. Single Report ($20 a month, 200 AI Credits a month) covers one report type, chosen when you first buy it. All Reports ($40 a month, 500 AI Credits a month) covers all three.
Every analysis uses at least 5 credits, and you need at least 5 available to run one. Extra users are $5 a month each, and AI Credit packs add +100 credits for $5 a month. More analyses than the trial need a paid plan.
Flux questions
Not the right report?
Flux compares one period with another, by account. Budget vs actual compares actual with budget, by account, for each period of a fiscal year. Price-volume-mix bridges a revenue change into price, volume and mix, by product.
Compare actuals to budget by account and fiscal period, explain the material variances, and generate a fact-checked report.
Bridge a revenue change between two periods into price, volume and mix effects by product, with a fact-checked report.
Flux analysis, budget vs actual or price-volume-mix: the question each one answers, the file you upload and what you get, side by side.
How a ReportForge report is made: numbers computed from your file, your explanations, and every cited figure checked against your data. What it does not do.
Single Report $20 a month, All Reports $40 a month, monthly add-ons, and a free trial of 10 AI Credits with no card. Invite-only beta.