An outsourced accounting firm, 10–15 people, 30–40 clients on the books. Source documents arrived however they arrived: by email, in messengers, as a batch of scans at the end of the month, sometimes on paper. An accountant opened each one, read off the counterparty, the amount, the tax and the date, and typed them into the accounting system by hand. Around twelve minutes a document, and half of that was not accounting — it was retyping. Reconciliation ran the same way: the bank statement on one side, the ledger on the other, line by line and by eye. A discrepancy surfaced on the third day of the close, and finding its cause took another day. Some documents simply went missing between an inbox and a folder and resurfaced a quarter later. Work on a client was split into parts across several people rather than owned end to end, so a missing document or an unexplained line bounced between them before anyone could answer for it. The close was capped by people rather than by data: the peak fell on the same five days every month, and in those days the firm could not take on a new client because there was nobody to give it to.
The same stack as on our other projects: Python and Django at the core, PostgreSQL as the source of truth for the document, the counterparty and the entry. We did not replace the accounting system — it stayed the system of record and reporting, and the platform exchanges data with it. A document lands in one intake whatever channel it came from: mailbox, messenger, upload, scan. The model reads off the details, the platform checks them against the counterparty card and the contract, scores its confidence field by field, and either posts the document itself or puts it in a queue for a person to look at. Low confidence is not an error, it is a route.
The order was set by the money: first the thing that removes the manual entry, then reconciliation, then reporting.
A qualified accountant spent half the day retyping details out of PDFs, and that — not the difficulty of the accounting — was what capped the firm’s capacity. So the first loop was intake and posting, and reconciliation came only after it. The three months went mostly on the exchange with the accounting system and on the shapes of the source documents themselves: every client has their own.
The service pages explain the method behind this project; the solution pages take the same building blocks on their own, each with its own scope and price.
We use cookies for analytics — to see which pages bring enquiries. Nothing else, and nothing before you agree. Cookie Policy