🚀 Launching Soon: Get 1 Month of Growth Tier Free by signing up for Early Access

FinanceOps · Journey · Built for Controllers

Three files. Seven stages.
One closed book.

Rohan is a controller at a four-entity manufacturing company. It's close day. He uploads three files. Forty-seven minutes later the entity period is CLOSED, the audit trail is exported, and the recurring TDS pattern is permanently learned. Here's how it actually runs.

Start the journeyFinanceOps overview
Controllers
run the close
FinanceOps leads
own the workflow
Group CFOs
see all entities
Statutory auditors
trust the trail
Meet the agents · before stage 01

Five named agents do the work — same names you'll see in the chat agent and the audit log. Each one owns one or two stages of the close.

Stage 01 · 02
Iris
Ingestion + schema
Stage 03 · 05
Argus
Rules + triage
Stage 04
ACRE
Matching engine
Stage 06
Clio
Cross-period memory
Stage 07
Hermes
Closure + export
01
~4s · drag-and-drop
Agent · Iris

Three files at 8 AM on close day

Bank statement (CSV). AR aging (XLSX). GL extract (vendor-formatted CSV). Rohan uploads them as-is — no manual cleanup, no header renaming, no row pruning. The first reconciliation happens before his second coffee.

Inbox · 8:02 AM · close day
bank-stmt-mar.csv
1,204 rows · 412 KB
ar-aging-mar.xlsx
248 rows · 188 KB
gl-extract-mar.csv
14 rows · 94 KB
Iris ingests · no manual cleanup required
raw upload·3 files · 4,103 rows
02
~6s · per source
Agent · Iris

Schema detection — every file is identified

Iris recognises the AR aging shape (invoice number, customer, due date, balance, days outstanding) and the GL extract shape (journal_id, posting_date, debit, credit, account). Field roles tagged automatically. No manual column mapping.

Detected schema · ar-aging-mar.xlsx
invoice_noTEXTrole · key
customer_nameTEXTrole · counterparty
due_dateDATErole · date
balanceAMOUNTrole · amount
days_outstandingINTrole · metadata
typed·AMOUNT • DATE • COUNTERPARTY detected
03
~10s · accountant reviews · reusable
Agent · Argus

Argus proposes a SUM_AGGREGATE rule

Source rows and target rows don't share 1-to-1 cardinality — the AR file has 248 rows and the GL has 14 journal entries. Argus surfaces this and proposes a SUM_AGGREGATE rule on the amount field with a counterparty partition. Rohan approves.

Argus suggests · awaiting your approval
rule_type: SUM_AGGREGATE
on_field: amount
partition_by: counterparty
tolerance: ₹100 + 0.5%
date_window: ±7 days
Why a rule, not just a match? Because next month's close should run the same way — without re-explaining the residual band.
rule active·SUM_AGGREGATE · partitioned by counterparty
04
~3s · 4,103 rows · 9 groups
Agent · ACRE

Subset-sum on the unmatched pool

ACRE runs L1 exact + L2 fuzzy + L3 LSH on the keyed fields. Then Stage 1.5 — the aggregation blocker — searches for subsets of AR rows summing to each GL JE within tolerance. Twelve invoices match the ₹25 lakh JE in 240 ms. Eight more groups land across the rest.

The wedge: subset-sum, animated
This is the wedge

Want to see twelve of your AR invoices snap to one of your GL entries? Bring last month's extracts.

Run subset-sum on your ledger
ACRE · Subset-sum

12 AR invoices, summed to one GL journal entry — in seconds, within tolerance.

Running sum
0
INV-001
2,15,000
INV-002
1,98,500
INV-003
2,45,000
INV-004
1,78,000
INV-005
3,12,000
INV-006
2,20,500
INV-007
1,87,500
INV-008
1,98,000
INV-009
2,35,000
INV-010
2,15,000
INV-011
1,95,000
INV-012
1,00,500
ΣSUM_AGGREGATE
General ledger · Journal entry
JE-2026-04-001
25,00,000
Matched · residual ₹0
Stage 1.5·tolerance ±0.5% or ±₹100
Searching subsets…
matched·12 invoices → 1 JE · ₹25,00,000 · residual ₹0
05
~12s · per investigation
Agent · Argus

Three stragglers, one TDS variance, one wrong vendor

After aggregation, 23 AR rows remain unmatched. Argus investigates: 18 are recurring late-payers (memory matches them to prior MISSING_TARGET fingerprints — flagged but expected), 3 await next month's settlement, 1 is a ₹2,847 TDS rounding diff inside an otherwise-matched group, 1 is a wrong-vendor entry to reverse on the GL.

Argus · investigation report23 unmatched · 4 categories
VALUE_MISMATCH₹2,847 · TDS rounding inside matched group
MISSING_TARGET3 stragglers · awaiting next-month settlement
MEMORY_MATCH18 late-payers linked to prior open items
WRONG_VENDOR1 GL entry · reverse and re-post
VALUE_MISMATCH·₹2,847 · TDS rounding inside matched group
06
instant · already indexed
Agent · Clio

The TDS pattern is now learned

Clio fingerprints the TDS rounding pattern by (counterparty, residual_band, direction) and tags this counterparty with LATE_SETTLER_AVG_4D after three consecutive cycles of confirmed matching. Next month, the same counterparty's late settlement auto-links to its prior MISSING_TARGET. The exception is closed before Rohan sees it.

Clio · counterparty memory
Acme Industries Pvt Ltd
tag · LATE_SETTLER_AVG_4D
· Jan 2026 · settled +5d · ₹2,84,000
· Feb 2026 · settled +4d · ₹3,12,500
· Mar 2026 · settled +3d · ₹2,98,750 ✓ pattern confirmed
Next month: late settlement auto-links · exception closed before review.
linked·to Feb open item · pattern: LATE_SETTLER_AVG_4D
07
~2s · audit bundle exported
Agent · Hermes

TIE_OUT_PENDING flips to CLOSED

Rohan reviews the 9 AGGREGATION_CANDIDATE exceptions, confirms the subsets, signs off on the wrong-vendor reversal, and clicks Close. Hermes orchestrates: marks the entity period CLOSED, exports the audit-ready report (matched pairs, residuals, rule reasoning, reviewer/approver stamps), archives the run.

CloseCycle · Mar 2026 · Entity 01
PERIOD CLOSED
Wall time
47 min
Auto-matched
94.2%
Reviewer
Rohan K · Controller
Approver
Priya S · CFO
audit-trail.xlsxmatched-pairs.csvunresolved-breaks.csv
CLOSED·47 min total · audit trail intact
Cycle recap · numbers from this walkthrough
rows processed
4,103
aggregation groups
9
exceptions investigated
23
wall time
47 min
audit bundle
1
Questions from the pilot

What controllers actually ask after walking the journey

Is the controller (Rohan) approving every match by hand?

No. ACRE's aggregation candidates land in a review queue with a confidence score. High-confidence groups can be approved in bulk; only edge cases — wrong vendors, unexplained residuals outside tolerance — require a click. The 47-minute cycle includes the human review time, not just the engine time.

What happens if next month the SUM_AGGREGATE rule needs tweaking?

Argus surfaces tolerance drift when the residual band creeps. The rule is editable; every edit is versioned in the audit log with reviewer, timestamp, and reason. Old runs replay against their historical rule version — reruns stay deterministic.

Does the memory layer ever auto-close exceptions without me looking?

Only after three confirmed cycles of the same fingerprint pattern, and only when a counterparty is tagged (e.g. LATE_SETTLER_AVG_4D). The first auto-close on a new pattern lands as a notification, not a silent action — you can revoke the tag from the counterparty intelligence panel.

Can I run this journey on my own ledger before signing anything?

Yes. The Week-1 plan on the FinanceOps overview page is exactly that — replay your last closed period's AR-to-GL on ReconPe, compare match rate and time-to-close against your spreadsheet, and only commit if the numbers tie.

What about AP-to-GL, intercompany, and GSTR-2B?

Wave 1 ships AR-to-GL and Bank-to-GL. AP-to-GL, intercompany mirror matching, and GSTR-2B versus GL are on the Wave 2 roadmap with named quarters. We don't claim shipped what isn't.

End of cycle · the next close starts here

Next month's close runs on this month's memory.

Every confirmed match, every approved subset, every learned pattern carries forward. Your close gets faster every period — without your team writing a single line of code.