The Octura Solutions Challenge
You found the hidden challenge
You read the source of the sites you visit. That is exactly how we think. Below is a real Odoo engineering problem. Solve it, send it, and skip straight past our usual screening.
Why this challenge exists
We build Odoo for a living, and we hire engineers who open the hood before they ask for the manual. A CV says little about how you write correct, performant ORM code. A patch says a lot. So here is a patch to write.
The brief
A client handed us the computed field below, from a custom Odoo 19 module. It works on a single record, but in production it is slow on order lists and some point totals are wrong. Three defects are hiding in it.
# models/sale_order.py (Odoo 19)
from odoo import api, fields, models
class SaleOrder(models.Model):
_inherit = 'sale.order'
loyalty_points = fields.Integer(
string='Loyalty Points',
compute='_compute_loyalty_points',
store=True,
)
@api.depends('order_line.price_subtotal', 'partner_id')
def _compute_loyalty_points(self):
for order in self:
points = 0
for line in order.order_line:
product = self.env['product.product'].browse(line.product_id.id)
if product.loyalty_eligible:
points += int(line.price_subtotal / 10)
order.loyalty_points = points + order.partner_id.bonus_pointsYour task
- Identify the three defects: one performance, two correctness. Explain precisely why each one is a problem.
- Rewrite the method so it is correct and processes a recordset in batches (no per-record access).
- Explain in a few sentences why your version stays correct under multi-company rules and with negative lines (credit notes).
No hidden traps beyond the three defects. We grade correctness, ORM reasoning, and clarity, not length.
How to submit
- Push your solution to a public repo or gist (the corrected method plus your written explanation).
- Open the application form below. Paste the link in the portfolio field and your reasoning in the cover letter.
- A strong solution skips screening and goes straight to a technical conversation with our senior team.
Prefer email? Write to career@octurasolutions.com