Upsell & Cross-sell Recommendation Engine
Frequently-bought-together and rule-based upsell/cross-sell recommendations on products and quotes
Upsell & Cross-sell Recommendation Engine turns every product page and every quotation into a merchandising opportunity, without an external recommendation service. It combines hand-authored rules with a statistical frequently-bought-together engine mined from your own sales history, then merges both into one ranked suggestion list on the product form and on the quotation itself.
Key Features
Hand-authored recommendation rules
product.recommendation.rule targets a specific product or an entire product category (including its sub-categories), recommends one or more products, is tagged Upsell or Cross-sell, and carries a priority so the most relevant rule always wins.
Frequently bought together mining
product.affinity is built from confirmed sales order history: for every co-occurring product pair the engine computes support, confidence and lift with a pure-Python market-basket-analysis algorithm, independently unit tested without a database.
Scheduled and on-demand recompute
A daily ir.cron keeps the affinity matrix fresh (recompute_affinity), and a Recalculate Product Affinity wizard lets a user trigger the same recompute on demand from any product.
Product form Recommendations tab
Every product.template shows its own configured recommendation rules, its frequently-bought-together affinity records, and a computed suggested_product_tmpl_ids field merging both, ranked rules first.
Quotation Recommended Products panel
sale.order aggregates recommendation candidates across every line already on the order (union of each line's rules and affinity, deduplicated and ranked) into a Recommended Products list.
One-click add-to-quotation wizard
sale.order.recommendation.wizard pre-fills every suggested product pre-checked; the salesperson unchecks what is not wanted and confirms to append the rest as new order lines in one action.
Explicit-beats-inferred ranking
rank_recommendations always ranks configured rules ahead of affinity-based suggestions, breaking rule ties by priority and affinity ties by confidence then lift, so merchandising intent always outranks statistical inference.
Self-recommendation guard
A model constraint blocks a rule from recommending a product to itself, and candidate-building always excludes the order's or product's own source products from its own suggestion list.
Use Cases
Screenshots
01 Recommendation Rules List
02 Recommendation Rule Form
03 Affinity List
Why Choose This Module
Because the ranking, co-occurrence and merge logic all live in a framework-free, unit-tested Python engine, the numbers behind every suggestion can be trusted and audited independently of the Odoo ORM. Configured rules always express explicit merchandising intent and are never drowned out by statistical noise, while the affinity engine keeps discovering new cross-sell opportunities as sales history grows.
Specifications
- Compatible: Odoo 18.0 / 19.0
- License: OPL-1
- Languages: 35+
- Author: Pokutsoft
- Dependencies: sale
- Support: odoo@gencbaris.com
- Update date: 2026-07-13
| Availability |
Odoo Online
Odoo.sh
On Premise
|
| Odoo Apps Dependencies |
•
Invoicing (account)
• Discuss (mail) |
| Lines of code | 871 |
| Technical Name |
upsell_crosssell_recommendation |
| License | OPL-1 |
| Website | https://pokutsoft.com/ |
Odoo Proprietary License v1.0 This software and associated files (the "Software") may only be used (executed, modified, executed after modifications) if you have purchased a valid license from the authors, typically via Odoo Apps, or if you have received a written agreement from the authors of the Software (see the COPYRIGHT file). You may develop Odoo modules that use the Software as a library (typically by depending on it, importing it and using its resources), but without copying any source code or material from the Software. You may distribute those modules under the license of your choice, provided that this license is compatible with the terms of the Odoo Proprietary License (For example: LGPL, MIT, or proprietary licenses similar to this one). It is forbidden to publish, distribute, sublicense, or sell copies of the Software or modified copies of the Software. The above copyright notice and this permission notice must be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Please log in to comment on this module