A finance and commercial platform over SAP and Zoho data for a products business unit. The ownership rules people applied by hand are written down, so a figure opens to the rule and the source lines behind it.
The month closes. Finance pulls the SAP reports, and each business-line head starts working out which transactions are theirs, in their own Excel file.
Questions go back to Finance and figures get reworked. Someone assembles the unit’s pack in PowerPoint, and the numbers can keep moving almost until the meeting starts. The pack reaches management 4–5 days after close, and part of the meeting goes on agreeing which figure is right.
Underneath sat a gap between the ledger and the business. SAP held every posting, but it did not say which business line owned a sale, a receivable or a supplier bill, so that was worked out by hand each month, and sometimes in the meeting itself.
The forecast was one number per business line. An open order can bill this month or slip a quarter, and the number did not say which it assumed.
Each head spent an estimated 6–8 hours a month on their part of the pack Estimate: 48–64 hours across the unit, before Finance’s own work. Fig. 1 shows the loop as it ran.
In SAP’s own structure, which does not say which business line owns each posting
Each head works out which sales, receivables and bills are theirs
6–8 h per line, every month Estimate
Reworked figures assembled into the unit’s PowerPoint
Which figure is right? Part of the meeting goes on agreeing it
Back to Finance. Questions go back, and the figures can keep changing almost until the meeting.
Each step that was rebuilt or argued over by hand now has a written rule or a check, and the decisions stay with the people who own the figures.
| Step | Before | With the platform |
|---|---|---|
| Close → figures | Finance pulled the SAP reports after close, and the unit’s figures arrived 4–5 days later | Figures refresh daily from SAP and Zoho, and each role opens its own on any day of the month: salespeople their book, line heads their line, management the whole unit, Finance the reconciliation |
| Ownership | Each line head worked out which sales, receivables and supplier bills were theirs, in their own Excel file | Written ownership rules place each row in a business line and label how sure the placement is. A row no rule can place is held apart, and material cases go to Finance’s exception queue |
| Reconciliation | Questions went back to Finance, and figures were reworked until close to the meeting | A tie-out board checks revenue and stock against the ledger, and every ownership rule for totals kept and nothing counted twice, before anyone reviews the figures |
| Forecast | One number per business line, with nothing to show what it assumed | Salespeople phase their own open orders by month, with CRM opportunities, letters of intent and market assumptions as separate layers that management can challenge |
| The review | A pack presented from PowerPoint, and part of the meeting spent agreeing which figure was right | The review runs on the platform, line by line, from figures that have passed the tie-out. No separate pack is built |
| Follow-up | Actions agreed in the meeting lived in notes and email | A figure that needs attention raises an action with an owner and a due date, and the next review reads it back against the same figure |
| Month to date | Actual | vs budget |
|---|---|---|
| Revenue | 4.82 M | −5.5% |
| Gross margin | 21.4% | −0.6 pt |
| Balances today | ||
| Order book | 11.30 M | |
| Unbilled work | 0.74 M | |
| Receivables overdue | 1.96 M | |
| Stock | 3.10 M | |
| Document | AED | Rule that placed it |
|---|---|---|
| INV 9002871 | 214,000 | R-DEMO-01 billing documenthigh |
| RET 1400562 | 48,200 | R03B invoice in the referencehigh |
| INV 9003310 | 96,500 | R-DEMO-07 sales orderhigh |
| INV 9003377 | 12,300 | R-DEMO-22 customer’s usual linemedium |
Each line opens to its source document and to the rule that placed it, with how sure that rule is.
| Check | Residual | Status |
|---|---|---|
| Revenue ↔ ledger | 0.1% | Pass |
| Ledger accounts mapped | 100% | Pass |
| Stock ↔ ledger | 0.2% | Pass |
| Receivables kept | AED 0 | Pass |
| Receivables counted twice | 0 lines | Pass |
| Order book, high confidence | −3.4 pt | Warn |
One check is outside its tolerance, and the board shows it before anyone reviews the figures.
| Customer | Overdue | Promise |
|---|---|---|
| Coral Point Contracting | 214,000 | 15 Octopen |
| Bayview Facilities | 96,500 | 30 Sepmissed |
| Raised from | Receivables 91–180 days, Line 3 |
| Customer | Coral Point Contracting, AED 214,000 |
| Owner | Salesperson S-14 |
| Due | 30 October |
| Promise | Payment by 15 October |
| Status | Open |
At the next review, read back against the same figure.
I’d start with your last month-end pack: the reports Finance pulled and the files each business line rebuilt from them.
They show which rules already decide who owns a sale, a receivable or a bill, and where the figures get argued over. The first version reads the ERP and CRM your team already uses, and its totals are agreed with your Finance team before the first review.
Discuss a system like this Try it on a sample companyEach day the platform reads the source data where it lives, runs every row through the written rules, checks the totals and publishes one review page per business line.
A row keeps the rule that placed it all the way to the review, so any figure traces back to its source lines. The drawing follows one fictional sale through the build, and the same customer’s older invoice into the follow-up.
SAP and Zoho data land in the company’s AWS data lake, which the data-lake team runs. The platform reads it through Athena and keeps the working set in memory, so the lake’s SAP tables are never copied to its own disk. Across the company’s datasets, about 90,000 new source lines arrive each month, and each build re-evaluates about 110,000 open records.
Rules decide which business line owns each sale, receivable, bill and order, and which salesperson owns each sale: about 37 revenue routing rules, a receivables hierarchy of about 27 steps, and about ten payables methods across five confidence tiers. Another 253 general-ledger mappings build the profit and loss structure. Routing rules carry validity dates, so older transactions route by the rules of their time. High-confidence rows flow straight through, lower-confidence placements carry their label, and rows no rule can place stay outside every line (detail A).
Finance has its own control pages. The tie-out board compares revenue and stock with the general ledger, checks that the ledger’s accounts are mapped, and tests every attribution engine for preserved totals, double counting and drift in confidence. Each check shows its residual: inside the agreed tolerance it passes, and outside it the board warns or fails. The exception queue lists material cases by amount, age and owner. A management figure opens to the rule that classified it and the source documents behind it.
Each business line has a review page, current to the last daily refresh: revenue and margin against budget, the profit and loss statement, the order book, unbilled work, receivables and stock. The forecast pages show what each number rests on. Salespeople phase their own open orders by month and add CRM opportunities, letters of intent and market-demand assumptions as separate layers (detail B).
A figure that needs attention can raise an action with an owner and a due date, and collection promises are tracked against the customer. The next review reads back the open actions against the same figures, so the meeting can see whether each one moved them. In August 2026 the audit log recorded 1,927 user actions across the platform, and receivable statuses changed 823 times.
The tempting design: put every transaction in its likeliest business line and show a clean total. A wrong placement shown as certain then moves money between two line heads, and nobody can see that it happened.
The tempting design: phase open orders automatically and call the total a forecast. An open order can still slip or cancel, and business still to be booked would disappear from view.
Finance trusts a figure it can check. Each row below is a question found during the build and settled at its cause, and each traces to a design document or a commit.
Most started from one specific figure that had to be right, and each ended with a rule or a regression check that keeps it right as the data grows.
valid_from and valid_to dates, and the lake extract drops other divisions’ rows before the engine sees them. Caught and corrected in the design review, before any figure shipped.Row E shows the method: sit with the people who own the figures. Ten minutes watching the Accounts team read the customer ledger showed how they settle an invoice, a payment and a retention together, and the platform now reads those entries the same way. A report can reconcile to the ledger and still misread what the transactions mean.
Your version starts from the same method: your ownership rules written down and checked against your ledger, so the review opens on figures that have passed the tie-out.
The platform runs in production for a products business unit, and its extension to service contracts in Facilities Management is in pilot, aimed at more than 1,500 live contracts. I built the application end to end, from the first interviews with Finance and the business-line heads to the training sessions.
If your business lines rebuild their figures in Excel after each close and the review starts by agreeing which number is right, the fix starts with last month’s pack. Bring it.