AI & Automation Services
Automate workflows, integrate systems, and unlock AI-driven efficiency.



Odoo custom AI module development builds bespoke AI capabilities directly into the Odoo Python framework - including machine learning demand forecasting, NLP document classification, LLM-powered field suggestions and AI-assisted reporting - as native Odoo modules that appear and behave identically to standard Odoo features. Projects start at £5,000 for a focused single-capability module.
Odoo custom AI module development is the practice of building AI capabilities directly inside the Odoo Python framework as native modules. A custom AI module is a standard Python package with four directories: __manifest__.py declaring dependencies and version, models/ containing the Python classes that extend existing Odoo models and embed AI inference calls, views/ containing the XML that adds score fields and smart buttons to the Odoo UI, and security/ containing the CSV access rules that control which Odoo user groups can trigger AI operations. This structure is identical to any standard Odoo module. The result is an AI feature that appears inside Odoo exactly like any other Odoo feature: a predicted reorder quantity on the replenishment screen, a lead quality score on the CRM kanban card, an auto-classification label on the vendor bill.
This approach is architecturally distinct from external AI integrations, which sit outside Odoo and communicate via the JSON-RPC API. A native custom AI module runs inside the Odoo Python process, uses the Odoo ORM directly to read and write data, and hooks into Odoo's event system without any API latency or external network dependency. The AI logic executes when Odoo executes it, as part of the standard Odoo application flow.
The business case for custom AI module development over external integration is specific: when the AI capability needs to be tightly coupled to Odoo's internal event flow, when API latency would degrade the user experience, when the business requires the AI to work without an internet connection to external AI services, or when the AI output needs to be stored and queried as a native Odoo field that is searchable, filterable and reportable in Odoo's standard reporting tools.
A custom AI module is appropriate when the business has already exhausted what Odoo's standard modules offer and has a specific, well-defined operational problem that requires bespoke AI logic applied to its own Odoo data. For businesses new to Odoo or to AI automation, phased external integrations typically deliver better ROI before investing in native module development.
For businesses who want to understand where custom AI module development fits relative to external integrations and off-the-shelf Odoo AI tools, the Odoo AI integration London overview covers the full decision framework for choosing the right AI approach for a given operational requirement.
The range of AI capabilities that can be implemented as native Odoo modules is limited only by the Python ecosystem and the quality of data available in the client's Odoo instance. The following five capability types account for the large majority of custom AI module projects delivered in the UK market.
Machine learning demand forecasting on stock.move history. A custom Odoo module trains a time-series forecasting model on the client's stock.move records, which contain every inventory movement timestamped with product, quantity, source location, destination location and responsible user. With 18 months of this data, a gradient boosting model has a demand signal accurate enough to predict SKU-level weekly demand. The @api.depends decorator triggers a forecast recalculation automatically when a sale.order is confirmed, updating the predicted reorder quantity field on product.template in real time. A nightly ir.cron job reruns the full batch at 2am, retraining the incremental model on the latest 30 days of data and updating reorder rules on all products where the forecast differs from the current rule by more than 15 per cent. For businesses with seasonal demand patterns or large SKU catalogues, this reduces stockout events by 30-40 per cent and reduces overstock by a comparable margin once the model has eight weeks of calibration data after go-live.
NLP document classification on incoming emails and vendor bills. A custom Odoo module applies a text classification model to the content of incoming emails received by Odoo's mail gateway and to the text extracted from vendor bill PDFs. The classification model categorises the document by type and by subject matter and writes the result as a tag or status field on the Odoo record. This eliminates manual document sorting and routing, a common bottleneck in accounts and operations teams handling high document volumes.
Lead scoring on crm.lead fields. A custom Odoo module trains a binary classification model on historical crm.lead records, which contain source, campaign, industry, company size, assigned salesperson and activity history for every opportunity in the pipeline. ML models trained on six months of won and lost data from these fields achieve 78-85 per cent accuracy in predicting deal outcome. The @api.model decorator triggers score updates when a new lead is created; the @api.depends decorator triggers rescoring when key fields change. The predicted conversion probability is written to a numeric field on the crm.lead model, visible as a score badge on the Kanban view. Sales teams prioritising high-score leads see 15-25 per cent improvement in conversion rates within one quarter.
Document field extraction on account.move. A custom Odoo module fires automatically via the account.move create hook when a PDF attachment is uploaded, calling a vision-language model API (typically OpenAI GPT-4o or Anthropic Claude Haiku for cost-efficient document processing) to extract supplier name, invoice number, date, line items, VAT amounts and total. The extracted data populates the draft account.move fields directly via the Odoo ORM. Unlike an external document processing integration, the native module fires on file upload without any manual trigger and can match against all res.partner fields for supplier lookup, not just those exposed via the API.
AI-assisted description generation on product.template. A custom Odoo module adds a smart button to the product form that, when clicked, calls an LLM API with the product's name, category, attributes and technical specifications as context and generates a full product description in the client's brand voice. The generated description is inserted into product.template.description_sale in draft state for human review before publication. For businesses with large product catalogues, this module reduces the time to draft a new product description from 15-20 minutes to under 2 minutes.
The technical and operational differences between a native Odoo AI module and an external third-party AI integration are significant enough to drive different project decisions depending on the use case.
Data access and latency. A native Odoo module uses the Odoo ORM directly, which executes a direct SQL query against the Odoo database. An external integration accesses the same data via the JSON-RPC API, adding a network round-trip and serialisation overhead. For AI capabilities that need to execute inline with user interaction, native module latency is imperceptibly low; external API latency of 300-800 milliseconds is noticeable in a form-filling workflow.
Offline operation. A native Odoo module that uses scikit-learn for ML inference runs the model locally within the Odoo process and requires no internet connectivity. An external AI integration that calls the OpenAI or Anthropic API fails if the external API is unavailable. For businesses operating in environments with unreliable internet, or for AI capabilities that process sensitive data and cannot send that data to an external API, native ML modules provide resilience that external integrations cannot.
Odoo event hooks. Native modules hook into the @api.model_create_multi, @api.onchange, @api.depends and _action_confirm Odoo ORM decorators, which fire automatically when Odoo records are created, changed or actions are confirmed without any external trigger. External integrations typically rely on Odoo's outgoing webhooks, which add configuration overhead and can miss events if the webhook fails.
Upgrade path and maintenance. Native Odoo modules require review and update with each Odoo version migration because Odoo's ORM and view APIs change between major versions. Every custom AI module Softomate delivers includes a migration/ directory with upgrade scripts for the next Odoo major version, so the compatibility work is documented and scoped before the upgrade project begins. External integrations using the JSON-RPC API are generally more stable across Odoo versions because the external API is more backward-compatible.
Portability and sharing. A native Odoo module can be installed on any Odoo instance by copying the module directory. External integrations require re-configuring API credentials, webhook URLs and potentially re-deploying external infrastructure. For multi-site businesses or businesses with active development and staging environments, native modules are operationally simpler to manage.
The decision between native module development and external integration comes down to a single question: does the AI capability need to behave like part of Odoo, or is it sufficient for it to operate alongside Odoo? For capabilities that users need to experience inline with their Odoo workflow, native module development is the right choice. For capabilities that operate asynchronously, external integration is usually sufficient and faster to deliver.
The full comparison between native and external approaches is covered in more depth on our Odoo ERP implementation London page, which includes a decision matrix for common AI capability types.
Building a custom Odoo AI module follows the standard Odoo module development process, with additional phases for data pipeline construction, model training, validation and calibration. The following sequence applies to a machine learning module. LLM-based modules (field suggestion, document extraction, NLP classification using an external API) follow a shorter process that skips the model training phases.
Phase 1: Data audit and pipeline design (1-2 weeks). The client's Odoo data is reviewed to assess quality, completeness and historical depth. For a demand forecasting module, this means auditing stock.move records: how many months of history exist, what proportion of moves have correct product linkage, whether seasonal patterns are visible in the data, and whether there are data quality issues (negative quantities, duplicate records, missing product categories) that would bias the model. The audit produces a data pipeline specification: the SQL queries or Odoo ORM calls needed to extract a clean training dataset and the feature engineering steps needed to transform raw Odoo data into ML-ready features.
Phase 2: Model development and training (2-3 weeks). The data pipeline is implemented, the training dataset is extracted and validated, and the ML model is trained. For demand forecasting, the initial model is typically a gradient boosting regressor (scikit-learn GradientBoostingRegressor or LightGBM) trained on features including historical sales velocity per SKU from sale.order.line, supplier lead times and pricing history from purchase.order.line, and seasonality encodings derived from stock.move timestamps. These three Odoo tables together provide the complete demand signal dataset. The model is evaluated against a held-out validation dataset using mean absolute percentage error (MAPE); a reliable forecasting model on well-structured inventory data typically achieves MAPE of 8-15 per cent on the validation dataset.
Phase 3: Odoo module development (2-3 weeks). The Python module scaffold is created: the __manifest__.py file declaring dependencies and Odoo version compatibility, model classes in models/ extending existing Odoo models, view XML in views/ for any new UI elements, and access rules in security/ for field-level access control. The trained ML model is serialised as a joblib pickle file and bundled with the module in a static/ directory. The module's ir.cron scheduled action is configured to run the nightly model inference at 2am, retraining on the latest 30 days of data and updating reorder rules where the forecast differs by more than 15 per cent from the current rule.
Phase 4: Integration testing and client validation (1-2 weeks). The module is installed on a copy of the client's production Odoo database in a staging environment. Predicted values are reviewed by the client's operational team against their own knowledge of their business. This phase typically produces a list of adjustments: products where the model underperforms due to unusual sales patterns, product categories where the feature engineering needs refinement, edge cases in the Odoo data that the pipeline did not anticipate. These are addressed before production deployment.
Phase 5: Production deployment and calibration (2-4 weeks). The module is installed in production. The first 4-8 weeks of live operation are monitored closely, with weekly comparison of predicted demand against actual sales and model retraining if systematic bias is detected. After the initial calibration period, the model runs without intervention until the quarterly retraining cycle, triggered by a scheduled action that automatically incorporates the latest 12 months of stock.move data into a fresh training run.
For LLM-based modules (field suggestion, document extraction), the process is shorter, typically 4-6 weeks total, because there is no ML training phase. Module development and API integration are analogous, but model calibration is replaced by a prompt engineering and output quality review phase.
Custom Odoo AI module development is the highest-investment category of Odoo AI work, reflecting the combination of Odoo module development expertise and AI/ML engineering capability required. The following pricing applies to UK-based projects delivered by Softomate Solutions in 2026.
Single AI capability module: from £5,000. A focused module implementing one AI capability, for example an LLM-powered product description generator or an NLP email classifier, with standard Odoo model integration, a basic UI extension (a smart button or a status field), a scheduled action for batch processing, and full handover documentation. Timeline: 6-8 weeks. This tier is appropriate for well-scoped, low-complexity AI additions where the Odoo data required is clean and the AI capability is well-defined.
ML module with data pipeline and training: £8,000-£15,000. An ML module including data pipeline design and implementation, model training and validation on client data, Odoo module development with training data visualisation, scheduled retraining via ir.cron, and a 90-day calibration support period. The price range reflects the volume and quality of historical Odoo data and the complexity of the feature engineering required. A lead scoring module on a CRM with two years of clean crm.lead data falls at the lower end; a multi-product demand forecasting module on a wholesale business with 500 SKUs and complex seasonal patterns falls at the upper end. Timeline: 8-12 weeks.
Multi-module AI development programme: £10,000-£25,000. A programme of two or more coordinated AI modules, for example a demand forecasting module and a document extraction module deployed together as part of a wider Odoo transformation project. At this tier, the data pipeline infrastructure is shared across modules, the Odoo module architecture is designed for extensibility using standard Python inheritance patterns, and the training data programme covers multiple model types. This tier includes quarterly retraining support for 12 months. Timeline: 12-20 weeks depending on scope.
Ongoing costs: LLM API usage costs (for modules that call OpenAI or Anthropic APIs) are billed directly to the client's own API account: typically £30-£150 per month depending on volume. ML modules using scikit-learn or joblib-serialised models run entirely within the Odoo server environment and have no ongoing API costs. Alternatively, Ollama running alongside Odoo provides local model inference for clients who prefer not to send data to external APIs. Quarterly model retraining is included in Softomate's managed support retainer (available from £300 per month for AI module clients).
The cost of poor data quality: A demand forecasting module that requires a minimum of 12 months of clean stock.move history cannot deliver reliable predictions on six months of data or on data with systematic entry errors. A lead scoring module needs at least six months of crm.lead data with consistent won/lost outcomes to produce meaningful scores. Every custom AI module project from Softomate includes a data audit in the first phase to identify quality issues before they affect the project timeline. Businesses with known data quality problems should budget 2-4 additional weeks and £1,500-£3,000 for a data remediation phase before ML module development begins.
Custom Odoo AI modules deliver results that are quantifiable at the business level because they operate on live Odoo operational data and their outputs are tracked as Odoo fields, subject to the same reporting and analytics infrastructure as any other Odoo data.
Demand forecasting: 30-40 per cent stockout reduction. This is the most consistently documented outcome from ML demand forecasting modules deployed on Odoo Inventory. The reduction in stockout events is measured by comparing the number of product-days with zero available stock in the 12 weeks before deployment against the 12 weeks after. The calibration period, typically 8 weeks of live operation, is when the full benefit becomes visible. Businesses with large SKU catalogues see compound effects: fewer stockouts mean fewer emergency purchase orders, which reduces procurement costs alongside the primary stockout metric.
Lead scoring: 15-25 per cent improvement in first-call conversion rate. When sales teams prioritise outreach based on ML-predicted scores from crm.lead data rather than FIFO order, the first-call conversion rate improves because reps are spending their best calling hours on the highest-probability prospects. This improvement is measured by comparing stage transition rates in Odoo CRM before and after lead scoring deployment. Models trained on six months of won/lost crm.lead data achieve 78-85 per cent accuracy in predicting deal outcome, and accuracy continues to improve over the first six months as more conversion data is incorporated into retraining cycles.
Document AI: 85 per cent reduction in manual document handling time. For the document field extraction module, the before-and-after measurement is time spent by the accounts team on invoice data entry per week. Businesses handling 200+ invoices per month typically report a reduction from 12-15 hours per week of data entry to under 2 hours. For a well-tagged dataset of 1,000+ historical account.move vendor bills, the classification model achieves 93-97 per cent accuracy on vendor category, expense type, VAT treatment and cost centre. Scanned images and non-standard layouts require human review at a higher rate, but total review time is still a fraction of full manual entry.
NLP email classification: near-elimination of manual email sorting. For businesses using Odoo's mail gateway to receive supplier and customer communications, NLP document classification eliminates the manual review step of reading each incoming email to determine which Odoo record it should be attached to and what action it requires. A correctly configured classification module handles routing automatically, with a confidence threshold below which emails are flagged for human review. Businesses handling 50+ inbound business emails per day through Odoo Mail typically save 3-5 hours of operations team time per week after classification module deployment.
All of these outcomes are measurable within the first quarter of deployment because Odoo's built-in reporting tools capture the relevant metrics as standard operational data. A custom Odoo AI module does not require a separate analytics platform to measure its impact: the measurement lives in the same Odoo instance as the module itself.
The minimum practical threshold is 12 months of clean stock.move history covering the products to be forecast. With less than 12 months of data, seasonal patterns cannot be captured by the model. Businesses with 6-9 months of data can proceed with a hybrid approach that combines rules-based minimum stock levels with ML-assisted adjustment factors, and transition to a full ML model when sufficient history has accumulated.
Yes. Custom AI modules built using standard Odoo Python ORM and XML view syntax are compatible with both Community and Enterprise editions, provided they do not inherit from Enterprise-only models. The only cases where an Enterprise dependency arises are when the module explicitly requires an Enterprise-only model, such as documents.document. This is identified during the project scoping phase.
Every custom AI module is delivered with a migration/ directory containing upgrade scripts for the next Odoo major version. The module also includes full technical documentation: the Odoo ORM calls used, model field definitions, view XML structure and API dependencies. When a new Odoo major version is released, the compatibility review and update typically takes 4-8 hours of development work for a straightforward module. Softomate provides version migration support as part of the managed support retainer, or as a fixed-price migration project.
Custom Odoo AI modules support both approaches. The default for LLM-based modules (document extraction, field suggestion, description generation) uses the OpenAI or Anthropic API via a standard Python HTTP request within the Odoo module logic. For clients with data residency requirements, the module is built to use Ollama running alongside Odoo on the same server, or on a dedicated inference server on the client's network, providing local inference with Llama 3 or Mistral without any data leaving the client's infrastructure.
Model training on a typical SME Odoo dataset, covering 12-24 months of stock.move history across 200-1,000 SKUs, takes 2-4 hours of compute time using scikit-learn or LightGBM. The total model development phase, including data pipeline construction, feature engineering from sale.order.line and purchase.order.line, initial training runs, hyperparameter tuning and validation, takes 2-3 weeks of project time.
Yes. Custom AI modules use the standard Odoo module dependency system, declaring dependencies in __manifest__.py, and can inherit from, extend or interact with any other installed Odoo module including other custom modules. A demand forecasting module can, for example, read from a custom supplier lead time module's fields and incorporate those values into the reorder quantity calculation. Interaction between custom modules is tested in the integration testing phase against the client's full Odoo module stack.
Poor Odoo data quality degrades ML model performance in predictable ways: systematic entry errors in stock.move create biased training data the model learns from, leading to systematically wrong predictions. Incomplete crm.lead records reduce the effective training dataset size. Inconsistent product-to-category assignments prevent the model from learning category-level seasonality patterns. The data audit phase at the start of every custom AI module project is specifically designed to identify these issues before they affect the model. Where data quality problems are found, a data remediation sprint is scoped before model training begins.
Yes. Any custom Odoo AI module that processes personal data, for example customer names and email addresses in a lead scoring module trained on crm.lead records, is subject to UK GDPR. The key obligations are: a lawful basis for processing (typically legitimate interests for internal lead scoring), data minimisation (using only the Odoo fields necessary for the model), transparency (documenting automated decision-making in the privacy policy if decisions with legal or significant effects are made on the basis of AI scores alone), and data retention (ensuring personal data used in training datasets is not retained beyond the retention period defined in the privacy policy). Softomate provides a UK GDPR data processing assessment as part of the project documentation for any AI module processing personal data.
Deen Dayal Yadav is the founder of Softomate Solutions, a London AI automation agency based in Stanmore. He has delivered over 200 AI automation and Odoo integration projects for UK businesses.
Custom Odoo AI module development is the highest-fidelity way to add AI capabilities to an Odoo ERP: building AI that lives inside Odoo, behaves like Odoo, and is measured with the same Odoo reporting tools that the business already uses. Demand forecasting accuracy reaches 85-92 per cent on well-structured stock.move history after eight weeks of calibration. Document extraction on a well-tagged dataset of 1,000+ historical vendor bills achieves 93-97 per cent accuracy on vendor category, expense type, VAT treatment and cost centre. Lead scoring models trained on six months of crm.lead won/lost data achieve 78-85 per cent accuracy in predicting deal outcome. Projects start at £5,000 for a focused single-capability module and include full technical documentation and a migration/ directory for the next Odoo version upgrade. The minimum data requirement for ML forecasting is 12 months of clean Odoo historical data, and six months of crm.lead data for lead scoring.
Sources:
Let us help
Talk to our London-based team about how we can build the AI software, automation, or bespoke development tailored to your needs.
Deen Dayal Yadav
Online