Rescue & correctness
For numbers that are quietly wrong. We trace the symptom back to the parts of the system that disagree, fix the disagreement rather than the symptom, and leave tests behind.
Everything below is something we've shipped into a production Odoo system, and each practice links to the case studies that show it.
For numbers that are quietly wrong. We trace the symptom back to the parts of the system that disagree, fix the disagreement rather than the symptom, and leave tests behind.
VAT return engines on both platforms, including multi-company GCC reporting; Saudi ZATCA e-invoicing on UBL 2.1; Saudi labour-law overtime; and leave balances that follow each employee's service year.
Modules that extend Odoo rather than editing its core: 55 built by the team on Odoo 17 and 24 on Odoo 18, running in production today.
Biometric attendance devices, WhatsApp through Meta's Graph API or Twilio, Central Bank of the UAE exchange rates, and vision and language models — with credentials in configuration, never in code.
Document intake and pipeline generation where someone can check the output. The model drafts; it never writes to the database on its own.
A no-code dashboard builder that respects access rights, letterheads an admin changes without a deployment, and Excel exports laid out like the official form.
A no-login attendance kiosk where employees identify with their Iqama and employee ID, check in or out and request corrections — and a portal to request, return or report a fault on company assets.
Module PIN locks, a guarded database manager, scheduled backups, and deployments that upgrade only the modules a change touched — in dependency order, rolling back if an upgrade fails.
The tools behind the case studies on this site.
Both, in production. MAFA Group runs on Odoo 17 and the aviation and charter platform runs on Odoo 18. The conventions differ between the two versions, and we keep them apart.
That's most of what we do. MAFA Group's four company instances have been maintained continuously since April 2025 — fixes, new modules and compliance changes shipped into a system the business runs on every day.
Yes, in two different shapes. MAFA is one Odoo 17 codebase deployed as four separate instances. The aviation group is one Odoo 18 instance running three companies, and a new operating company gets its own document numbering without any setup.
Where a person can check the output. On the customer-onboarding pipeline a vision model fills a form and an admin approves it — the model never writes to the database directly. The CRM assistant runs only when a user asks, against any OpenAI-compatible provider.
In configuration, never in code. Recovery secrets for security features go a step further and live in the server config file, so database access alone can't reset them.
We're a remote team across Pakistan and Saudi Arabia, working on systems for companies in Saudi Arabia, Germany, Pakistan, the UAE and Bahrain.
Describe the symptom. We'll tell you which of these it is — and whether we've fixed a version of it before.