/cfo-report-dashboard — Traceable HTML Dashboards
When to use
- You want a polished dashboard artifact that can be opened in a browser or shared with an advisor.
- You need a non-LLM reporting path from a valid
main.beancountfile. - You want a business dashboard for statements and working-capital context.
- You want a household dashboard for net worth, spending, and cash flow context.
Core workflow
- Resolve the ledger path.
Priority: explicit argument,
./main.beancount,./ledger/main.beancount, then the firstmain.beancountfound recursively. - Run
bean-queryto extract structured balances, monthly account movements, and posting activity. - Infer
businessorhouseholdprofile unless the user forces it. - Render a static HTML dashboard with Bun + TypeScript + React + Tailwind v4.
- Save the artifact to an output directory and keep the raw JSON export beside it for auditability.
Commands
From the repo root, after ./setup:
./bin/cfo-dashboard examples/canadian-company/main.beancount
./bin/cfo-dashboard examples/canadian-family/main.beancount --profile household
./bin/cfo-dashboard examples/usa-company/main.beancount --variant social --output reports/social-share/usa-company
./bin/cfo-dashboard --sample-set all
Direct Bun usage:
cd skills/report-dashboard/scripts
bun install
bun run generate -- --ledger ../../../examples/usa-company/main.beancount
Outputs
index.html— standalone dashboard shelldashboard.css— compiled Tailwind stylesheetdashboard-data.json— extracted structured data for traceability- Social variant:
--variant socialemits a share-safe HTML view and intentionally omits raw JSON output.
Constraints
- Never invent numbers. Every figure must come from
bean-queryoutput. - Treat cash flow as a direct-method summary based on cash-account transactions and transparent account heuristics.
- Keep generated artifacts out of git. Use ignored output paths such as
reports/ordashboard-output/. - Run
bean-checkbefore relying on the dashboard.
Implementation notes
- Tooling lives in
scripts/. - Use
bun run checkfor type safety. - If the UI needs polishing, prefer reviewing
scripts/src/render.tsxandscripts/src/styles.css.