We build the 5% that configuration cannot reach.
Custom Odoo modules, integrations, portals and applications — scoped carefully, because every line of custom code is something to maintain.
Custom code is a liability. Sometimes it is the right liability.
Every hour of custom development is an hour somebody maintains through every future version upgrade, forever. So our default is to configure rather than build, and roughly 95% of what we deliver is standard Odoo set up properly.
The remaining 5% matters. Some requirements genuinely cannot be met by configuration, and where the commercial case is real we build — carefully, documented, and in a way that survives upgrades.
Where custom work is usually justified
Odoo modules
Custom models, workflows, reports and views built to Odoo conventions so they upgrade cleanly rather than breaking annually.
Integrations
Payment gateways, logistics providers, banks, marketplaces and legacy systems — connected with proper error handling, not a script that fails silently.
Customer portals
Client-facing interfaces on top of Odoo data. Order tracking, document access, approvals, self-service.
Web applications
Where the requirement sits outside Odoo entirely. Built with modern frameworks, connected back to the ERP through the API.
Mobile
Field data capture, warehouse scanning, approvals on the move. Native where it needs to be, web where it does not.
API layers
Clean, documented interfaces so your systems can talk to each other without anyone re-keying data.
How we scope custom work
Challenge the requirement
The first question is whether standard Odoo can do it, or whether the process could change instead. Often the answer is yes, and that saves you money.
Quantify the case
What does the manual alternative cost per year? If custom development does not pay back inside a sensible period, we say so.
Specify precisely
A technical specification you approve before anyone writes code. Vague scope is how development projects overrun.
Build and review
Iterative, with working software to look at rather than status reports about progress.
Document and hand over
Code, technical documentation and a walkthrough. Your system, not ours.
What we will push back on. Rebuilding standard Odoo functionality because it works slightly differently to your old system. Replicating a process that exists only because your previous software forced it. Features requested by one person that nobody else will use.
What we work with
Odoo stack
- Python, Odoo ORM, XML/QWeb
- OWL for frontend components
- PostgreSQL
- Odoo REST and JSON-RPC APIs
- Odoo.sh, Docker, self-hosted
Beyond Odoo
- JavaScript, TypeScript, React, Vue
- Node.js and Python services
- Flutter for mobile
- REST and GraphQL APIs
- AWS, GCP, self-managed infrastructure
Questions about custom development
Why do you push back on customisation?
Because every hour of custom code is an hour somebody maintains through every future version upgrade, forever. Roughly 95% of what we deliver is standard Odoo configured properly. The remaining 5% is genuine, and we build it carefully.
Will custom modules break when Odoo upgrades?
Not if they are built to Odoo conventions — inheriting rather than overriding, using the ORM properly, avoiding assumptions about core behaviour. Badly written modules break annually. That is a code quality problem, not an inherent Odoo problem.
Do we own the code?
Yes. You receive source, technical documentation and a walkthrough. Odoo is open source and your database is standard PostgreSQL — you can change partner or self-host without renegotiating anything.
How do you price custom work?
Against an approved technical specification. Vague scope is how development projects overrun, so we specify precisely before anyone writes code. Anything outside the specification is a change request, priced and agreed separately.
Can you integrate Odoo with our existing systems?
Usually. Payment gateways, logistics providers, banks, marketplaces and legacy systems are all routine. What matters is proper error handling — an integration that fails silently is worse than no integration.
Have a requirement configuration cannot meet?
Tell us what you need. We will tell you honestly whether it needs building or whether Odoo already does it.
Book a discovery call