Pre-production beta: a work in progress and a study of AI for real-world reporting. Review every output before you rely on it. About this beta
REPORT · FLUX

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.

01

Start

On the dashboard, in the Start a new analysis band, choose Analyze period-over-period flux.

02

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".

03

Review

The analysis page lists the accounts that need an explanation. On the dashboard the analysis shows as In review until you finalize it.

04

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.

05

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.

06

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.

Columns in a flux file
ColumnNeeded?What it is
Account_CodeOptionalIf present, it identifies the account; otherwise the account name does.
AccountRequiredThe account name.
Account_TypeRequiredRevenue, Expense, Asset, Liability or Equity (any capitalization).
Prior_Period_USDRequiredThe amount in the earlier period.
Current_Period_USDRequiredThe amount in the later period.
RecurrenceOptionalone-time or recurring.
ReasonOptionalFree-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.

Messages the flux upload shows
WhereMessage you see (example values)What to do
Account blankRow 4 (blank account): Account is required and blank.Fill in the account name.
Account_TypeRow 4 (Cash): Account_Type "Income" is not one of Revenue | Expense | Asset | Liability | Equity.Use one of the five types.
An amountRow 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 twiceRow 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 listFix 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.

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.

Example · illustrative numbers

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.

Q1 FY26 → Q2 FY26 · 7 accounts · 3 material
Material accounts · ranked by movement
UnfavourableFavourable
Service Revenue
$250,000Fav
Marketing Expense
-$240,000Fav
Professional Fees
$130,000Unfav
Flux example: each account's prior and current amounts, variance and whether it is material
AccountTypeQ1 FY26Q2 FY26Variance $Variance %MaterialCompleteness
Product RevenueRevenue$4,200,000$4,550,000$350,000Fav+8.3%No—
Service RevenueRevenue$800,000$1,050,000$250,000Fav+31.3%Yes
Reason missing
Marketing ExpenseExpense$450,000$210,000-$240,000Fav-53.3%Yes
Reason missing
Cost of Goods SoldExpense$2,100,000$2,300,000$200,000Unfav+9.5%No—
Professional FeesExpense$180,000$310,000$130,000Unfav+72.2%Yes
Reason missing
Travel and EntertainmentExpense$0$45,000$45,000UnfavNMNo—
Interest ExpenseExpense$60,000$58,000-$2,000Fav-3.3%No—
Meridian Outfitters grew revenue $600,000 (12.0%) Q1 → Q2 FY26, driven primarily by a new managed-services line: Service Revenue rose $250,000 (31.3%), attributed by the controller to two enterprise contracts signed in the period and expected to recur. Marketing Expense fell $240,000 (53.3%) after the Q2 brand campaign was paused; the controller notes this is one-time and spend resumes next quarter — the decrease is favorable to the expense line but not necessarily a sign of reduced future spend. Professional Fees rose $130,000 (72.2%) on outside counsel for a vendor contract renegotiation and a one-time audit readiness engagement. The controller's stated drivers sum to $150,000 against a $130,000 computed variance — an over-explained $20,000 residual the report surfaces rather than silently reconciling, since only the controller can say which figure is imprecise.
↓ Download flux-sample.csv

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.

QUESTIONS

Flux questions

Do I have to explain every account?
Only the material ones. An account is material when its change is at least $50,000, or when it moved at least 10% and by at least $10,000. You can change those thresholds.
What kind of file can I upload?
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.
What happens if a row in my file 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.
What is the difference between Generate draft and Finalize & generate?
Generate draft writes a report from the analysis as it stands, without finalizing. Finalize & generate locks the analysis and then writes the report.
Can I publish a draft?
No. A draft is a real version you can read, but it cannot be published: a flux version can be published only if it was generated after the analysis was finalized. Finalize, then generate again.
Can I undo finalizing?
No. Finalizing saves a permanent snapshot; there is no un-finalize. To keep working, use Duplicate to continue work (a corrected copy) or Start next period.
How do I carry on to the next period?
Once the analysis is finalized, choose Start next period. It 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.
How are the numbers checked?
The AI is not allowed to state any number that is not in your uploaded data. After the report is written, a validation pass reads each cited figure back against your data, and a report with unverified figures is shown as a Draft.
Who can see my analysis?
By default, the person who created it and the account owner. Writers can edit it, and readers can see finalized analyses and published reports. You choose who is which in Sharing on the analysis page.
Can I ask someone outside my account to explain an account?
Not for flux. Outside reason links are currently available for price-volume-mix only.

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.

KEEP EXPLORING
INVITE-ONLY BETA

Request an invite.

Invite-only beta · No credit card required