Case study — Twinbooks
Moving a decade of accounting, without losing a row.
A SaaS platform that migrates Belgian accounting firms from legacy systems to Odoo — with full history, attachments, and audit trail intact.
The problem.
Belgian accounting firms run on a small set of legacy systems — Winbooks, Sage BOB 50, Horus. Moving a client to a modern ERP like Odoo means moving years of journals, attachments, customers, and supplier history without breaking continuity. In practice this is done by hand, one client at a time, by people who shouldn't have to.
Twinbooks wanted to turn that one-off, error-prone migration work into a product — a platform their staff and partner firms could log into, configure a migration, run it, and see exactly what moved and what didn't.
What we built.
A full SaaS product from zero — backend API, dashboard, infrastructure. Multi-tenant from day one, so an accounting firm can manage migrations for many clients without seeing each other's data.
The hard parts were the ones that don't show up in a demo: encrypted credential storage for client database access, a migration lifecycle that survives interruption, file uploads large enough to move a decade of receipts, and a service-provider model that mirrors how Belgian accountants actually work with their clients.
Passwordless login, because accountants don't want another password. Full CI/CD into a staging-then-production pipeline, because a migration tool that breaks silently is worse than no tool.
Why it was hard.
Each legacy system stores the same accounting concepts differently. A journal entry in Winbooks is three linked rows; the same concept in Horus is a single flat record; Sage BOB 50 splits it again. A supplier with a VAT number in one schema is two unlinked records in the next. The migration logic isn't a script — it's a long sequence of carefully ordered transforms, each of which has to be replayable, observable, and reversible.
On top of that, real accounting data is sensitive. Credentials to client databases, financial history, customer records. Everything that touches a credential is encrypted at rest. Access is role-based per workspace, and audit-logged.
The outcome.
Twinbooks now runs as a live product at twinbooks.be, used by accounting professionals to onboard clients onto Odoo without the manual-migration tax.
The underlying architecture — multi-tenant, encrypted credential storage, service-provider relationships, full CI/CD — is the same shape we reach for whenever a Belgian SaaS needs to be production-grade from day one rather than rebuilt at year two.
Engagement.
Open Build. Designed and delivered end to end — product engineering, architecture, infrastructure, deployment.
Got a similar problem?
Multi-tenant SaaS, sensitive data, real production constraints. We've done it before.
Let's talkLean builders. We deliver.