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.3.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.3.0
File Size Uploaded
dvm_finance-1.3.0.tar.gz 183.5 kB Details

Built distribution (wheel)

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

Total release size: 417.3 kB

Release files / dvm_finance-1.3.0.tar.gz

Download URL dvm_finance-1.3.0.tar.gz
Size 183.5 kB
Tags Source
SHA-256 checksum
How to use checksums
ba80e12a8111215804978bd4c971d65476d4bd0cf93d3b5cf6502b2d88240385
BLAKE2b-256 checksum
How to use checksums
baa5828212400fdd1a87987763f60e8265dc2246b6a7fd26a7d7c8a9f89a321f
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 16, 2026.

Transparency log

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

Download URL dvm_finance-1.3.0-py3-none-any.whl
Size 233.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
95684fb22968115e5a7b7a9b696951f3313f57af2e1c307a57c870f6715e8704
BLAKE2b-256 checksum
How to use checksums
d21a7ca674fa13b2f4969374b9e6ac1b9c7bd4ef22c1f67b39bc11794750c351
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 16, 2026.

Transparency log

Release history Release notifications | RSS feed

1.6.0

2 release files

1.4.0

2 release files

This release

1.3.0 This release

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