Reseam as callista-odoo-demo: source-agnostic discovery, parallel build, follow-through

Callista consumes this pipeline for both plain Odoo implementations and
vertical demos, and is not a maintainer upstream — so the generic demo craft
that had accumulated in the buildease-demo vertical skill lands here instead,
where every engagement can reach it.

Moved in from buildease-demo (they were never construction-specific):
- Phase A: discovery brief from a transcript, notes, email, Knowcap, or a
  batched interview. Replaces the Knowcap-bound step 1. Infers before it asks.
- Fork the slow half: instance prep and client research as two parallel
  subagents, then join.
- Purge test residue: ordering, traps, read-back-the-counts evidence.
- Phase C: objection sheet, scoped quote, implementation timeline, SOW.

New here:
- Extension points — a vertical supplies module routing, solution precedence,
  purge chain, demo-data policy and follow-through framing, and nothing else.
  Anything it needs beyond those is a gap to fix here, not to work around.
- Named steps instead of numbered ones. Numbering meant an upstream renumber
  silently misrouted an extending skill with nothing to detect it.

Renamed the skill to callista-odoo-demo: skills resolve by directory name, so
a same-named fork shadows upstream depending on install order, and two people
would build different demos from the same brief.

MIT retained; SMEtools copyright kept, Callista added for modifications.
Fork point and divergence recorded in UPSTREAM.md.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
glenn
2026-07-31 10:54:12 +02:00
co-authored by Claude Opus 5
parent ada2751eea
commit 8ea297e8bf
4 changed files with 368 additions and 86 deletions
+44 -40
View File
@@ -1,75 +1,79 @@
# Odoo Demo Architect
# Callista Odoo Demo
**Turn a discovery call into a complete, working Odoo demo — and the documents to sell it — with an AI agent doing the build.**
**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.**
> Powered by **[Claude Code](https://claude.com/claude-code)** (the agent) + **[Knowcap](https://knowcap.ai)** (the memory). Claude does the research, build, code, and testing; Knowcap — queried over its MCP — feeds the agent the *truth of what the client actually said* in the discovery call. The agent is only as good as its memory: Knowcap is the memory.
> Fork of **[Smetools/odoo-demo-architect](https://github.com/Smetools/odoo-demo-architect)** (MIT). See [`UPSTREAM.md`](UPSTREAM.md) for the fork point and what diverges.
A Claude Code skill. Point it at a discovery call (in Knowcap) and a reachable Odoo instance; it mines the client's pains, researches what Odoo does natively vs. what needs building, stands up a **live database** (modules + realistic data + the 12 "hero" features that win the deal), **tests** that those features actually fire, and generates three sales documents: a **run-of-show**, a **one-pager** for the decision-maker, and a **one-page step-by-step demo script**.
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 12 "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.
Built from a real engagement where this produced a full Odoo 19 Enterprise demo — credit-limit hard-block with manager override, weight-based fleet load-building, localized data, three sales docs — ready for a CEO meeting, with the founder barely touching the keyboard.
## 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 |
## The stack
- **Claude Code** — the agent that reads the call, researches native-vs-custom, builds the database, writes + ships the custom code, and tests every hero feature.
- **Knowcap** — the meeting-intelligence layer. The agent calls the **Knowcap MCP** (`get_source_transcriptions`, `search_memories`) to pull the discovery transcript and the client's pains in their own words. No transcript hunting, no "remind me what they said." → [knowcap.ai](https://knowcap.ai)
Each phase is usable alone. Phase C runs days after the demo.
## What you get
- A **live Odoo demo DB** tailored to the client (any Odoo: Online, self-hosted, or Odoo.sh).
- **Working hero features**, no-code where possible, custom module only when necessary.
- A **verification log** proving each hero fired (real numbers).
- Three **self-contained HTML docs** (brand-themed): run-of-show, one-pager, 1-page script.
## 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](SKILL.md#extension-points).
## Install
```bash
# clone into your Claude Code skills folder
git clone https://github.com/Smetools/odoo-demo-architect ~/.claude/skills/odoo-demo-architect
git clone <this repo> ~/.claude/skills/callista-odoo-demo
```
Or drop the folder anywhere Claude Code loads skills. Then just ask Claude: *"build an Odoo demo for <client> from our discovery call."*
Then ask Claude: *"build an Odoo demo for &lt;client&gt; 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.**
- **Knowcap** (recommended) with its **MCP** connected — so the agent can pull the discovery transcript + extracted pains directly. → [knowcap.ai](https://knowcap.ai). (No Knowcap? Paste a transcript or notes instead.)
- 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](https://knowcap.ai).
- Optional: the **Perplexity MCP** for the native-vs-custom research step (web search works too).
## Quickstart
1. Put your Odoo creds in env vars (or `scripts/creds.json`):
`ODOO_URL`, `ODOO_DB`, `ODOO_LOGIN`, `ODOO_KEY`.
2. Verify the connection: `python scripts/odoo_connect.py` → prints `server_version`.
3. Copy `demo_config.example.json``scripts/demo_config.json`, fill it from the discovery call.
4. Ask Claude to run the pipeline (see `SKILL.md`).
3. Copy `demo_config.example.json``scripts/demo_config.json`, fill it from the brief.
4. Ask Claude to run the pipeline (see [`SKILL.md`](SKILL.md)).
## How it works (pipeline)
1. **Mine the discovery — via Knowcap.** Pull the meeting transcript over the Knowcap MCP; extract pains in the client's words + the 12 heroes.
2. **Research native-vs-custom** for each hero, for the client's exact Odoo version.
3. **Connect** to Odoo over XML-RPC; confirm the version.
4. **Install** the scope's modules.
5. **Load realistic data** (idempotent; currency before invoices; pre-stage so heroes fire live).
6. **Build heroes** — no-code first, custom module as fallback.
7. **Test every hero** on a throwaway record; keep demo objects pristine.
8. **Generate the docs** from the brand templates.
9. **Hand off** — login, cheat-sheet, verification log, doc links.
Full procedure in [`SKILL.md`](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`](reference/odoo19-field-gotchas.md) so you don't relearn them the hard way.
## Files
```
SKILL.md the procedure (what the agent follows)
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
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 three doc templates
templates/ brand.css + the doc templates
```
## License
MIT. Use it, fork it, sell with it.
MIT — see [`LICENSE`](LICENSE). Original copyright SMEtools; modifications Callista BV.
## Credit
Built by **[SMEtools](https://www.smetools.io)** — Odoo implementation + AI automation.
Runs on **[Claude Code](https://claude.com/claude-code)** + **[Knowcap](https://knowcap.ai)**.
Original by **[SMEtools](https://www.smetools.io)** — Odoo implementation + AI automation.
Fork maintained by **[Callista BV](https://www.callista.be)**.
Runs on **[Claude Code](https://claude.com/claude-code)**.