| Availability |
Odoo Online
Odoo.sh
On Premise
|
| Odoo Apps Dependencies |
•
Discuss (mail)
• Inventory (stock) • Invoicing (account) • Purchase (purchase) |
| Lines of code | 2092 |
| Technical Name |
grev_od_purchase_intel |
| License | OPL-1 |
| Website | https://www.grevlin.com |
| Availability |
Odoo Online
Odoo.sh
On Premise
|
| Odoo Apps Dependencies |
•
Discuss (mail)
• Inventory (stock) • Invoicing (account) • Purchase (purchase) |
| Lines of code | 2092 |
| Technical Name |
grev_od_purchase_intel |
| License | OPL-1 |
| Website | https://www.grevlin.com |
Purchase IntelligenceSupplier & Market Intelligence Engine for Data-Driven Procurement Decisions
|
|
|
|
|
|
|
Need Help?Contact us at support@grevlin.com Follow us on X: @GrevlinGlobal ✓ 30 days free support included |
Purchase Intelligence
Purchase Intelligence is a supplier and market intelligence platform for Odoo 19.0. It automatically aggregates supplier performance data from confirmed purchase orders, scores every active supplier across six KPI dimensions, segments the supplier base by spend tier, surfaces anomaly alerts, and presents everything in the OWL Intelligence Command Center.
Overview
Purchase Intelligence transforms raw PO data into actionable procurement intelligence with zero manual entry. Every confirmed purchase order triggers automatic updates to supplier KPIs, price history, and trend analysis.
Key Features
- Automatic KPI capture — delivery rate, quality score, lead time average and variance, price volatility, and payment compliance computed from live PO, stock, and accounting data.
- Weighted scorecards — six-dimension, 0–100 performance score per supplier per period.
- Risk-based segmentation — Pareto-driven weekly classification into Strategic, Preferred, Approved, and Restricted tiers.
- Anomaly alert engine — daily detection of price spikes, price drops, delivery degradation, lead-time overruns, and quality falls.
- Badge gamification — eight badge types auto-awarded weekly to high-performing suppliers.
- Intelligence Command Center — OWL dashboard with risk pipeline and alert activity panels.
- SQL analytics report — monthly pivot/graph view backed by a PostgreSQL view model.
- Bulk scorecard wizard — generate or regenerate scorecards for any supplier set.
Note
Purchase Intelligence requires the purchase, stock, mail, and account Odoo standard modules. grev_od_purchase_esourcing and grev_od_spend_analytics are supported as optional downstream consumers via try/except guards.
Configuration
No initial configuration is required after installation. The module automatically hooks into purchase.order.button_confirm() and purchase.order.button_approve() to capture supplier intelligence data.
Setting Up Market Price Indices
Market price indices allow the scorecard engine to benchmark supplier prices against external market data for the Price Competitiveness dimension.
To add a market price index:
- Go to :menuselection:`Purchase Intelligence --> Reporting --> Market Price Index`.
- Click :guilabel:`New`.
- Select a :guilabel:`Product` or :guilabel:`Product Category`.
- Enter the :guilabel:`Market Price`, :guilabel:`Date`, and :guilabel:`Currency`.
- Optionally fill :guilabel:`Source` and :guilabel:`Notes`.
- Click :guilabel:`Save`.
Tip
Import historical price series in bulk using :menuselection:`Action --> Import Records` on the Market Price Index list view.
Usage
Intelligence Command Center
To access the dashboard, go to :menuselection:`Purchase Intelligence --> Command Center`.
The dashboard has two panels:
- Risk Pipeline (left) — scorecard counts by risk rating (Low / Medium / High) plus the fleet-wide average overall score.
- Alert Activity (right) — open alert counts by type (Price, Delivery, Quality, Critical).
Click any risk tile to filter the embedded scorecard list to that risk segment.
Supplier Intelligence Records
Intelligence records are created automatically when purchase orders are confirmed. Each record is unique per supplier–product pair (SQL UNIQUE(partner_id, product_id) constraint).
To view intelligence data:
- Go to :menuselection:`Purchase Intelligence --> Supplier Intelligence`.
- Open any record to review KPIs, the Price History tab, and trend indicators.
Note
KPIs are stored computed fields refreshed on every PO confirmation or approval. When data is sparse (e.g. no stock pickings), KPIs default to zero rather than error.
Generating Supplier Scorecards
Scorecards aggregate all intelligence records for a supplier over a chosen period.
To generate scorecards in bulk:
- Go to :menuselection:`Purchase Intelligence --> Supplier Scorecards`.
- Click :guilabel:`Generate Scorecards` in the action menu.
- Set :guilabel:`Period From` and :guilabel:`Period To`.
- Choose :guilabel:`All Suppliers` or specify a subset via :guilabel:`Suppliers`.
- Enable :guilabel:`Overwrite Existing` if regenerating a period already scored.
- Click :guilabel:`Generate`.
Scorecard Dimensions
| Dimension | Weight | Calculation |
|---|---|---|
| Delivery | 25% | Average on_time_delivery_rate across all intel records for the supplier |
| Quality | 25% | Average quality_score × 20 (converts 1–5 scale to 0–100) |
| Price Competitiveness | 20% | Comparison vs market price index or multi-supplier average (currency-adjusted) |
| Responsiveness | 15% | Days from date_order to date_approve; 100 pts if ≤ 1 day, linear decay to 0 at 14 days |
| Lead Time | 10% | Actual avg lead time vs product.supplierinfo.delay; max 50% penalty for overrun |
| Payment Compliance | 5% | Percentage of invoices with payment_state='paid' on or before due date |
Risk Ratings
- Low Risk — overall_score ≥ 70
- Medium Risk — overall_score ≥ 40 and < 70
- High Risk — overall_score < 40
Supplier Segmentation
Segmentation classifies suppliers into tiers using a Pareto spend analysis. The weekly cron runs automatically; no manual trigger is required.
Segment tiers by total spend rank:
- Strategic — top 20% by spend
- Preferred — next 30%
- Approved — remaining 50%
- Restricted — manual assignment only
To lock a supplier from automatic reclassification:
- Go to :menuselection:`Purchase Intelligence --> Supplier Segments`.
- Open the supplier's segment record.
- Set :guilabel:`Segment` to :guilabel:`Restricted` and disable :guilabel:`Auto Segment`.
Alert Management
Three daily crons detect anomalies and create alert records automatically:
- Price anomaly check — price spike (latest > 30-day avg × 1.15) or price drop (latest < 30-day avg × 0.85).
- Delivery & lead time — on-time rate < 90%, or lead time > supplier baseline × 1.25.
- Quality fall — quality_score drop > 0.5 points on the 1–5 scale.
Alert lifecycle:
open → acknowledged (action_acknowledge) → resolved (action_resolve)
To manage alerts:
- Go to :menuselection:`Purchase Intelligence --> Alerts`.
- Open an alert and click :guilabel:`Acknowledge` to log review.
- Click :guilabel:`Resolve` once the underlying issue is fixed.
Duplicate prevention: crons skip creation if an open alert of the same type already exists for the same supplier–product combination.
Supplier Badges
Eight badge types reward high-performing suppliers. Seven are auto-awarded by the weekly cron; the Innovation Partner badge is manual only.
Pre-defined badges:
| Badge | Auto-Award Criteria |
|---|---|
| Gold Supplier | Delivery ≥ 95% and Quality ≥ 4.5 / 5 |
| Silver Supplier | Delivery ≥ 90% and Quality ≥ 4.0 / 5 |
| Bronze Supplier | Delivery ≥ 85% and Quality ≥ 3.5 / 5 |
| Delivery Star | Delivery ≥ 98% |
| Quality Leader | Quality ≥ 4.8 / 5 |
| Price Champion | Lowest price in category for 3+ consecutive scoring periods |
| Compliance Star | Zero compliance violations for 12+ months |
| Innovation Partner | Manual award only |
Badge awards also appear on the :guilabel:`res.partner` form via the smart button and as active_badge_count on the partner record.
Analytics Report
The SQL analytics report aggregates monthly purchase data for pivot and graph analysis.
To access:
- Go to :menuselection:`Purchase Intelligence --> Reporting --> Intelligence Analytics`.
- Use the pivot view to analyse spend by supplier and year.
- Switch to graph view for trend visualisation.
Available measures: avg/min/max price, total spend, order count, qty ordered, qty received, fill rate (%), on-time percentage, and average lead days.
Technical Details
Automated Cron Jobs
| Cron | Interval | Purpose |
|---|---|---|
| Daily Price Anomaly Check | 1 day | Detects price spikes and drops vs 30-day average |
| Daily Delivery & Lead Time Alert | 1 day | Flags on-time degradation and lead-time overruns |
| Weekly Badge Auto-Award | 7 days | Awards performance badges to qualifying suppliers |
| Weekly Segment Classification | 7 days | Pareto-classifies all suppliers by total spend |
Data Models
| Model | Description |
|---|---|
| grev.supplier.intel | Core supplier–product intelligence record; stores all KPIs |
| grev.supplier.price.history | Time-series price entries auto-captured at PO confirmation |
| grev.supplier.intel.scorecard | Weighted 0–100 performance scorecard per supplier per period |
| grev.supplier.intel.market.index | External market price benchmarks for price competitiveness scoring |
| grev.supplier.intel.segment | Pareto-based supplier tier classification |
| grev.supplier.intel.alert | Anomaly detection alerts with Open/Acknowledged/Resolved lifecycle |
| grev.supplier.intel.badge | Badge template definitions (8 built-in types) |
| grev.supplier.intel.badge.award | Badge award instances per supplier with optional expiry |
| grev.supplier.intel.report | SQL view (_auto=False); monthly analytics for pivot/graph |
| grev.supplier.intel.scorecard.wizard | Transient model for the bulk scorecard generation dialog |
Security Groups
- Intelligence User (group_intel_user) — read access to all models.
- Intelligence Analyst (group_intel_analyst) — create/edit intel, scorecards, market indices, alerts, and segments.
- Intelligence Manager (group_intel_manager) — full CRUD including badge definition management and segment administration.
All primary models enforce multi-company record rules: ['|', ('company_id', '=', False), ('company_id', 'in', company_ids)].
Important
The PO hook (_sync_supplier_intel) is idempotent: price history entries are skipped if the same PO name already exists as source on the intel record. A UNIQUE constraint on (partner_id, product_id) combined with a try/except retry guard prevents race conditions on concurrent PO confirmations.
See Also
- Grevlin Procurement Suite
- :menuselection:`Purchase Intelligence --> Command Center`
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