← All workflows

scalably.io the work

How finance reads the ERP without touching it

The accounting system is the one thing in a company you must not break, and the one thing everyone wants answers from. So the HQ never asks it questions live. In agreed windows outside working hours, one read-only session copies what is needed; the copy is validated, sealed and promoted; and every dashboard, report and agent question is answered from that sealed copy.

A look under the hood: the shadow, the promotion gate, the finance views it feeds, and the two places a human stays in the loop.


The short version

A dedicated read-only login opens one session on the ERP outside working hours and reads the tables the finance views need. The result is written as a new generation, validated, and only then does an atomic pointer move to it; the previous generation stays available. The HQ reads only the hash-bound promoted generation. A browser request never falls back to the live ERP, not on a slow day, not on a failed sync, not ever. If the latest sync did not validate, the views show the last validated generation with the date it was taken.

That single rule, no live reads from the app, is what lets finance views be fast, safe and honest at the same time.

How finance reads the ERP without touching it The ERPlive, untouched One read sessionoutside working hours Validate, promotehash-bound generation Finance viewsledger · bank · tax · KPI read only browser reads this scalably.io

One read session, one validated promotion (green), one immutable generation the browser reads. The ERP itself is never touched by a dashboard or an agent.

What the snapshot feeds

From the promoted generation the HQ builds native finance views: the ledger, bank statements, tax books, settlement of open items, inventory classification, assets and a KPI board. These are workflows in the company's vocabulary, not the ERP's screens re-skinned, and every figure shows the generation it came from and when that generation was taken.

The same generation answers the agents. When a manager asks their agent for receivables past sixty days, the agent reads the shadow through the same scoped API the browser uses, with the same date stamp on the answer. It cannot reach the ERP, so it cannot slow it down, lock a table or see a row the person is not allowed to see.

E-invoices and payroll follow the same rule

The state e-invoicing portal is read the same way: invoices are browsed and reconciled in the HQ, never issued from it. Accounting preparation lives as versioned drafts. Payroll is a deterministic calculation with PDF, CSV and spreadsheet review files, and anything that would become a journal entry is produced as a guarded candidate for a human to post, never posted by the system.

This is the boundary we hold on purpose. Money, official records, stock and people are the four things the universal gate protects, and accounting touches all four. So the AI reads, prepares and reconciles; the accountant approves and posts. The trail shows who did which.

Why not just connect the agent to the database

Because a live connection is a live risk, and because "the model can query anything" is exactly the property that makes a finance system untrustworthy. A read-only login still holds locks, still competes with the bookkeeper's morning, still lets one clever question return rows nobody meant to expose. The shadow removes the whole class: bounded tables, one session, outside hours, validated before anyone sees it.

It also makes the numbers reproducible. Two people asking the same question on the same day get the same generation and the same answer. When the ERP is eventually replaced, the shadow protocol becomes the parity test: frozen months replayed against the new books until every difference is explained.

A dashboard that never opens the ERP cannot slow it down, lock it up or leak from it. That is the whole design.

Read this alongside This is one module of a company's own HQ. The same sealed-generation pattern runs the satellite cache and the fleet history, and the same gate stops any agent from posting, issuing or paying.
How finance reads the ERP without touching it scalably.io