JSON-RPC is the recommended Odoo API from 19 on. odoo_connect.py now posts to /jsonrpc over stdlib urllib instead of xmlrpc.client — same x()/get_or_create()/ fields_named() surface, common.version() becomes version(), server errors raise OdooError with Odoo's message, 600s timeout so module installs survive. Also: state changes must go through the model's own button method, never a write on state. Writing the field skips the delivery order, the journal entries, the sequence and the validations a hero feature exists to demonstrate. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
4.1 KiB
Callista Odoo Demo
Turn a discovery call into a complete, working Odoo demo — and the documents to sell it, before and after the meeting — with an AI agent doing the build.
Fork of Smetools/odoo-demo-architect (MIT). See
UPSTREAM.mdfor the fork point and what diverges.
A Claude Code skill. Point it at whatever discovery material exists — a transcript, meeting notes, an email thread, Knowcap, or nothing at all — and a reachable Odoo instance. It writes the discovery brief, researches what Odoo does natively vs. what needs building, stands up a live database (modules + realistic data + the 1–2 "hero" features that win the deal), tests that those features actually fire, and generates the sales documents. After the demo it writes the follow-through set.
Three phases
| Phase | Produces |
|---|---|
| A — Discovery brief | discovery_brief.md in a fixed six-section shape, from any source. Infers first, asks the gaps in one batch |
| B — Build | A live Odoo DB with working heroes, a verification log with real numbers, and three sales docs: run-of-show, decision-maker one-pager, 1-page demo script |
| C — Follow-through | Objection sheet, scoped quote, implementation timeline, statement of work |
Each phase is usable alone. Phase C runs days after the demo.
Verticals extend this
Vertical skills (e.g. buildease-demo for construction) wrap this one and supply only
their own module routing, solution precedence, purge chain, demo-data policy, and
follow-through framing. They do not restate the pipeline. See
Extension points.
Install
git clone <this repo> ~/.claude/skills/callista-odoo-demo
Then ask Claude: "build an Odoo demo for <client> from these notes."
Do not install this as odoo-demo-architect — skills resolve by directory name, and a
same-named fork silently shadows upstream depending on install order.
Prerequisites
- Claude Code.
- A reachable Odoo instance + API key (Settings → My Profile → Account Security → New API Key).
- On Odoo.sh: create the project + enter any partner trial code first (web-only), then come back with the DB URL + API key.
- Optional: Knowcap with its MCP connected, as one possible discovery source → knowcap.ai.
- Optional: the Perplexity MCP for the native-vs-custom research step (web search works too).
Quickstart
- Put your Odoo creds in env vars (or
scripts/creds.json):ODOO_URL,ODOO_DB,ODOO_LOGIN,ODOO_KEY. - Verify the connection:
python scripts/odoo_connect.py→ printsserver_version. - Copy
demo_config.example.json→scripts/demo_config.json, fill it from the brief. - Ask Claude to run the pipeline (see
SKILL.md).
scripts/creds.json and scripts/demo_config.json are gitignored — they hold client API keys. Keep it that way.
Read this before touching Odoo 19
Several core fields were renamed in v19 (res.users.group_ids, res.groups lost category_id, etc.), credit limit is warning-only natively, and fleet load-by-weight needs stock_fleet. All the footguns are in reference/odoo19-field-gotchas.md so you don't relearn them the hard way.
Files
SKILL.md the procedure (what the agent follows)
UPSTREAM.md fork point + divergence from upstream
scripts/odoo_connect.py JSON-RPC connector + helpers
scripts/build_demo.py config-driven data + hero builder (template)
demo_config.example.json per-client config shape
reference/odoo19-field-gotchas.md version-specific fields + footguns
templates/ brand.css + the doc templates
License
MIT — see LICENSE. Original copyright SMEtools; modifications Callista BV.
Credit
Original by SMEtools — Odoo implementation + AI automation. Fork maintained by Callista BV. Runs on Claude Code.