ArvexiBuilders Blog

Roll Forwards That Generate Themselves

A controller at a major restaurant chain (8,800 locations, hundreds of active leases) told us something during a demo that changed how we think about the category:

"There's no software that does this, to my knowledge. My team generates this manually every month."

He was talking about roll forwards. The reconciliation artifacts every controller needs for period close, every auditor asks for during quarterly reviews. His team's process: two people, two hours, every month.


What a roll forward is

A roll forward explains how a balance moved from beginning to end of period. Beginning balance, plus new leases, plus/minus modifications, plus interest, minus payments, minus terminations, equals ending balance. The math must reconcile to the penny.

Reconciliation
Lease Liability Roll Forward — Q4 2025
RECONCILED
Beginning Balance
412 active leases
$45,892,341.67
New Leases
+$3.2M
$49,133,341.67
Modifications
$413K
$48,720,841.67
Interest Accretion
+$1.8M
$50,568,135.08
Cash Payments
$4.1M
$46,444,678.30
Terminations
$892K
$45,552,578.30
Ending Balance
= Beginning + Net Movements
$45,552,578.30
Click any movement row for details · Bars show relative magnitude · Running total on the right

Auditors, particularly Big 4, expect three of these every quarter: liability, ROU asset, and gain/loss. They must tie to the GL, and Q3's ending balance must match Q4's beginning. This is not a nice-to-have. It is the core deliverable of lease accounting close.


The manual process vs. the agent

Every platform in the market stores the data needed for a roll forward. Amortization schedules contain beginning balances, interest, payments, ending balances. Journal entries are tagged by type. Modifications carry before/after state. The data exists. No platform assembles it.

Speed Comparison
Manual Process vs. Arvexi AI Agent
Manual2 people
2h 0m
Export GL balances
15m
Pull lease schedules
20m
Categorize movements
25m
Cross-reference entries
20m
Build Excel workbook
25m
Review & fix errors
15m
Arvexi AI1 agent
~2m
get_portfolio_summary
18s
get_journal_entries
30s
compute → categorize
12s
get_lease_schedule
24s
compute → verify
6s
export_spreadsheet
30s
Click "Run Both" to start the race · Hover any step for details

Instead of building a fixed report template, we built an AI agent with access to 39 domain tools. The agent understands what a roll forward is, has direct access to every data table, and assembles the output dynamically. The entryType enum on journal entries is the key: INITIAL_RECOGNITION entries are new leases, MODIFICATION entries are remeasurements, TERMINATION entries capture removals.


The execution trace

The agent creates a plan and executes it step by step, streaming progress in real-time. Every tool call is visible, not a progress bar over a black box.

Agent Execution
6-Step Roll Forward Assembly
arvexi-agent — roll-forward-assembly
querycomputeexport
$ Generate roll forward for Q4-2025 lease liability portfolio
Click "Run Agent" to watch the execution trace · Click steps for output

The compute sandbox runs all financial math in an isolated V8 context with precision round() that avoids JavaScript's half-up rounding bug. No floats in the hot path. Decimal(18,2) in PostgreSQL, decimal.js in service code, precision round() in the sandbox. An end-to-end chain of financial-grade arithmetic:

function assertBalanced(lines: readonly any[], context: string): void {
  const totalDebits = lines.reduce(
    (sum: Decimal, l) => sum.add(new Decimal(String(l.debit ?? 0))),
    new Decimal(0)
  );
  const totalCredits = lines.reduce(
    (sum: Decimal, l) => sum.add(new Decimal(String(l.credit ?? 0))),
    new Decimal(0)
  );
  const diff = totalDebits.minus(totalCredits).abs();
  if (diff.gt(new Decimal("0.02"))) {
    throw new ValidationError(
      `JE unbalanced (${context}): debits $${totalDebits.toFixed(2)} ` +
      `≠ credits $${totalCredits.toFixed(2)}`
    );
  }
}

The output

The agent generates a professional 4-tab Excel workbook: liability roll forward, ROU asset roll forward, gain/loss detail, and supporting schedules. Not a PDF. Not a web page. A proper .xlsx with tabs, formatting, frozen panes, and formulas the controller can audit.

Generated Output
4-Tab Excel Workbook — Auto-Generated
Lease_Liability_RollForward_Q4_2025.xlsx
arvexi-agent
A2
Beginning Balance
Category
Leases
Amount
Running Total
2
Beginning Balance
412
$45,892,341.67
$45,892,341.67
3
New Leases
7
$3,241,000.00
$49,133,341.67
4
Modifications
3
($412,500.00)
$48,720,841.67
5
Interest Accretion
412
$1,847,293.41
$50,568,135.08
6
Cash Payments
408
($4,123,456.78)
$46,444,678.30
7
Terminations
4
($892,100.00)
$45,552,578.30
8
Ending Balance
415
$45,552,578.30
$45,552,578.30
Liability Roll Forward
Rows: 7Generated: 2025-12-31T23:59:47ZRECONCILED
Click any cell to see its formula · Switch tabs to explore all 4 worksheets

Numbers are formatted as currency. Sheet names are sanitized to Excel's 31-character limit. Cell values are intelligently coerced. The workbook is uploaded with a signed URL and delivered as a downloadable artifact in the AI workspace.

The controller who watched this during the demo said: "That workspace is one of the best things I've ever seen in a lease accounting software."

He was watching the agent assemble, in real time, the exact artifact his team builds manually every month.


See Intelligence and Lease Accounting to learn more about these capabilities.

Previous: Modification Accounting: ASC 842's hardest problem