← The Machine Room · Case file 004: Finance & Commercial Performance Platform In production since July 2026 · Sheet 1 of 8
Case file: Finance & Commercial Performance Platform, management reporting and FP&A Drawing no. AH-CS-004

The monthly management pack is gone. Eight business lines now review figures that refresh daily and reconcile to Finance.

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.

SAP and Zoho → about 450 rules and mappings → eight business lines
→ checked against the ledger → the monthly review → owned actions

Totals reconcile to Finance
within agreed tolerances Verified
Daily
Management figures, refreshed from SAP and Zoho
Previously 4–5 days after month close Verified
Drawn byAbu Huraira Mukhtar
RoleLead, sole application developer
Build window2026-03 to live, 2026-07
First review on the platform19 August 2026
Scale8 business lines, 43 users
OrganisationWithheld; UAE engineering group
StatusIn production since 14 July 2026
SourceProduction records, Sep 2026
Sheet 2 of 8: In briefThe case in four parts

01 · The short version

The problem
Every month, Finance pulled the SAP reports and each business-line head rebuilt their own figures in Excel, working out which sales, receivables and supplier bills were theirs. The pack reached management 4–5 days after close, and part of each review went on agreeing which figure was right.
What I built
A platform over the company’s SAP and Zoho data. About 450 written rules and mappings decide which business line owns each sale, receivable and supplier bill and build each line’s profit and loss, and a tie-out board checks the totals against the ledger before anyone reviews them. Each role sees its own part, from a salesperson’s book to the whole unit.
How it went
In production since July 2026 across eight business lines. In August, 36 of the 43 people in scope used it, and the first full monthly review ran on the platform with no separate pack. The VP and Finance managers reconciled its totals against their own reference figures, within agreed tolerances.
What you’d get
Your business lines’ figures, refreshed daily from the ERP and CRM you already run, with your ownership rules written down. The monthly review starts from figures already checked against your ledger, and nobody builds a pack.
Sheet 3 of 8: Field notesThe before-state

02 · Every month, the pack was rebuilt by hand

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.

General notes
1. Eight business lines in one products business unit Verified
2. 43 people in scope, from salespeople to the EVP
3. SAP for the books, Zoho CRM for the sales pipeline, both in the company’s data lake
4. Organisation withheld: detail available in interview
Fig. 1: The month-end loop, as it ranBefore the platform
Sheet 4 of 8: Before and afterOne month, step by step

03 · The meeting starts from agreed figures

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.

StepBeforeWith the platform
Close → figuresFinance pulled the SAP reports after close, and the unit’s figures arrived 4–5 days laterFigures 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
OwnershipEach line head worked out which sales, receivables and supplier bills were theirs, in their own Excel fileWritten 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
ReconciliationQuestions went back to Finance, and figures were reworked until close to the meetingA 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
ForecastOne number per business line, with nothing to show what it assumedSalespeople phase their own open orders by month, with CRM opportunities, letters of intent and market assumptions as separate layers that management can challenge
The reviewA pack presented from PowerPoint, and part of the meeting spent agreeing which figure was rightThe review runs on the platform, line by line, from figures that have passed the tie-out. No separate pack is built
Follow-upActions agreed in the meeting lived in notes and emailA 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
What each role sawSix panes from the review, forecast and Finance pages, redrawn in outline with fictional figures
Line 3 review, AEDFacsimile
Month to dateActualvs budget
Revenue4.82 M−5.5%
Gross margin21.4%−0.6 pt
Balances today
Order book11.30 M
Unbilled work0.74 M
Receivables overdue1.96 M
Stock3.10 M
Revenue, solid; budget, dashedApr to Sep
1. The line review. Each business line’s page, current to the last daily refresh: revenue and margin against budget, the order book, unbilled work, receivables and stock.
Drill: Line 3 receivablesFacsimile
DocumentAEDRule that placed it
INV 9002871214,000R-DEMO-01 billing documenthigh
RET 140056248,200R03B invoice in the referencehigh
INV 900331096,500R-DEMO-07 sales orderhigh
INV 900337712,300R-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.

2. The drill. A figure opens to the lines behind it, so a line head can see why a receivable sits in their business.
Tie-out boardFacsimile
CheckResidualStatus
Revenue ↔ ledger0.1%Pass
Ledger accounts mapped100%Pass
Stock ↔ ledger0.2%Pass
Receivables keptAED 0Pass
Receivables counted twice0 linesPass
Order book, high confidence−3.4 ptWarn

One check is outside its tolerance, and the board shows it before anyone reviews the figures.

3. The tie-out board. Finance’s view: each check, its residual, and whether it passes within the agreed tolerance.
Forecast, Line 3, AED MFacsimile
5.6Oct5.1Nov4.4Dec3.9Jan
Open orders, phasedCRM opportunitiesLetters of intentMarket assumption
4. The forecast. Salespeople phase their own open orders by month. CRM opportunities, letters of intent and market assumptions sit above them as separate layers.
Receivables, Line 3, AED MFacsimile
0–30 days2.10 31–901.35 91–1800.48 180+0.13
CustomerOverduePromise
Coral Point Contracting214,00015 Octopen
Bayview Facilities96,50030 Sepmissed
5. Receivables. The line’s ageing, with each customer’s collection promise and whether it was kept, ready for the review.
Action A-0412Facsimile
Raised fromReceivables 91–180 days, Line 3
CustomerCoral Point Contracting, AED 214,000
OwnerSalesperson S-14
Due30 October
PromisePayment by 15 October
StatusOpen

At the next review, read back against the same figure.

6. The action. Raised from a figure that needs attention, with an owner and a due date. The next review reads it back against the same figure.
Sheet 5 of 8: Approval plateWhat the case rests on

04 · The monthly review runs on the platform

36 of 43People in scope active in August 2026, about 84%, spanning salespeople, business-line heads, VP and EVP rolesVerified
0 packs to buildThe first full monthly review ran on the platform on 19 August 2026, with no separate Excel or PowerPoint packVerified
48–64 h a monthPack preparation removed across eight business lines, 6–8 hours each. About 576–768 hours a year, annualizedEstimate
~450Business rules and mappings written down, including 253 general-ledger mappings and about 22 allocation linesVerified
54 daysFrom usable data-lake access to the first full monthly review run on the platformVerified
1,927Audited user actions in August 2026, alongside 3,620 forecast rows saved and 823 receivable status changesVerified

How I’d start in your company

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 company
Sheet 6 of 8: Section A-A, one daily buildDrawing 004-A: cut through one build

05 · Every row keeps the rule that placed it

Each 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.

As built
Python and FastAPI engines, PostgreSQL, Next.js and TypeScript
SAP ECC and Zoho CRM, read through AWS Athena from the company’s data lake
Microsoft Entra single sign-on; row-level security in PostgreSQL
The application built end to end, on the company’s existing data lake
Fig. 2: Section A-A, one daily buildFictional sale; the stations and rule types are the platform’s
Station 1: the source, read in place

1The lake

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.

Station 2: about 450 rules and mappings

2The rules

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).

Station 3: the checks before the review

3The tie-out

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.

Station 4: one page per business line

4The review

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).

Station 5: the loop closes

5The follow-up

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.

Detail A, see station 2, the exception lane

Uncertainty stays visible

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.

Chose to let high-confidence rows flow, label lower-confidence placements as such, keep rows no rule can place outside every line, and send material cases to an exception queue with an amount, an age and an owner, because a visible gap can be worked and a hidden misallocation undermines every figure around it. Cost: the exception queue needs an owner. Gained: about 96% of receivables resolve at high confidence, as do 88% of payables by value; 94% of open sales orders resolve directly to a business line, and every remaining row carries its confidence label.
Detail B, see station 4, the review page

Every forecast amount has a source

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.

Chose to have salespeople phase their own orders by month and add CRM opportunities, letters of intent and market-demand assumptions as separate layers, because management needs to see the evidence under a forecast to challenge it. Cost: forecasting became part of the sales team’s work. Gained: in August 2026 the team saved 3,620 forecast rows and 215 letter-of-intent and market entries, each one open to challenge in the review.
Sheet 7 of 8: Revision historyAll entries traceable

06 · How the figures earned Finance’s trust

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.

Rev.
Date
What we found
What changed
Trace
A
2026-05
RoutingA first draft of the routing map sent another division’s special-project revenue into one business line. It looked plausible.
Dated rulesRules carry 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.
Design doc 14
B
2026-05
Receivables joinA reference field looked like the ideal join key because it was 98.9% populated. It matched 0.4% of receivables by value. Population is not join rate.
Probe, then rebuildThe chain was rebuilt on the billing document, which matched 79.6% of value on the first tier, with fallbacks and an audit entry for every rule that fires. The reference field now counts when it matches a known invoice (rule R03B).
Design doc 20
C
2026-05
Engine speedThe routing engine had to get faster before volumes grew, and any faster path risked changing a figure without anyone noticing.
Gate first, then speedThe bucket totals were frozen as a regression baseline and the refactor ran against it: 3.2 times faster, with the same output. The baseline is now the gate for later engine refactors.
Commit 4e937fc
D
2026-05
PayablesSupplier bills carried no direct link to the sale they served. The reference fields that did exist were filled for customs and other reporting.
Evidence pathsAttribution follows the purchase-order chain, goods receipts, vendor mappings and reference links, and each method sits in one of five confidence tiers. A bill no evidence can place stays out of every line’s payables and shows in the exception queue.
Commit 20df25a
E
2026-07
Receivables ageingA business-line head challenged a customer shown as overdue after the customer had paid. The receivables total reconciled, and the invoice, the payment and a retention were all present and correct.
Settlements, read as Accounts reads themAccounts treats those entries as one settlement, with the retention falling due later. Linking now uses proven payment-to-invoice references first and the assignment field where it is safe, and the view shows which postings form each settlement and which rule linked them.
Commit 0f22594

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.

Verification
Tie-out: each engine against its source
Reconciliation: Finance reference totals, within agreed tolerances
Adoption: production sign-in records
Hours: process estimate, 6–8 per line a month
Engineering recordProduction records, September 2026
~110,000Open records re-evaluated in each build, with about 90,000 new SAP and Zoho lines a month across the company’s datasetsVerified
~96%Receivables placed in a business line at high confidence. Payables reach 88% by value, and 94% of open sales orders resolve directlyVerified
109Permissions, with 249 role grants and about 1,300 rules on which fields each role can seeVerified
Sheet 8 of 8: Close-outFor your company

07 · What a version for your company adds

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.

Scope
Sources: SAP and Zoho, read in place
People: 43, from salespeople to the EVP
Reconciliation: within agreed tolerances
Hours saved: process estimate
Row
Part
In production
Your version adds
A
Business lines
Eight linesEach business line has its own review page, from salespeople to the EVP
Your structureYour units and lines, placed by the rules your Finance team already uses
B
The review
Daily figuresEvery line’s review is current to the last daily refresh
What changedA summary at the top of each review of what moved since last month, and why
C
Forecast
Evidence under each amountOrders, CRM opportunities, letters of intent and market assumptions, each a separate layer
Accuracy over timeEach forecast compared with the month as it closes, line by line
D
Controls
A tie-out boardRevenue, stock and receivables checked against the ledger within agreed tolerances
Your tolerancesYour controls and thresholds, agreed with your Finance team before the first review
E
Results
No pack to buildThe review runs on the platform; the hours it frees are a process estimate
A measured baselinePack preparation timed before launch, so the hours saved are measured from the first month
F
Service contracts
In pilotAn extension for Facilities Management, aimed at more than 1,500 live contracts
Contract marginsMargin, labour and unbilled work for every service contract you run
Discuss a system like this
Drawn & built by
Abu Huraira Mukhtar, first commit 2026-03, live 2026-07
A. H. M.
Sheet 8 of 8
End of case file 004
The Drawing Office: after hours

When every month-end means rebuilding the pack, give each figure a written rule and a check against the ledger.

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.

Contact me Back to the Machine Room