Skip to Content
Odoo development & integrations

Odoo that fits how you already work.

Most Odoo problems are not configuration problems. They are the gap between the standard flow and the one process your business actually runs on. I build and fix that gap — custom modules, integrations, and the parts that have to talk to hardware, gateways and other systems.

Describe your problem See the work

What I build

Odoo 16 through 19, Community and Enterprise. Backend work, not theme tweaks.

Custom modules

New models, workflows and reports that follow Odoo's own conventions, so they survive upgrades instead of breaking on the next version.

Integrations

WhatsApp, payment gateways, n8n, external APIs, EDI. Including the awkward ones where the other side has no documentation.

POS & hardware

Receipt printers, barcode scanners, scales, payment terminals. The layer where most retail projects actually stall.

Migrations

Version upgrades and moves between hosting, with the custom code carried across rather than rewritten from scratch.

Rescue work

Implementations that stalled, or code left behind by someone else. I read it, tell you honestly what is salvageable, then finish it.

Server & deployment

Odoo on your own infrastructure — nginx, TLS, backups, staging, systemd services that come back after a reboot.

Selected work

Client names withheld. Happy to walk through any of these on a call.

Retail · Cameroon

WhatsApp ↔ Odoo connector without Meta approval

Order confirmations, delivery updates and driver dispatch over WhatsApp, routed through a QR-based gateway instead of Meta's Business API. Built as a patch on Odoo's own WhatsApp layer, so every native send goes through it and nothing else in the system had to change.

Delivery operations

Driver dispatch that holds under real concurrency

Assignment of jobs to drivers where several drivers accept the same job at the same moment. Proven atomic under concurrent load, so two drivers can never take one delivery.

Electronics distribution

IMEI-level stock tracking

Serial tracking for devices where each unit must be traceable through purchase, stock and sale, built without touching Odoo's core tracking field — so upgrades stay clean.

Hospitality · Netherlands

Marketplace commission on POS payments

A percentage application fee taken on card payments through a POS terminal, settled through the payment provider's connected-accounts model.

Field sales

Geofenced quotations

Quotations that can only be confirmed inside an approved location, with the limits of browser geolocation documented up front rather than sold as certainty.

Manufacturing · South Africa

Recovering an inherited Odoo.sh codebase

Took over a project mid-flight, recovered the code, and got the deployment pipeline working again before adding anything new.

Odoo 16–19PythonPostgreSQLOWL / QWeb XML-RPC & JSON-RPCn8nDockernginx Odoo.shDjango

How I work

I tell you what will not work

If a requirement fights Odoo's data model, or a platform limit makes it impossible, you hear that before the invoice, not after.

Fixed scope, written down

What is included, what is not, and what "done" means — agreed in writing before work starts, so neither of us is guessing.

Code you can keep

Standard Odoo module structure, no vendor lock-in, no obfuscation. Another developer can pick it up without me.

Tell me what is not working

A short description of the process and where it breaks is enough to start. You will get an honest answer on whether it is worth building.

Get in touch