Australian financial planning and analysis with openfpa
Synthetic example. Forecasting aid, not tax advice; a human approves the assumptions and funding decision.
Input: Lumbridge Services' fabricated records, NSW payroll assumptions and dated customer receipts and payments for October to December 2026.
Lumbridge Services is a fictional Newcastle maintenance business. Its Varrock and Falador service lines are Old School RuneScape references; no game knowledge is needed. All amounts are AUD.
From a clone, use Python 3.11 and the locked development environment:
uv sync --locked --extra dev
uv run --locked --extra dev python examples/lumbridge-services/models/generated/lumbridge.py
Output: briefing.md, lumbridge.xlsx, monthly and cash schedules in examples/lumbridge-services/output/.
| Forecast measure | Receipt on time | Receipt 45 days late |
|---|---|---|
| Quarter revenue | $180,000.00 | $180,000.00 |
| Quarter profit before income tax | $35,957.55 | $35,957.55 |
| October closing cash | $32,040.00 | ($11,960.00) |
| Lowest daily closing cash | $16,800.00 | ($25,160.00) |
| December closing cash | $67,320.00 | $67,320.00 |
Human decision: Can the business meet its next payments if a customer pays late, and should the owner defer discretionary equipment spending?
In desktop Excel, change Assumptions!B2 from 0 to 45. This delays one $44,000 receipt and creates a $25,160 cash shortfall on 6 November without changing profit. Restore 0 after use. The workbook supports only whole-day receipt delays from 0 to 120; CSVs and briefing text are fixed exports.
Read the assumptions and limits, then use the independent trial guide to record a review. The independent accountant trial remains pending. This synthetic case does not establish client outcomes or forecast accuracy.
Harbour Light provides a separate Victorian wholesale example with FY2027 reporting and quarterly BAS cash timing.
Setup, Australian scope, skills, kernel packages, upstream workbench and reference
What this repository adds
An Australian extension of openfpa, by Guiderail: 30 June years, Xero AU mapping, GST/BAS cash timing and payroll on-cost assumptions.
Package lifecycle: source-only. The distribution is au-fpa-pack, the import is pyfpa, and the command is openfpa. It is not published to PyPI.
Reproduce and inspect
- Setup
- Lumbridge inputs, method and limits
- Harbour Light inputs, method and limits
- Australian scope and source dates
- Other synthetic and public-data examples
The command above creates files; it does not establish native Excel recalculation or forecast accuracy.
Skills
skills/ holds 17 skills. Sixteen are the pack's own, grouped by what
they are for:
- Australian rules:
fpa-au-drivers,fpa-au-gst-bas,fpa-au-payroll,fpa-au-xero - Onboarding and building:
fpa-learn-business,fpa-configure-actuals,fpa-scaffold-model,fpa-excel-model - Running the month:
fpa-monthly-close,fpa-cash-runway,fpa-board-briefing,fpa-cfo-judgment - Learning from outcomes:
fpa-capture-correction,fpa-backtest-learn,fpa-research-loop,fpa-portfolio-learn
The seventeenth, skills/generated/sku-profitability,
is the worked example of a company-specific skill the workflow writes, not a
skill the pack ships for every company.
.claude-plugin/plugin.json declares the
repository as the openfpa plugin, version 0.1.0, MIT. That manifest is what a
Claude Code marketplace entry pointing at this repository installs.
Kernel packages and how each is reached
| Package | What it is for | How it is reached |
|---|---|---|
pyfpa/memory |
Company memory on disk: the .fpa/ workspace, intake, sources, mappings, connectors, corrections, experiments, entrypoints and the retrieval index. |
The openfpa CLI. Every workspace command in the CLI reference goes through it. |
pyfpa/research |
The champion and challenger loop: a company objective, scored epochs, and a model registry that only a recorded human approval changes. | openfpa status reads the model registry. The loop itself runs from skills/fpa-research-loop against the Python API. |
pyfpa/portfolio |
Cross-client learning: a portfolio manifest, priors mined and validated across clients, and recurring generated skills promoted into a shared library. | The Python API only. No CLI command reaches it, and today the one documented route is skills/fpa-portfolio-learn. |
Reference and contribution
- Upstream workbench and company workspace
- Agent CLI reference
- Python kernel
- Contributing and security reporting
MIT licensed. Guiderail's upstream work and Ryan Duguid's additions retain their attribution in LICENSE.
Metadata
Release files for au-fpa-pack 0.1.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| au_fpa_pack-0.1.1.tar.gz | 146.9 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| au_fpa_pack-0.1.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 257.2 kB
Release files / au_fpa_pack-0.1.1.tar.gz
| Download URL | au_fpa_pack-0.1.1.tar.gz |
|---|---|
| Size | 146.9 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
a2b10eef405025ddc0c4ad08ba9dbd3d49a3b32647cf73d547a3cce3c3b11fbb
|
|
BLAKE2b-256 checksum How to use checksums |
e592bda1a8b600a839dc2f8d409f7b8b0fd7f6f8793705435beb47726a2ada46
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 12, 2026.
Transparency logRelease files / au_fpa_pack-0.1.1-py3-none-any.whl
| Download URL | au_fpa_pack-0.1.1-py3-none-any.whl |
|---|---|
| Size | 110.3 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
7d0b094feed75eee38918c9c20b1f0924ee0349281474abd18c8eda4a4215637
|
|
BLAKE2b-256 checksum How to use checksums |
470d9aa0d72b66a19a3e2a22e77247a17b88cfc8f25cbf090856214ccdaf477a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 12, 2026.
Transparency log