Skip to main content

dvm-finance

Integrated personal-finance app: download, parse, categorize, and review bank statements locally. Merges the abn-analyst analyzer and the abn-download downloaders into a single, local, single-user web application. No login, no charts, no LLM — rules + manual categorization, tables, and an audit trail.

Install & run (PyPI)

With PyPI, simply:

pip install dvm-finance
dvm-finance

Or with uv for no-venv installation:

uvx dvm-finance

For development from a local checkout / wheel:

uvx --from /path/to/abn-combined dvm-finance
uvx --from dist/dvm_finance-0.1.0-py3-none-any.whl dvm-finance

First run

dvm-finance             # serves http://127.0.0.1:8000 and prints the URL

On first start the app creates its data directory (SQLite DB, downloaded statements, snapshot exports) and migrates the schema automatically. Defaults to the platform user-data dir (macOS: ~/Library/Application Support/dvm-finance/); override with --data-dir or DVM_FINANCE_DATA_DIR. Other flags: --port (default 8000) and --host (default 127.0.0.1).

The app binds to 127.0.0.1 and has no authentication — do not widen the bind address on an untrusted network.

An empty install offers three ways in: migrate a legacy database (below), upload statement files on the Upload tab (MT940/STA, ABN XLS, generic CSV, PayPal TXT, Wise CSV, SEB CSV), or download directly from the Download tab.

Migrating from abn-analyst

One-time, idempotent import of all transactions, rules + conditions, budgets and manual categorizations from a legacy abn_analyst.db (opened read-only):

dvm-finance migrate-legacy /path/to/abn_analyst.db

Re-running skips already-present rows. A per-table summary is printed.

Sharing data with a second person

  • Export (Snapshots tab): one click writes a versioned, gzipped-JSON snapshot of transactions, rules, budgets and change reports, offered as a download.
  • Import (their machine): upload the file on the Snapshots tab. The merge is incoming wins — new records are inserted, conflicting records (including manual categorizations and rule edits) are overwritten by the snapshot; local records absent from the snapshot are never deleted. The database is backed up first and an import report is stored for review.
  • Second-user setup is two commands: uvx dvm-finance, then import a snapshot in the browser.

Security note: snapshot files contain your full financial data and are not encrypted. Exchange them only over a channel you trust.

Downloads

  • ABN AMRO: click "Start ABN download" — a headed Chromium opens; authenticate with the ABN AMRO app; statements are fetched, saved and imported automatically. Requires Playwright browsers:

    playwright install chromium
    

    The app works fine without them (upload/rules/trends); the Download page shows install instructions when they are missing.

  • PayPal: start Chrome with remote debugging first, log in to PayPal, then click "Start PayPal download":

    /Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome \
      --remote-debugging-port=9226 --user-data-dir=~/.chrome/debugdir \
      https://www.paypal.com/reports/dlog
    

Development

source ~/venv/bin/activate
pip install -e ".[dev]"
playwright install chromium

ruff check .                 # lint
pytest                       # unit + integration (e2e/slow deselected)
pytest --cov=abn_combined    # coverage (fails under 80%)
pytest -m e2e                # Playwright end-to-end flows (headless Chromium)
dvm-finance --data-dir ./devdata   # run against a scratch data dir

See docs/architecture.md, docs/developer.md and docs/product.md for design notes, and docs/core-beliefs.md for the project's golden principles.

Metadata

Release files for dvm-finance 1.4.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for dvm-finance 1.4.0
File Size Uploaded
dvm_finance-1.4.0.tar.gz 189.9 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for dvm-finance 1.4.0
File Interpreter ABI Platform
dvm_finance-1.4.0-py3-none-any.whl Python 3 none any Details

Total release size: 431.7 kB

Release files / dvm_finance-1.4.0.tar.gz

Download URL dvm_finance-1.4.0.tar.gz
Size 189.9 kB
Tags Source
SHA-256 checksum
How to use checksums
d6662e89e02b29ef1ed9ecebc52429749caf8444d3144f89ff5afef3cc0cb66c
BLAKE2b-256 checksum
How to use checksums
56513c9809a45c4d1b03c78f464f26503f81cb2a93fb51fdeb7013f5aeb7c856
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

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 Jul 17, 2026.

Transparency log

Release files / dvm_finance-1.4.0-py3-none-any.whl

Download URL dvm_finance-1.4.0-py3-none-any.whl
Size 241.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
4d665426c3c3d6c6d6e4877a15b47d46666b5f3c5b3428523a739f29812e5b23
BLAKE2b-256 checksum
How to use checksums
7693712992b2ac05d1393c68ad33d686642f4f2c97bf18402dcd43ce429ebb6f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

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 Jul 17, 2026.

Transparency log

Release history Release notifications | RSS feed

1.6.0

2 release files

This release

1.4.0 This release

2 release files

1.3.0

2 release files

1.0.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page