The hard part is rarely the AI.
It’s the process, the data and the guardrails. I build agents that work on Odoo through MCP — and the layer that decides what they are allowed to do, what needs a person, and what never happens.
Agent governance for the ERP
The problem. Agents that can write to an ERP are useful exactly until they post the wrong invoice. The model is rarely the risk — unchecked writes are.
An agent talks to Odoo through MCP, but it never talks to Odoo directly. Every tool call goes through a governance layer that sits between the agent and the database:
- Typed contracts. Each allowed action is a Pydantic model. If the agent’s arguments don’t validate — wrong partner, missing tax, a date in a closed period — the call never leaves the layer.
- Policy before execution. Rules decide what an agent may do on its own, what needs a human, and what is never allowed (deleting posted entries, touching payroll).
- Audit trail. Every proposal, decision and result is logged with who asked, which agent acted and what changed — readable by a consultant, not just by a developer.
- Read-heavy by default. Agents get broad read access and narrow, explicit write access, scoped per client database.
Why it matters
ERP data is the company’s memory. A governance layer is what turns an impressive demo into something a finance team will actually let run on Monday morning.
10:02:11 agent create sale.order draft 10:02:11 guard validate partner_id ✓ 10:02:12 guard validate pricelist ✓ 10:02:12 odoo write sale.order/4182 ok 10:04:37 agent post account.move 10:04:37 guard period 2026-09 locked ✗ blocked 10:04:37 guard escalate → human ↗ 10:06:02 agent read stock.quant ok 10:06:03 agent propose purchase.order draft 10:06:03 guard amount > 5000 ↗ approval 10:09:44 agent read res.partner ok 10:11:20 agent unlink account.move 10:11:20 guard never allowed ✗ blocked
Agentic consulting platform
The problem. Consulting knowledge lives in heads and slide decks. Agents can carry it — but only if every client's context stays strictly separate and GDPR-compliant.
Kontext runs on a multi-tenant agent platform: each client is its own tenant, with its own ERP connection, its own knowledge base and its own audit log.
- Orchestration with LangGraph: multi-step workflows (diagnose → propose → validate → apply) instead of one-shot prompts.
- Model gateway through LiteLLM / Portkey: routing, cost control and observability per tenant.
- Claude Agent SDK for the agents that do the actual consulting work.
- GDPR by design: data residency, minimization and per-tenant isolation are architecture decisions, not afterthoughts.
Odoo AI skills
The problem. Every implementation re-learns the same things. Skills turn that know-how into reusable, versioned instructions an agent can follow.
A monorepo of skills, versioned with Git and SemVer, used daily in real projects:
odoo-enterprise-expert— functional reference across apps and versionsodoo-demo-builder— realistic demo databases seeded with complete business flowsodoo-capture— documenting Odoo screens into work instructionsodoo-localizacion-generator— localization scaffolding- Bookkeeping by country — ES, CL, NL, FI, CA, HU
- Health scan — diagnostics of inherited Odoo databases
context-curator— keeps project context clean and current
Interfaces & automation
The problem. Most people who need ERP data will never open the ERP. And most consulting knowledge is trapped in recordings nobody rewatches.
- Telegram → Odoo assistant. Ask the ERP in natural language — stock, open orders, overdue invoices — from a phone.
- Knowledge pipeline. Videos and meetings → transcripts (Whisper + ffmpeg) → structured, versioned skills.
- Custom MCP server for Flickr. Managing a photography archive through an agent.
- Automated reporting. A daily digest that summarizes what changed and what needs attention.
Google Workspace
This work runs as Kontext ↗, my practice for AI-augmented ERP operations. The method behind it lives in the Odoo room.