templates/README.md specified three docs; only demo-script-1pager.template.html existed, so two of the three were rebuilt from the prose every engagement. Both now ship, matching the section order the README already documented, with brand.css inlined and no external deps beyond Google Fonts. The markup comments say what belongs in each slot rather than naming it: status pills come from the verification log, so "tested" means Test heroes actually exercised it; the pre-loaded data table marks the records that must stay untouched, because a live click is consumed the first time it is used. Two rules from the first engagement to use them: No rate card means deleting the investment grid and keeping the note that explains its absence. Filling those cards to avoid a gap contradicts Phase C's "every number traces to something", and an invented figure becomes the figure you are held to. The docs carry spoken lines, so write them in the language the demo is held in. An English Say column for a Dutch demo gets translated live in the room, which is exactly where the wording stops matching the client's own quoted words. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
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 XML-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.