Lanes cut into a long dark table at first light. Paper slips move along them toward a bound binder. A coral thread runs down the middle lane.

Finance and controllership

The close that runs itself.

Our agents close your books every night of the month. By month-end the close has run thirty times. Your controllers review the exceptions and sign.

Today

The close still runs on overtime.

  • Your team waits on subledgers, bank feeds and review notes that come back at ten at night.
  • The rules live in spreadsheets and in the heads of senior accountants. Each departure takes some of them away.
Ink drawing of an empty finance desk at night: the lamp still on, the review notes stacked high, the chair pushed back.

Every night

Nine lanes of paper tiles on a dark floor, the certified ones ivory, flowing into a tall binder stack with a coral spine.
  1. Night 1 · 23:40

    Nine agents run the full close on the month so far.

  2. Night 1 · 02:10

    Accounts inside tolerance certify themselves. Large movements get a memo from their source rows.

  3. Night 9 · 06:00

    A bank line matches nothing. Its evidence pack is on your desk three weeks before month-end.

  4. Night 14 · 04:30

    Ines prepares an accrual and your controller approves it. The journal records the preparer and the approver.

  5. Night 21 · 03:15

    Carl matches both entities and hands the elimination to Ines. Carl never posts.

  6. Nights 22 to 30

    Each run starts where the last ended. The binder grows every night.

  7. Close day · 08:00

    The accounts are certified and the binder is built. Your controllers sign.

The nine lanes

Each agent carries a working name your team can change. The name is also its identity in Gate and the preparer on everything it produces.

  1. 01 Mara · reconcile

    Account certification

    Matches every subledger to its general ledger account under tolerance rules held in code. Exceptions arrive as evidence packs: the unmatched rows, the cause it traced and the proposed fix.

  2. 02 Theo · flux

    Variance memo

    Pulls the drivers for every account past its flux threshold and drafts the memo in your house format, citing the transactions behind the movement.

  3. 03 Ines · post

    Posted journal

    Drafts accruals, recurring journals and reversals. Runs the cutoff checks and posts through the sanctioned path. Write access is granted per journal class.

  4. 04 Carl · intercompany

    Matched elimination

    Matches balances across entities, drafts the follow-up requests for missing confirmations and hands every matched elimination to Ines. Carl has no posting right at all.

  5. 05 Sofia · fixed assets

    Depreciation run

    Runs depreciation on the asset calendar and drafts capitalisation and retirement journals. Impairment indicators go to your controller with the evidence attached.

  6. 06 Dane · revenue

    Deferred revenue schedule

    Checks cutoff between shipping and billing, keeps the deferred revenue schedules and drafts revenue journals from contract terms held in code.

  7. 07 Priya · tax

    Provision workpaper

    Builds the provision workpapers and deferred tax schedules and drafts the provision journals. Each judgment goes to your tax controller with its support attached.

  8. 08 June · binder

    Audit binder

    Ties every figure to its source, drafts the footnote rollforwards and disclosure tables from the same ledger rows and assembles the binder while the close runs.

  9. 09 Ravi · review

    Miss log

    Checks every posted journal and every memo against the rules, not a sample. A wrong entry is reversed through the posting path, and the miss becomes a change to the close code before the next night.

A sheet of paper passing through a narrow slot cut in a dark steel plate, two square seals at its foot, coral and ivory. More sheets wait behind.

Controls

The agent that prepares a journal can never approve it.

Each agent works under its own identity in your systems, never a staff login.

  • Revoke a grant mid-close and the next request is denied.
  • The access log shows any altered record and goes into the binder as evidence.
Gate policy

Segregation of duties is written as policy in Gate and enforced on every request. Approval stays a control your controllers keep. The other lanes keep moving while a journal waits for its approver.

// Gate policy (Cedar)
forbid (principal, action == Action::"approve", resource is Journal)
when { resource.preparer == principal };

permit (principal in Agents::"posting", action == Action::"post", resource is Journal)
when { resource.class in principal.granted_classes
       && resource.approver != resource.preparer };
An open ring binder on dark felt. Fine coral threads run from figures on its pages to the small source slips laid out beside it.

Audit

Your auditor reruns it and gets the same answer.

June builds the binder as the close runs, every figure tied to its ledger row. Certifications are code with tests.

Binder contents
  • Tick and tie support for every figure, linked to the source rows.
  • Footnote rollforwards and disclosure tables drafted from the same ledger rows, never retyped.
  • Every flux memo with the transactions it cites.
  • Every journal with its preparer, its approver and the rule it passed.
  • The Gate log for the period and Ravi's miss log.

Learning

A correction ships the same night.

A controller's correction becomes Operating Code with a test. Once the test passes, every agent runs with it.

close/flux/drivers.py Release 2026.03.14-2
# Controller, 14 March: FX revaluation is never a flux driver.def drivers(account, period): rows = movements(account, period) if account.revalued: rows = [r for r in rows if r.source != "fx_reval"] return rank_by_amount(rows) def test_fx_reval_is_never_a_driver(): memo = draft_memo(revalued_account(), "2026-03") assert "fx_reval" not in memo.sources

test passedreleased 23:58nine lanes updated

Architecture

  1. Operating Code

    Tolerances, cutoffs and posting rules run as tested code.

    • close/reconcile
    • close/flux
    • close/post
    • close/intercompany
    • close/assets
    • close/revenue
    • close/tax
    • close/binder
    • close/review
  2. Gate

    Agents read and draft. They post only where your controllers grant it.

  3. Your infrastructure

    Ledger data stays in your network. Or we run it for you on Marbell Cloud.

  4. Fleet

    The coordinator re-plans at 06:00 and when a blocked item clears. A restart never posts twice.

For your engineers
  • Operating Code rewrites the instructions, rules, plans and memory an agent is usually assembled from as code. Rules become if statements, plans become loops, memory becomes variables and records, and checks become tests. It grew out of the recursive self-improvement harness our own persistent agents run on.
  • The close/ package has a module per lane. Types make states explicit: an elimination is Proposed, Matched or Posted. Preconditions stop the work early: no certification while a subledger is unposted, no period close with intercompany open.
  • Comparisons run in document currency. No journal can bypass the posting path. Reserve movements and impairment calls go to your controller with the evidence attached. Estimated accrual rates stay marked provisional, with their owner, until they are confirmed.
  • A test fails the build if any agent instruction lives outside the code, so the close cannot drift into notes and prompts.
  • Every task carries a key built from its account, period and step, so a restarted agent finds its own finished work and never certifies or posts twice. The supervisor retries a failed job twice from its checkpoint. After that the coordinator takes it, and within the hour it reaches your on-call accountant.
  • The critical path is explicit. Subledgers post before accounts reconcile, flux runs before consolidation, and review closes the period.
  • Tolerances, materiality and cutoff windows are values your controllers set. Every change ships as a versioned release with its test, so any night can be rerun on the code it used.

Systems

Spreadsheets are outputs for your team. The fleet never takes a figure from them.

  • SAP S/4HANA
  • Oracle Fusion
  • NetSuite
  • Dynamics 365
  • Bank feeds
  • Consolidation
All systems
  • Treasury feeds
  • Fixed asset and revenue subledgers
  • Tax provision workpapers
  • Snowflake and PostgreSQL
  • SharePoint and network shares
  • Your close task tracker
  • A homegrown general ledger

Payables joins next on the same queue, then automated testing of your internal controls over financial reporting.

Close view of a thick binder's spine, its dark pages sewn together by a coral thread that leaves the last stitch in a long curve.

Start with last month's close.

We run two account reconciliations and a flux package from last month. The pilot is paid to hit a number your controller picks: cycle time, accounts certified without a touch, flux memos right first time or hours returned.

Describe your close