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.6.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.6.0
File Size Uploaded
dvm_finance-1.6.0.tar.gz 197.7 kB Details

Built distribution (wheel)

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

Total release size: 452.0 kB

Release files / dvm_finance-1.6.0.tar.gz

Download URL dvm_finance-1.6.0.tar.gz
Size 197.7 kB
Tags Source
SHA-256 checksum
How to use checksums
bbe624955a3c48288839c9f613f61f9b5c94fcda20ff2032edadc84f62ca26e0
BLAKE2b-256 checksum
How to use checksums
397f2b119595af1dea22076e5f2d0a06a2585e647628160f50d17d36cad04aec
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 28, 2026.

Transparency log

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

Download URL dvm_finance-1.6.0-py3-none-any.whl
Size 254.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
c1594c064b8c75bb555ac64099083819e3deda09899d9d10aec4d028411e2f52
BLAKE2b-256 checksum
How to use checksums
259704c6f4abfb41de44534b8c81caf516fe7c026dcb57ef9e57372b1312df38
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 28, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

1.6.0 This release

2 release files

1.4.0

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