StrictBase / Backend-only Odoo for partners
Developers at work

Odoo Backend Engineering

Strict backend
architecture
& integrations.

We build bespoke backend solutions, complex API integrations, and strict data architecture. Exclusively within the Odoo ecosystem. Exclusively for partners.

→ Start with a scope document

01 / Scope

What we do. What we refuse.

Accepted scope

ORM constraints, server actions, and workflow invariants
Complex multi-system API integrations (REST, JSON-RPC, EDI)
Data migration and strict schema architecture
Codebase rescue: refactoring legacy custom modules
Fixed-price delivery with explicit scope boundaries
QWeb reports and backend automation

Example: fixing primitives, not consumers

// wrong:
patch_report_currency() // per-report fix. drift. regression.

// StrictBase:
fix_currency_primitive() // all consumers inherit correctness.

Rejected scope

  • OWL / JS-heavy frontend work
  • Point-of-sale customization
  • Website themes or e-commerce skins
  • Open-ended retainer engagements
  • Work without a written scope document

Strict scope boundaries.

02 / Method

How we
work.

Partners buy risk reduction, not hours. Our method eliminates ambiguity at every stage.

01

Scope definition

Every engagement starts with a written scope document. No ambiguity. No assumptions. Trade-offs and constraints are stated upfront.

02

Fixed-price quote

We deliver a fixed-price proposal tied to the scope. If the scope changes, the price changes. No surprises in either direction.

03

Execution

We build, test, and deliver against the documented scope. You receive structured progress updates, not status theater.

04

Handoff

Clean code. Full documentation. A handoff that your team can maintain without us. No vendor lock-in by design.

03 / Proof

Work samples.

Real problems. Correct fixes at the right abstraction level.

Case 01 PRIMITIVE_CORRECTNESS
Problem

Odoo CE treats a person's name as a single field.

Risk

Integrations break. Mailchimp, CRMs, locale-specific naming rules, search, sort, B2B contact hygiene.

Wrong approach

Store split names in custom fields and leave the original name field inconsistent.

StrictBase approach

Implement split fields with consistent composite behavior in create/write/onchange. Documented assumptions.

→ strictbase_partner_names
Case 02 FORMAT_INVARIANT
Problem

Currency formatting violates expected conventions in some locales.

Risk

US customers notice immediately. Invoices look unprofessional. Trust erosion.

Wrong approach

Patch each report and view individually.

StrictBase approach

Patch the primitive formatting behavior so all consumers inherit correctness system-wide.

→ strictbase_currency_fix
Case 03 WRITE_GUARD
Problem

Switching a task's billing wallet in Odoo silently reassigns all historical timesheet entries to the new one.

Risk

Prepaid wallet balances become incorrect. Already-delivered hours appear under the wrong budget. Invoicing breaks.

Wrong approach

Manually re-lock timesheet entries after each wallet switch and hope nothing was missed.

StrictBase approach

Override write() to lock historical entries before the change propagates, using Odoo's own immutability flag.

→ strictbase_task_sol_lock

04 / Partners

Who this is for.

You are a CTO, Technical Lead, or Founder at an established Odoo partner. You have a backlog of complex, risky backend tasks that your junior developers cannot handle.

You need a subcontractor you can trust with high-stakes work without micromanaging it. You value clean code, predictable delivery, and brutal honesty over comfortable optimism.

trust_signals.log 4 entries
REFUSAL_BOUNDARIES

We refuse OWL/JS, POS, theming. StrictBase focuses exclusively on backend architecture.

NEGATIVE_KNOWLEDGE

Knowing what not to do. If you allow edits to inventory moves after validation, you lose auditability.

REVERSIBILITY

Isolated custom module. Designed to uninstall cleanly. Minimal overrides. Explicit assumptions documented.

UPGRADE_AWARENESS

Avoid fragile hacks. Keep overrides narrow. Test on upgrades. Rescue custom modules after database migration.

05 / Stack & Context

Technical environment.

Platform Odoo (Enterprise & Community)
Languages Python, XML, SQL
Integrations REST, JSON-RPC, XMLRPC, EDI
Infrastructure Linux, Docker, PostgreSQL
Version Control Git (GitHub, GitLab)
Methodology Fixed-price, scope-first
What we deliver
Isolated custom modules
Data migration scripts
Integration connectors (REST, JSON-RPC, EDI)
QWeb report templates
Constraint & workflow logic
Documented assumptions

06 / Open Source

Published modules.

Built for internal use. Published so you can inspect how we think.

strictbase_currency_fix →

Currency formatting corrected at the ORM level. No per-report patches, no locale guesswork.

// see also: FORMAT_INVARIANT
strictbase_fixed_price_project →

Corrects hour allocation issues on fixed-price projects. Billing integrity at the data layer, not the view layer.

strictbase_agent_guard →

Safety guardrail for outbound agent access within Odoo. Explicit boundaries; no silent side-effects.

github.com/StrictBase/odoo-addons 11 modules · Odoo 19.0 CE · LGPL-3.0

07 / Contact

Start with a
scope document.

Send a written description of the problem. Include constraints, deadlines, and what you have already tried. We will respond with an honest assessment and a fixed-price quote.

hello@strictbase.com Response time: 2 business days

Pilot terms

  • Fixed scope, explicit assumptions
  • Isolated custom module
  • Backend-only, no frontend traps
  • Written to be upgrade-friendly
  • Designed to uninstall cleanly

The question

"Which category of work would you most like to hand to a senior developer and forget about?"

Founder

Onno Schuit

25+ years building enterprise software for organizations including Shell, Ricoh, KLM Airlines, and the Dutch Open University. StrictBase operates as a subcontractor from the Netherlands.