Our AI-operated quote designer

How we turned the dark art of scoping an Odoo implementation into a structured model: traditional versus AI, delivery time and year-one TCO, estimated versus real.

ltc_budget quote designer cover

There is a dark art at the start of every Odoo project: telling the client what it will cost.

Anyone who has sold an ERP implementation knows the feeling. A prospect asks "how much, and how long?" and you reach for a number that lives somewhere between last year's similar project, a gut feeling, and a spreadsheet you will rebuild from scratch for the third time this month. The knowledge is real, but it is trapped in your head. When you win the deal, nobody can tell whether the estimate was any good until the invoices land.

We decided to get that knowledge out of our heads and into Odoo. The result is ltc_budget, a module that turns scoping and pricing an implementation into a structured, repeatable model, and, because we now build with AI agents, it lets us quote two worlds at once: the traditional way, and the AI-assisted way.

A catalogue of scope, not a blank spreadsheet

Instead of starting every quote from an empty sheet, ltc_budget keeps a catalogue of scope items grouped by project phase (F0 Analysis, F1 Spanish accounting, F2 repair and after-sales, on to F7 cross-cutting work). Each item carries a default of base hours and an "AI factor": the fraction of those hours the work actually takes when an agent does the heavy lifting. A 0.30 factor means the AI does it in 30% of the traditional time.

You pick a business type, hit Load scope, and the catalogue drops in as a checklist. Tick the modules that apply, untick the ones that do not, and adjust the hours wherever your judgement disagrees with the default.

scope checklist with traditional and AI hour columns

Two columns, one honest comparison

Every line is computed twice: traditional hours at your blended rate, and AI-assisted hours using the per-line factor. Roll it up and you get the headline the client actually wants: total cost traditional versus AI, the saving in euros and percent, and, the part most quotes skip, a delivery date. We divide the hours by the team's weekly capacity, so "145 hours" becomes "under four weeks" instead of a vague "soon".

traditional versus AI results, savings and delivery

The example above is a realistic shape: a ten-user repair and after-sales shop on Odoo Community. 350 traditional hours collapse to 145 with AI assistance, 58% off the services bill, and the project lands in under four weeks instead of nine. Year-one total cost of ownership, licences and hosting included, comes out around 14,500 EUR.

From quote to deployment in two clicks

A budget is only useful if it goes somewhere. Two buttons close the loop. Generate quote builds a real sale order, one line per phase, plus a printable report you can hand to the client.

QWeb implementation quote report

Create OCI project takes the same scope and spins up an oci.project: the deployment record that already knows which OCA modules and verticals the implementation needs, ready for our repos.yml-driven build pipeline. The thing you priced and the thing you deploy are the same object, not two disconnected documents.

The honest part: estimated versus real

Here is where it stops being a sales tool and becomes a feedback loop. Every budget has a Timesheets tab. As the agents, and we, work, the real hours are logged against each task. The module rolls those up and shows the variance against the AI estimate, line by line.

agents logging real hours per task

That number is allowed to be ugly. If a data migration took fourteen hours when we estimated ten, the tab says so. Over time those deltas re-train our AI factors, so next quarter's quotes are grounded in what actually happened, not in what we hoped would happen. A quote you can audit against reality is a quote you can trust.

Built by a team of agents

We did not write ltc_budget alone, and we did not write it by hand. It was assembled by a small team of specialised agents: oca-expert brought the functional knowledge (which OCA modules solve which business need), oci-creator supplied the deployable detail (verticals, dependencies, the repos.yml shape), and odoo-module-creator laid down the structure (models, views, security, the Odoo conventions). We reviewed, corrected and steered, but the dark art is now written down, in code, where the next quote can reuse it.

Quoting an Odoo project used to be the least repeatable part of our work. Now it is a model we can load, compare, deploy and check against the truth. That is the whole point of LTC Labs: take the things that lived only in our heads and make them traceable.

Building a product search engine inside Odoo: ltc_price_hunter