Skip to content

Latest commit

 

History

2 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

SpendArchive

A private, local-first receipt and expense manager for Windows. Turn photos and PDFs of receipts into organized, searchable, item-level expense records — with OCR, AI extraction, storage, and analytics all running on your own machine.

SpendArchive works offline. It has no telemetry, no hosted AI, no accounts, and never uploads your receipts or expense data.

Features

  • Import receipt photos and PDFs by drag-and-drop, file picker, clipboard paste, or a watched folder. Supported: JPG, PNG, WEBP, HEIC/HEIF, TIF/TIFF, BMP, PDF.
  • Automatic scanning — document edge detection, deskew, perspective correction, and enhancement, with an interactive editor for adjusting corners, rotation, and output style.
  • Local OCR (bundled) produces a searchable PDF with an invisible text layer.
  • Local AI extraction via Ollama reads the receipt into structured data: store, date, totals, tax, payment method, and individual line items.
  • Item-level expenses — each line item can have its own category, so a single receipt can span multiple categories without double-counting.
  • Your own categories — SpendArchive starts with two simple defaults (Household and Business) and lets you add, colour, rename, archive, and nest your own categories and subcategories to match how you actually track spending.
  • Review and correct everything before confirming; corrections are recorded in an audit history.
  • Automatic filing — confirmed receipts are renamed from a configurable template and filed into <Category>/<Year>/, with the untouched original preserved alongside the scan.
  • Duplicate detection by file hash, receipt number, and store/date/total.
  • Search and analytics — full-text search, grouped expense tables, dashboard charts, price history per item, recurring-purchase detection, and merchant summaries.
  • Exports — Excel workbook, CSV, PDF report, or a ZIP archive of receipt PDFs.
  • Validated backups — every backup is reopened and verified (database checksum plus integrity check) before it is reported successful.
  • Refunds, recycle bin, and exact money handling (integer minor units — never floating point).

Download

Compiled Windows builds are distributed through the Releases page: an installer and a portable build. Download one, run it, and follow the first-run setup.

About the Windows warning

SpendArchive is released free and unsigned — there is no paid code-signing certificate behind it. Windows SmartScreen will therefore show a "Windows protected your PC" warning the first time you run it; choose More info → Run anyway to continue. Your antivirus may also flag it, which is a common false positive for applications packaged this way.

You do not have to take that on trust. The complete source code for both the application and its processing engine is in this repository, SpendArchive runs entirely on your own machine with no network access beyond local services you install yourself (see Privacy), and you can build your own copy from source with the instructions below if you would rather not run a downloaded binary.

Requirements

  • Windows 11, 64-bit.
  • Ollamaonly required for AI extraction. Everything else, including OCR, works without it. Install a model, for example:
    ollama pull qwen3.5:4b
    

The packaged application bundles its own Python runtime and OCR engine; no other installation is required.

Usage

  1. Launch SpendArchive. On first run, choose where your receipt library is stored.
  2. Add a receipt — drag a photo or PDF onto the Inbox, paste from the clipboard, or point a watched folder at your scanner's output.
  3. SpendArchive scans it, runs OCR, generates a searchable PDF, and extracts the data.
  4. Review the result, correct anything that is wrong, assign categories per item, and confirm.
  5. The receipt is renamed, filed, and becomes an expense record you can search, chart, and export.

Your library defaults to %LOCALAPPDATA%\SpendArchive\ReceiptLibrary and can be moved or relocated at any time from Settings. Uninstalling SpendArchive does not delete it.

Privacy

SpendArchive is built to keep receipt data on the machine that created it:

  • The processing engine binds to 127.0.0.1 only and requires a per-session token that is generated at launch and never written to disk.
  • The user interface enforces a Content-Security-Policy that permits network access only to that local engine.
  • AI extraction talks to a local Ollama runtime. No data is sent to any hosted AI provider.
  • There is no telemetry, analytics, advertising, crash reporting, remote configuration, or mandatory account.
  • Imported originals are never modified; only derived files are generated.

Building from source

Requires Python 3.12+ (3.14 verified) and Node.js 20+ (24 verified).

# Engine
cd engine
py -m venv .venv
./.venv/Scripts/python.exe -m pip install -r requirements-dev.txt
./.venv/Scripts/python.exe -m pip install -e .

# Application
cd ../app
npm install

# Run in development (the app launches the engine automatically)
npm run dev

Tests:

cd engine && PYTHONPATH=src ./.venv/Scripts/python.exe -m pytest
cd app && npm run typecheck && npm test

Packaging a Windows build:

# 1) Bundle the engine  ->  engine/dist/spendarchive-engine/
cd engine
./.venv/Scripts/python.exe -m PyInstaller --noconfirm spendarchive-engine.spec

# 2) Build installer and portable exe  ->  app/release/
cd ../app
npm run package
npm run package:portable

Architecture

A Python engine owns all data and processing — SQLite (with FTS5), image pipeline, OCR, AI extraction, PDF generation, exports, and backups — and exposes a loopback-only HTTP API. An Electron + React interface is a thin client over that API. The engine is launched and supervised by the application and exits automatically when the application closes.

License

Copyright © 2026 Aldoreh.

SpendArchive is free software, released under the GNU General Public License v3.0 — see LICENSE. You may use, study, modify, and redistribute it; if you distribute a modified version, it must also be released under the GPL v3.0 with its source available.

Third-party components and their licenses are listed in THIRD-PARTY-NOTICES.md.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages