Add CLAUDE.md defining the Palladium master notebook conventions and
Red Panda Approval criteria, plus a review-notebook slash command for
LLM-driven notebook review.
Expand .gitignore to block client/engagement documents and generated
exports, keeping masters client-clean while allowing text/image sources.
Normalize slider widget numeric values from floats to integers in
notebook JSON.
Rewrite the CX Discovery Workshop README to reflect the architecture
shift where content lives in the notebook's `topic-bank` cell rather
than in `discoverylib/topics.py`. The library now holds code only, the
notebook is the deliverable (no longer generated via build_notebook.py),
and tests pin content read directly from the notebook. Update layout,
run, and extending sections accordingly.
studies/202512_GenesysCX -> studies/202512_TEI_Genesys_CX_Cloud,
rebuilt as pattern Variant 4 (TEI composite reproduction):
- teicalc/ self-contained engine: Forrester's tables as the never-edited
verbatim anchor (incl. the p.14 typo note and the $0 AI-token line),
generic model/scenarios/staging carried over from the Amazon Connect
study, ClientDrivers overlay (agents / weekly interactions / revenue,
flat composite so no growth re-base) with ai_tokens_annual as a direct
input for the token line the published study models at $0
- one deliverable notebook (business_case.ipynb): widget-pair sidebar
drivers incl. the AI-token price, published-vs-overlay KPI columns,
cash-flow/waterfall/scenario charts, verification gate, backstage JSON
data appendix
- gate + tests reproduce the published totals within $2: NPV $10.8M /
ROI 266% (engine $10,783,466 / 265.79%; payback 3.3 months, not
headlined in the PDF); 29 study tests, headless nbconvert green,
stage simulation leak-free, exports carry the appendix
- old Athena workflow (00_provision..04_export, config.py, seed_data.py,
PALLADIUM_GENESYSCX_* keys, ATHENA_EXPECTED reconciliation) deleted;
git history preserves it
With the last legacy study migrated, the retirement lands too:
- app/ (Streamlit UI) and core/notebook_helpers deleted; nothing else
imported them
- streamlit stripped from pyproject extras, requirements.txt, Makefile;
.env.example reduced to the Athena keys; 00_setup.ipynb and
core/bootstrap.py repointed at the pattern studies
- root README reworked: self-contained studies + slim core/ Athena
toolkit (tei_client, calculations, export, cli)
All suites green: Genesys 29, Amazon Connect 27, CTM 55, template 7,
root 58.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Replace Streamlit and JupyterLab commands with Mercury for serving interactive
notebooks as web apps. Update README to reflect new architecture where
notebooks are the primary deliverables, utilizing Mercury input widgets for
live client tuning. Add export_report.py script to generate LLM-readable
HTML/Markdown reports from the notebooks. Update corrected business case
notebook to include Mercury dependency and usage instructions.
- Add 202512_GenesysCX TEI study (config, seed data, notebooks, README)
with NPV $10.8M / ROI 266% including AI-token cost line
- Add explicit `key` parameter to all chart wrappers in app/components
to prevent StreamlitDuplicateElementId errors when the same figure
type renders across Summary/Benefits/Costs tabs
- Render benefits bar and cost pie charts on their respective tabs
- Add benefits_vs_costs_by_year chart wrapper
Add configurable locale/display formatting environment variables
(`PALLADIUM_CURRENCY_SYMBOL`, `PALLADIUM_THOUSANDS_SEP`,
`PALLADIUM_DECIMAL_SEP`) to support regional number formatting in the
Streamlit app. Update `.env.example` with documentation for these new
variables.
Also refresh `00_setup.ipynb` with current execution outputs reflecting
a live Athena connection with report templates, a selected client
(Global Guardian Insurance, ID=2), and resolved NameError in assumption
override cells.
Reorganize Palladium codebase into a modular architecture with `core/`
shared logic and `app/` Streamlit UI, separating per-study assets into
`studies/YYYYMM_<Vendor>/` folders containing notebooks, seed data, and
configuration. Update README to reflect new structure, add `.gitignore`
entries for `.env` and study exports, and refresh component documentation.