Consolidating three subsidiaries into one statement
Consolidation is where errors hide. Pull three subsidiaries' P&Ls into one set of figures and the numbers will usually look fine, the failure mode is a line that's quietly understated, not one that's obviously wrong. The value of an agent here is that it holds the whole picture and notices the line that doesn't fit the pattern.
This recorded run merges three Vietnamese subsidiaries, Hanoi, HCMC, and Da Nang, into a single consolidated statement, then flags the one figure worth a second look.
Recorded run, the agent builds the consolidated grid line by line, flags a soft spot, then writes the report. All figures are the grid's own.
The agent consolidates four lines, Net Revenue, Operating Expenses, Total Assets, Total Liabilities, into one view: group revenue 125B VND, expenses 85B VND, net income 40B VND. Then it does the thing a spreadsheet won't: it notices that Da Nang's operating expenses are far too light relative to its revenue, compared to how the other two subsidiaries run. That pattern usually means a Q4 accrual didn't make it in.
So it flags the consolidated expense line with a note, adjusts it (+5B VND), and net income settles at a more honest 35B VND. Finally it writes up a consolidated statement on the Report tab, with the one adjustment called out for a controller to confirm, not buried.
Judgement over transcription
The interesting tools here aren't the ones that move data around, they're the ones that let the agent reason about it:
{
name: 'validate_data',
description: 'Check consolidated figures for anomalies',
handler: async () => {
const { errors, warnings } = gridRef.current.validateData();
return JSON.stringify({ errors, warnings });
},
},
{
name: 'update_combined_item',
description: 'Adjust a consolidated line and attach a note',
handler: async ({ item_id, updates }) => {
return gridRef.current.updateCombinedItem(item_id, updates);
},
}
validate_data gives the agent a place to apply ratios and sanity checks; update_combined_item lets it correct a figure and leave a paper trail. The consolidated grid stays the record of truth, the agent annotates it, it doesn't replace it.
The pattern behind all four demos
Across the form filler, the two reconcilers, and this one, the shape is identical: define the agent in markdown, hand it a few of your product's real functions as tools, and let it work inside your UI where users already are. The demos are recorded so they're deterministic and honest, but the integration you'd ship is the same code.
Try it
Explore the live samples, read the docs, or install and build your own:
curl -fsSL https://distri.dev/install.sh | sh
