A double-entry accounting platform for the Saudi market, built multi-tenant from day one and Arabic-first end to end. In production with a Gulf client.
The problem
Accounting software sold into the Gulf tends to be either an English product with Arabic pasted over it, or a local tool that stops at invoicing. Companies end up running the ledger in one place, inventory in another, payroll in a spreadsheet, and approvals over WhatsApp.
The brief was a single platform where the books, the warehouse, the till and the payroll all post into the same double-entry engine — correct in Arabic, correct for the market, and able to serve many companies from one deployment without their data ever touching.
What I built
Full double-entry engine, chart of accounts, journals, bank reconciliation and fixed assets with depreciation.
AR/AP, sales, procurement, inventory and POS — every transaction posting back into the ledger rather than living beside it.
Payroll, multi-step approval workflows, role-based permissions, and a platform admin plane for onboarding tenants.
SaaS subscription billing, plus a gated AI action layer — assistants can read and propose, but only permitted actions reach the ledger.
Decisions that mattered
Multi-tenant on day one
Tenancy is the hardest thing to retrofit, so isolation, scoping and tenant-aware queries were part of the first data model rather than a later migration.
Arabic-first, not Arabic-added
RTL through the whole interface, and through printed documents, statements and reports — where most localisation efforts quietly fall apart.
Tests on the money paths
231 backend test suites concentrated where a mistake is expensive: posting, balancing, tax handling, approvals and permissions.
AI behind a gate
The AI layer runs through the same permission model as a user. Nothing writes to the books that a role could not have written by hand.