Skip to Content
Odoo Menu
  • Sign in
  • Try it free
  • Apps
    Finance
    • Accounting
    • Invoicing
    • Expenses
    • Spreadsheet (BI)
    • Documents
    • Sign
    Sales
    • CRM
    • Sales
    • POS Shop
    • POS Restaurant
    • Subscriptions
    • Rental
    Websites
    • Website Builder
    • eCommerce
    • Blog
    • Forum
    • Live Chat
    • eLearning
    Supply Chain
    • Inventory
    • Manufacturing
    • PLM
    • Purchase
    • Maintenance
    • Quality
    Human Resources
    • Employees
    • Recruitment
    • Time Off
    • Appraisals
    • Referrals
    • Fleet
    Marketing
    • Social Marketing
    • Email Marketing
    • SMS Marketing
    • Events
    • Marketing Automation
    • Surveys
    Services
    • Project
    • Timesheets
    • Field Service
    • Helpdesk
    • Planning
    • Appointments
    Productivity
    • Discuss
    • Approvals
    • IoT
    • VoIP
    • Knowledge
    • WhatsApp
    Third party apps Odoo Studio Odoo Cloud Platform
  • Industries
    Retail
    • Book Store
    • Clothing Store
    • Furniture Store
    • Grocery Store
    • Hardware Store
    • Toy Store
    Food & Hospitality
    • Bar and Pub
    • Restaurant
    • Fast Food
    • Guest House
    • Beverage Distributor
    • Hotel
    Real Estate
    • Real Estate Agency
    • Architecture Firm
    • Construction
    • Property Management
    • Gardening
    • Property Owner Association
    Consulting
    • Accounting Firm
    • Odoo Partner
    • Marketing Agency
    • Law firm
    • Talent Acquisition
    • Audit & Certification
    Manufacturing
    • Textile
    • Metal
    • Furnitures
    • Food
    • Brewery
    • Corporate Gifts
    Health & Fitness
    • Sports Club
    • Eyewear Store
    • Fitness Center
    • Wellness Practitioners
    • Pharmacy
    • Hair Salon
    Trades
    • Handyman
    • IT Hardware & Support
    • Solar Energy Systems
    • Shoe Maker
    • Cleaning Services
    • HVAC Services
    Others
    • Nonprofit Organization
    • Environmental Agency
    • Billboard Rental
    • Photography
    • Bike Leasing
    • Software Reseller
    Browse all Industries
  • Community
    Learn
    • Tutorials
    • Documentation
    • Certifications
    • Training
    • Blog
    • Podcast
    Empower Education
    • Education Program
    • Scale Up! Business Game
    • Visit Odoo
    Get the Software
    • Download
    • Compare Editions
    • Releases
    Collaborate
    • Github
    • Forum
    • Events
    • Translations
    • Become a Partner
    • Services for Partners
    • Register your Accounting Firm
    Get Services
    • Find a Partner
    • Find an Accountant
      • Get a Tailored Demo
    • Implementation Services
    • Customer References
    • Support
    • Upgrades
    Github Youtube Twitter Linkedin Instagram Facebook Spotify
    +32 2 290 34 90
    • Get a Tailored Demo
  • Pricing
  • Help
  1. APPS
  2. Accounting
  3. AI Budget Variance Commentary v 19.0
  4. Sales Conditions FAQ

AI Budget Variance Commentary

by ERP Heritage https://www.erpheritage.com.au/
Odoo
v 19.0 Third Party 6
Download for v 19.0 Deploy on Odoo.sh
Apps purchases are linked to your Odoo account, please sign in or sign up first.
Versions 16.0 17.0 18.0 19.0
You bought this module and need support? Click here!
Availability
Odoo Online
Odoo.sh
On Premise
Odoo Apps Dependencies • Invoicing (account)
• Discuss (mail)
• Purchase (purchase)
Community Apps Dependencies Show
• AI Agent Layer
• Multi Version Budget Pro
• Accounting Suite Base
Lines of code 6937
Technical Name eh_account_ai_budget
LicenseLGPL-3
Websitehttps://www.erpheritage.com.au/
Versions 16.0 17.0 18.0 19.0
ERP Heritage · Accounting Suite
ERP Heritage Accounting Suite

AI Budget Variance Commentary

Generate direction-aware budget-vs-actual narratives automatically on every budget, with or without an LLM provider.

Free · LGPL-3Deterministic AINo API keysv19.0.1.0.1
Live variance narrative
Direction-aware headline
Largest movers highlighted
Provider fallback safety
Always produces output

Why this module

AI Budget Variance Commentary

Close packs

Month-end narrative ready

One-paragraph commentary drops straight into the controller's monthly close pack without further editing, with a direction-aware headline and the largest movers already picked out.

Zero credentials

Works out of the box

Deterministic template runs with no API keys, no network calls, and no configuration. Optionally enriched by a provider when one is registered at the company level.

Graceful fallback

Failure immunity

Missing or bad credentials never break the budget form. If an LLM call fails, the deterministic commentary is returned instead. Always delivers useful output.

Day in the life

FP&A analyst closes the December budget

Open the December budget record. The AI Commentary page shows a deterministic headline: 'Period total overran budget by 8.3% (1,200.00 vs 13,000.00). The top variance is Labour (6.2%), followed by Travel (4.1%), and Materials (3.8%).' If the company configured an AI provider (such as a hosted LLM service), the same snapshot produces a narrative paragraph instead: 'December spending exceeded budget primarily due to end-of-year labour costs and unexpected supplier pricing increases in materials. Labour was the dominant driver...'. Click Refresh AI commentary to regenerate if the budget lines changed since the last read.

Edge cases

The cases most modules quietly ignore.

In the shipped code today, each one a place where a cheaper module silently does the wrong thing.

Empty period

A budget with no lines or all-zero lines returns a graceful placeholder: 'No budgeted or actual amounts for [Period]; nothing to comment on.'

Zero budget line

A line with zero budget but non-zero actual is flagged as a full 100% overrun rather than masked as 0%, and included in the top movers.

Income vs expense

The commentary determines direction from the total variance only (overran, underran, or matched); a mixed income and expense budget is summarised as one total variance, not split by account type.

Top movers only

Only the three largest absolute variances are listed. A 50-line budget highlights the top three, not all fifty.

Provider unavailable

If a provider is registered but the call fails, the deterministic template is returned silently. The form does not error or show a timeout; the user sees the deterministic backup.

Live compute

The field is not stored; every read recomputes from current line amounts. Changing a budgeted amount updates the commentary on the next form load without manual refresh, unless the provider's cache is stale.

What is inside

Built to do the job, end to end.

  • models/budget.py. EhBudget model inherits eh.budget.budget and adds eh_ai_variance_commentary computed field. Depends on line_ids, budgeted_amount, actual_amount, and account_id. Calls variance_commenter.comment() with a BudgetLineSnapshot list built from budget lines. Resolves is_income from account type and includes it in the BudgetLineSnapshot, though the current deterministic template derives direction from the total variance only. Includes action_eh_ai_refresh_commentary() for manual recompute.
  • tools/variance_commenter.py (eh_account_ai_agent). Deterministic BudgetLineSnapshot dataclass and comment() function. Computes total variance and percentage, generates direction-aware headline (overran/underran/matched), lists top-N largest absolute variances. Handles empty snapshots with graceful placeholder. Calls provider.chat() if non-manual provider is registered; catches ProviderError to fall back to deterministic text.
  • views/budget_views.xml. Inherits budget form view from eh_account_budget_pro. Adds AI Commentary page with eh_ai_variance_commentary readonly field and helper text explaining deterministic vs LLM modes. Includes Refresh AI commentary button in header to invalidate cached computed field.
  • test_variance_commentary.py. Integration tests verify commentary is non-empty with period label, income flag is mapped from account type (revenue=True, expense=False), empty budget returns placeholder, and commentary recomputes on line_ids change. Tests call _eh_build_budget_snapshot() to inspect the snapshot list passed to the helper.

Honest about the edges

What this does not do, so nothing surprises you.

  • Requires eh_account_budget_pro (provides eh.budget.budget model) and eh_account_ai_agent (provides variance_commenter tool and provider registry). Does not generate variance forecasts, anomaly detection, or trend analysis beyond deterministic template. Provider enrichment is opt-in at company level only (set eh_ai_provider_key on res.company); no per-budget or per-user provider choice.
  • LLM augmentation calls providers as fallible best-effort; failures are caught silently and deterministic text returned. Analytic accounts and percentage-weighted actuals from eh_account_budget_pro are not exposed in commentary; field reads total variance only. Commentary is non-stored and recomputed on every read, so heavy-read budgets may trigger repeated provider calls.
  • Does not support custom top-N movers; hardcoded to top 3 largest variances. Variance percentage is computed as (actual - budget) / budget * 100, so a zero-budget line shows 100% overrun; a zero-actual line shows negative 100% underrun. Multi-company budgets inherit the parent company's provider key; no subsidiary override per budget.
  • Field text is plain text, not HTML; no formatting, links, or embedded charts in commentary. Period label sourced from budget.name only; empty or special-character names may render unclear in the period display. Provider calls run synchronously on field compute, so slow providers block the form load until timeout.
Search

budget variance, budget actual commentary, close pack narrative, budget overrun, period variance, deterministic AI, Odoo budget analysis, cost overrun alert, revenue shortfall, month end close, budget reporting, variance analysis, accounting AI, Odoo 19 Community

Languages

Available in 19 languages

The interface ships translated out of the box. Switch language in Odoo and the fields, menus, and messages follow.

ArabicChinese (Simplified)Chinese (Traditional)DutchFrenchGermanHindiIndonesianItalianJapaneseKoreanPolishPortuguese (Brazil)RussianSpanishSwedishThaiTurkishVietnamese
ERP Heritage

Production-grade Odoo modules, built to an engineering bar and documented honestly. Support: info@erpheritage.com.au
Developed by Odoo Implementation Australia • LinkedIn

v19.0.1.0.1 · LGPL-3 · Odoo 19 Community

Please log in to comment on this module

  • The author can leave a single reply to each comment.
  • This section is meant to ask simple questions or leave a rating. Every report of a problem experienced while using the module should be addressed to the author directly (refer to the following point).
  • If you want to start a discussion with the author, please use the developer contact information. They can usually be found in the description.
Community
  • Tutorials
  • Documentation
  • Forum
Open Source
  • Download
  • Github
  • Runbot
  • Translations
Services
  • Odoo.sh Hosting
  • Support
  • Upgrade
  • Custom Developments
  • Education
  • Find an Accountant
  • Find a Partner
  • Become a Partner
About us
  • Our company
  • Brand Assets
  • Contact us
  • Jobs
  • Events
  • Podcast
  • Blog
  • Customers
  • Legal • Privacy
  • Security

Odoo is a suite of open source business apps that cover all your company needs: CRM, eCommerce, accounting, inventory, point of sale, project management, etc.

Odoo's unique value proposition is to be at the same time very easy to use and fully integrated.

Website made with