Open source · Offline-first · Geen abonnement

Je geünificeerde rekeningoverzicht,
op je eigen computer

Importeer bestanden van al je banken. Spendify voegt ze samen, voorkomt dubbeltellingen, classificeert elke transactie — en je gegevens verlaten nooit je harde schijf.

▶ Nu installeren Bekijk op GitHub

Python · Streamlit · SQLite · Ollama · geen account vereist

🔒 Gegevens alleen op je eigen computer
🔁 Idempotente SHA-256-import
🏦 Multi-bank, multi-formaat
🤖 Lokale of cloud-AI met PII-redactie
🧪 199 tests, geen externe afhankelijkheden

Drie banken, drie bestanden, één chaos

Elke maand: downloaden, Excel openen, plakken, de tekens corrigeren, de duplicaten zoeken. En elke keer klopt er iets niet.

😩 De maandelijkse routine waar iedereen een hekel aan heeft

Drie transactiebestanden van drie verschillende bankportalen, incompatibele CSV-formaten, datums in verschillende formaten, bedragen met willekeurige tekens. Ze handmatig samenvoegen kost uren en levert altijd fouten op.

🔴 Het probleem der problemen: dubbeltellingen

De boodschappen verschijnen op het creditcardafschrift én op de betaalrekening als maandelijkse verzamelafschrijving. Tel je alles op, dan lijken je uitgaven het dubbele van wat ze werkelijk zijn. Geen enkele gangbare tool lost dit automatisch op.

🔄 Interne overboekingen die je saldo vertekenen

Een overboeking naar een spaarrekening is geen uitgave. Maar als je beide rekeningen importeert, verschijnt dezelfde transactie tweemaal — als uitgave op de betaalrekening en als inkomende op de spaarrekening.

📋 De categorisatie die nooit eindigt

300 transacties per maand handmatig classificeren is een baan op zich. Cloud-apps doen het wel, maar ze sturen je bankgegevens naar hun servers en rekenen een maandelijks abonnement.


Drie stappen, geen zwarte magie

Geen bankintegraties, geen account, geen configuratie per bestand.

Download bestanden van je bank

Exporteer transactiebestanden als CSV of XLSX vanuit het portaal van je bank. Werkt met elke bank — Spendify herkent het formaat automatisch zonder handmatige configuratie.

Sleep ze in Spendify en klik op Verwerken

Selecteer alle bestanden tegelijk, ook van verschillende banken, ook uit verschillende jaren. Spendify herkent het documenttype, corrigeert tekens, voorkomt dubbeltellingen tussen kaart en rekening, en classificeert elke transactie.

Zie waar je geld naartoe gaat

Het geünificeerde grootboek toont alles op één plek: grafieken, filters, export, en de zekerheid dat elke euro precies één keer wordt geteld.


Algoritmes die echte problemen oplossen

Dit is geen generieke budget-app. Het is ontworpen rond de specifieke problemen van mensen met meerdere rekeningen.

RF-03

Reconciliatie creditcard–betaalrekening

Wanneer de creditcard het maandbedrag afschrijft van de betaalrekening, herkent Spendify het verband en verwijdert de dubbeltelling automatisch.

Tijdvenster ±45 dagen · 3 matchingfasen: glijdend venster → subset sum voor opgesplitste bedragen → gedeeltelijke reconciliatie

RF-04

Detectie van interne overboekingen

Een overboeking van een betaalrekening naar een spaarrekening is geen uitgave en geen inkomen: het is een interne overboeking. Spendify herkent dit door bedragen, datums en rekeninghoudersnamen in de omschrijvingen te vergelijken — zelfs als de twee bestanden op verschillende momenten zijn geïmporteerd.

Dedup

Idempotente deduplicatie

Elke transactie heeft een unieke ID berekend uit de inhoud (SHA-256). Als je hetzelfde bestand twee keer importeert, gebeurt er niets. Je kunt je hele transactiehistorie opnieuw importeren zonder angst voor duplicaten.

Categories

Hybride classificatie in cascade

De categorisatie gebruikt vier niveaus achter elkaar:

  • 1Je eigen regels — "ALBERT HEIJN" → Boodschappen (met terugwerkende kracht toegepast)
  • 2Statische regex — vooraf gedefinieerde patronen voor gangbare categorieën
  • 3LLM — voor al het overige, lokale of cloud-AI
  • 4Fallback — "Te beoordelen" als al het andere faalt

Je gegevens blijven van jou. Echt waar.

Het is geen slogan. Het is de architectuur.

🏠

Standaard offline-first

Spendify gebruikt standaard Ollama lokaal: een AI-engine die draait op je eigen computer, zonder internetverbinding. Je transactiebestanden verlaten nooit je harde schijf.

🛡️

Automatische PII-redactie

Als je OpenAI of Claude gebruikt, verwijdert Spendify automatisch alle identificerende gegevens vóór elke remote-aanroep:

IBAN → <ACCOUNT_ID> PAN → <CARD_ID> BSN → <FISCAL_ID> Naam → fictief alias

Als de controle faalt, wordt de aanroep geblokkeerd — niet stilzwijgend gedegradeerd.

💾

Portable lokale database

De gegevens worden opgeslagen in een SQLite-bestand op je computer. Je kunt het kopiëren, verplaatsen of er een back-up van maken zoals van elk ander bestand. Geen verplichte cloud, geen account, geen abonnement.


Niet voor iedereen. Voor wie echte controle wil.

Vier profielen die in Spendify iets vinden wat alternatieven niet bieden.

🏦

Mensen met rekeningen bij meerdere banken

Betaalrekening + creditcard + spaarrekening + beleggingsrekening? Spendify voegt ze allemaal samen tot één overzicht zonder dat je iets handmatig hoeft te doen.

📊

Mensen die hun financiën serieus volgen

Als je Excel gebruikt voor je uitgaven, kan Spendify die routine vervangen: je importeert de bestanden één keer, Spendify voegt samen en classificeert, en jij beoordeelt alleen de uitzonderingen.

🔐

Mensen die de cloud niet vertrouwen

Geen verplichte remote backend, geen account, geen registratie. Je bankgegevens blijven waar ze horen: op je eigen computer.

👨‍💻

Developers

Open source Python-project met modulaire architectuur, LLM-pipeline op gestructureerde data, volledige testsuite. Een startpunt om mee te experimenteren of op maat gemaakte integraties te bouwen.


Alles wat je nodig hebt, niets meer


Multi-bank-import CSV en XLSX van elke bank
Auto-detectie van formaat Geen handmatige configuratie per bestandstype
Geünificeerd grootboek Alle transacties op chronologische volgorde, filterbaar op datum / rekening / categorie / context
Automatische classificatie 15 uitgavencategorieën + 7 inkomstencategorieën met subcategorieën
Aanpasbare taxonomie Categorieën toevoegen / bewerken zonder de app opnieuw te starten
Deterministische regels Regels als "ALBERT HEIJN → Boodschappen", met terugwerkende kracht toegepast
Interactieve analytics 7 grafieken: maandelijkse trend, cumulatief saldo, categorie-pie, top 10 verkopers
Levenscontexten Segmenteer uitgaven op Werk / Vakantie / Dagelijks leven
Check List Pivot-tabel maand × rekening: zie welke maanden je nog niet hebt geïmporteerd
Export Standalone HTML (met grafieken), CSV, XLSX
Configureerbare LLM Ollama, OpenAI, Claude, Groq, Gemini, LM Studio, elke compatibele API
PII-sanitatie Automatische bescherming van IBAN / kaartnummer / BSN / naam vóór remote-aanroepen

Eén commando, app klaar voor gebruik

Native desktop-app met lokale AI inbegrepen. Geen Docker, geen Terminal die openblijft.

📥 Installer downloaden (DMG · MSIX · .deb · .rpm)
Stapsgewijze gids met schermafbeeldingen → installatie & eerste start

— of, vanuit de terminal: —

bash
$ curl -fsSL https://raw.githubusercontent.com/drake69/spendif-ai/main/packaging/macos/install.sh | bash
bash
$ curl -fsSL https://raw.githubusercontent.com/drake69/spendif-ai/main/packaging/linux/install-debian.sh | bash
bash
$ curl -fsSL https://raw.githubusercontent.com/drake69/spendif-ai/main/packaging/linux/install-redhat.sh | bash
powershell
PS> irm https://raw.githubusercontent.com/drake69/spendif-ai/main/packaging/windows/install.ps1 | iex

Het script detecteert je hardware, downloadt het optimale AI-model voor je RAM (1–7 GB) en regelt alles — zonder enige tussenkomst.
De app verschijnt in Launchpad / Startmenu / bestandsbeheer, klaar voor gebruik.

🐳 Liever Docker?

Alleen Docker Desktop vereist. Officiële container van GitHub Container Registry, browser op http://localhost:8501.

🍎 macOS / 🐧 Linux
curl -fsSL https://raw.githubusercontent.com/drake69/spendif-ai/main/installer/install.sh | bash
🪟 Windows
irm https://raw.githubusercontent.com/drake69/spendif-ai/main/installer/install.ps1 | iex

🆘 Hulp nodig? Open een issue op GitHub — bugs, vragen, feature-verzoeken.
Vind je Spendif.ai leuk? Geef ons een ster — het helpt ons de officiële package registries te bereiken (Homebrew Core, winget).


Volwassen technologieën, geen exotische afhankelijkheden

Geen LLM-framework (geen LangChain) — AI-backends gebruiken direct de officiële SDK's.

Python 3.13 + pandas
Streamlit web-interface
SQLite + SQLAlchemy
Pydantic v2 schemavalidatie
Plotly interactieve grafieken
uv package manager
Ollama lokale AI
chardet encoding-detectie
openpyxl Excel-parsing

Modulaire architectuur, volledige testsuite

CSV/XLSX File Pre-processing (strip sparse rows, drop metadata columns) Schema classifier (SHA-256 fingerprint → LLM if new schema) Normalizer (encoding, parse_amount Decimal, SHA-256 tx_id) RF-03 Reconciler (credit card–current account, 3 phases) RF-04 Detector (internal transfers, symbolic matching) Description cleaner (LLM: noise → canonical text) Categorizer (rules → regex → LLM → fallback) Database (SQLAlchemy, idempotent upsert)

🔌 Nieuwe LLM-backends

Implementeer LLMBackend (3 methoden) en registreer hem in BackendFactory. Werkt met elke OpenAI-compatibele API.

🏦 Nieuwe bankformaten

Flow 2 herkent ze automatisch via LLM zonder codewijzigingen. Het schema wordt opgeslagen en hergebruikt bij volgende imports.

🏷️ Nieuwe categorieën

Vanuit de pagina Taxonomie, zonder de code aan te raken. De taxonomie is volledig configureerbaar vanuit de interface.

🚀 REST API

De pipeline process_file() staat volledig los van de UI — hij kan zonder wijzigingen via FastAPI worden ontsloten.


bash — testsuite
$ uv run pytest tests/ -v # 199 tests, geen externe afhankelijkheden
$ uv run pytest tests/ --cov=core # coverage van de business-logic-laag

Wat eraan komt



Bijdragen zijn welkom

Gebieden waar bijdragen het meest van pas komen:

🏦 Nieuwe bankformaten

Als jouw bank niet automatisch wordt herkend, open dan een issue met een geanonimiseerd CSV-voorbeeld.

🧪 UI-tests

De suite dekt de business-logic-laag, maar nog niet de Streamlit-interface. Hier is ruimte om bij te dragen.

🌍 Internationalisatie

De architectuur ondersteunt al meerdere talen voor omschrijvingen. De UI is in het Italiaans — er is ruimte om andere talen toe te voegen.

⚡ Performance

Batch-categorisatie is de bottleneck met een lokale LLM. Er is ruimte voor parallellisatie.


Naar GitHub