Build your first Weekly CFO Pack.
Start with made-up data. Then add copies of the finance files your business already uses. Your original files will not be changed.
Before you start
You need Python 3.11 or newer. You do not need Docker or another SFP product.
Do not paste passwords, API keys, bank files, or payroll files into a chat. Keep them in your local toolkit folder.
Install the toolkit
On a Mac
- Unzip the downloaded folder.
- Open Terminal in that folder.
- Run
make setup.
On Windows
- Unzip the downloaded folder.
- Open PowerShell in that folder.
- Run
Set-ExecutionPolicy -Scope Process Bypass. - Run
.\cfo.ps1 setup.
Run the safe demo
The demo has made-up names and numbers. It proves the reports work before you add a business file.
make demoOn Windows, run .\cfo.ps1 demo.
Open reports, then open the dated folder and weekly-cfo-pack.html.
Add copies of your finance files
| File | Folder |
|---|---|
| QuickBooks exports | data/inbox/quickbooks |
| Stripe exports | data/inbox/stripe |
| Shopify exports | data/inbox/shopify |
| Bank statements | data/inbox/bank |
| Card statements | data/inbox/card |
| Payroll files | data/inbox/payroll |
| Budgets | data/inbox/budget |
Run cfoctl source list. It tells you what it found.
Build the Weekly CFO Pack
cfoctl ingest
cfoctl cfo-packThe dated report folder includes:
- A web report and Excel report
- A 13-week cash forecast
- Revenue and margin movement
- Collections and bill priorities
- Budget differences
- Close and control concerns
- A decision list and evidence index
Review the pack with a person
- Read the limitations first.
- Check that the source dates are fresh enough.
- Follow important amounts to the evidence index.
- Check each assumption.
- Give each decision a person and next step.
It cannot post a journal, pay a bill, send an invoice, move money, file a tax return, close a period, or approve spending.
Connect an API only if you want to
File exports are enough for the full core workflow. If you selected an API, run cfoctl credential configure stripe (or the source name). Your values stay hidden in your computer's password store. If that is not available, setup creates a private.env.local fallback.
- Stripe uses a restricted read key.
- Shopify uses a merchant-owned app with read scopes.
- QuickBooks is advanced and needs your own Intuit app and HTTPS callback.
Run cfoctl source test stripe (or the source name) before a sync.

™