A Norwegian multi-tenant ERP.
B2B accounting and operations for many organisations on one codebase, built under NDA. I can't name the client or show the screens. I can show the architecture, the constraints, and how a human approves everything the AI proposes.
- Role
- Sole engineer, design → ops
- Type
- Multi-tenant B2B platform
- Status
- Live, in production
- Governance
- Human-approval AI workflow
The situation
The brief was structural: one platform, many organisations, zero data leakage between them, and an AI-assisted expense pipeline a finance team could actually trust. Norway's 2027 e-invoicing mandate was on the horizon, and the client wanted it built in as a standing deadline, not discovered as a scramble.
What I made
A single codebase serving many tenants. Identity runs through Microsoft Entra ID. Tenant isolation is enforced in the database with row-level security, so a bug in application code cannot reach across organisations. The AI reads receipts and drafts the line items and VAT codes; nothing it drafts reaches the books until a person approves it.
The 2027 e-invoicing mandate lives in the platform as a compliance clock, so the deadline lands as routine work instead of an emergency.
Three decisions
Isolation in the database, not the code. Row-level security on every tenant table means the boundary holds even when the application layer is wrong. Application code is where bugs live; the database is where the guarantee has to be.
The AI drafts, a human commits. Extraction and drafting are automated. Approval is not. If the AI gets it wrong, nothing reaches the books on its own — a human is always the last step.
Compliance as a clock, not a project. The 2027 mandate is tracked inside the product from day one, so every release moves it forward a little instead of one release having to solve it all.
Outcome
Live and in production. Boundaries and controls described here are real; names, revenue and headcount are not disclosed. I can walk through the architecture in conversation under the client's confidentiality terms.
If you are building something similar, I read every brief myself and reply within 48 hours.
Project brief