Preserve evidence
Normalized CSV rows retain a source hash and source-row link. PDFs and spreadsheets can be kept locally as evidence without sharing them.
Offline-first workpaper prototype
A small, reviewable Python tool for normalizing UK investment activity, reconstructing lots, and preparing section 1291 workpapers and draft Form 8621 field packets.
Privacy boundary: this webpage never accepts or processes financial records. Do not upload or paste real statements, names, account numbers, addresses, or SSNs here. Run the calculator on your own computer.
The public demo lets you inspect the synthetic workflow and the safety gates. The real calculator is deliberately a local command-line application: it stores its SQLite workspace and source documents on your machine and makes no network requests.
Normalized CSV rows retain a source hash and source-row link. PDFs and spreadsheets can be kept locally as evidence without sharing them.
FIFO lots, per-share excess-distribution tests, day allocations, supplied rates, and interest factors are exported to inspectable workpapers.
PFIC status, treatment, ownership, FX, and filing-policy choices require explicit confirmation. An unresolved input blocks a filing-ready bundle.
The example uses invented taxpayers, invented funds, and synthetic amounts. It creates a private workspace under /tmp so you can see every generated artifact before using any real records.
cd /Users/yosemite/githubs/claude_code_misc_work/pfic-catchup && python3 pfic.py demo /tmp/my-pfic-demoopen /tmp/my-pfic-demo/exports/2024/audit_bundle.htmlThis calculator currently needs Python 3.12+ and no package installation for its deterministic core.
This browser control is an explanatory simulation only. It does not calculate tax or store any input.
These are test-fixture results, not an estimate of anyone’s tax liability.
| Bundle item | Purpose | Status in the synthetic run |
|---|---|---|
| Lot and basis ledger | Shows purchases/reinvestments, remaining shares, basis, and FIFO disposals. | Generated |
| Section 1291 allocations | Links each event and holding-period allocation to evidence and entered rate inputs. | Generated |
| Form 8621 field packet | Provides transfer-ready draft fields and allocation statements. | Draft only |
| Accumulation-unit treatment | Requires an explicit factual/legal review; it cannot be solved by a checkbox. | Review required |
Keep real records offline. Copy the synthetic project configuration, replace only the local facts, preserve statements as evidence, import a normalized CSV, resolve the review queue, and calculate one correction year at a time.
python3 pfic.py init /path/to/private-pfic-workspace --config /path/to/project.jsonpython3 pfic.py calculate /path/to/private-pfic-workspace 2024 --fail-on-blockers --redacted-out /path/to/redacted-review