Open source · Offline-first · Nessun abbonamento

Il tuo estratto conto unificato,
sul tuo computer

Importa i file di tutte le tue banche. Spendify li unifica, elimina i doppi conteggi, classifica ogni transazione — e i tuoi dati non lasciano mai il tuo disco.

▶ Installa ora Vedi su GitHub

Python · Streamlit · SQLite · Ollama · nessun account richiesto

🔒 Dati solo sul tuo computer
🔁 Import idempotente SHA-256
🏦 Multi-banca, multi-formato
🤖 AI locale o cloud con PII redaction
🧪 199 test, zero dipendenze esterne

Tre banche, tre file, un casino

Ogni mese: scarica, apri Excel, incolla, aggiusta i segni, trova i doppioni. E ogni volta qualcosa non torna.

😩 La routine mensile che tutti odiano

Tre estratti conto da tre portali bancari diversi, formati CSV incompatibili, date in formati differenti, importi con segni a caso. Unirli a mano richiede ore e genera sempre errori.

🔴 Il problema dei problemi: il doppio conteggio

La spesa al supermercato appare nell'estratto della carta e nel conto corrente come addebito mensile aggregato. Sommando tutto, le tue spese sembrano il doppio di quelle reali. Nessuno strumento comune risolve questo automaticamente.

🔄 I giroconti che falsano il bilancio

Un bonifico al conto deposito non è una spesa. Ma se importi entrambi i conti, lo stesso movimento appare due volte — come uscita dal corrente e come entrata sul deposito.

📋 La categorizzazione che non finisce mai

Classificare 300 transazioni al mese a mano è un lavoro. Le app cloud lo fanno, ma inviano i tuoi dati bancari ai loro server e ti chiedono un abbonamento mensile.


Tre passi, nessuna magia nera

Nessuna integrazione bancaria, nessun account, nessuna configurazione per tipo di file.

Scarica i file dalla tua banca

Esporta gli estratti conto in CSV o XLSX dal portale della tua banca. Funziona con qualsiasi banca italiana (e non solo) — Spendify riconosce automaticamente il formato senza configurazione manuale.

Trascinali in Spendify e clicca Elabora

Seleziona tutti i file insieme, anche da banche diverse, anche di anni diversi. Spendify rileva il tipo di documento, corregge i segni, elimina i doppi conteggi tra carta e conto, classifica ogni transazione.

Guarda dove vanno i tuoi soldi

Il ledger unificato mostra tutto in un posto solo: grafici, filtri, export, e la certezza che ogni euro viene contato una volta sola.


Algoritmi che risolvono i problemi reali

Non è una app di budgeting generica. È progettata attorno ai problemi specifici di chi ha più conti bancari italiani.

RF-03

Riconciliazione carta–conto corrente

Quando la carta di credito addebita l'importo mensile sul conto corrente, Spendify riconosce la relazione e rimuove il doppio conteggio automaticamente.

Finestra temporale ±45 giorni · 3 fasi di matching: finestra scorrevole → subset sum per importi frazionati → riconciliazione parziale

RF-04

Rilevamento giroconti interni

Un bonifico dal conto corrente al conto deposito non è né una spesa né un'entrata: è un trasferimento interno. Spendify lo riconosce confrontando importi, date e nomi dei titolari nelle descrizioni — anche se i due file sono stati importati in momenti diversi.

Dedup

Deduplicazione idempotente

Ogni transazione ha un ID univoco calcolato sul contenuto (SHA-256). Se importi lo stesso file due volte, non accade nulla. Puoi reimportare tutta la storia bancaria senza paura di duplicati.

Categorie

Classificazione ibrida a cascata

La categorizzazione usa quattro livelli in sequenza:

  • 1Le tue regole — "CONAD" → Alimentari (applicate retroattivamente)
  • 2Regex statiche — pattern predefiniti per le categorie comuni
  • 3LLM — per tutto il resto, AI locale o cloud
  • 4Fallback — "Da rivedere" se tutto il resto fallisce

I tuoi dati restano tuoi. Sul serio.

Non è solo uno slogan. È l'architettura.

🏠

Offline-first per default

Spendify usa Ollama in locale di default: un motore AI che gira sul tuo computer, senza connessione internet. I tuoi estratti conto non lasciano mai il tuo disco.

🛡️

PII redaction automatica

Se usi OpenAI o Claude, Spendify rimuove automaticamente tutti i dati identificativi prima di qualsiasi chiamata remota:

IBAN → <ACCOUNT_ID> PAN → <CARD_ID> CF → <FISCAL_ID> Nome → alias fittizio

Se il controllo fallisce, la chiamata viene bloccata — non degradata silenziosamente.

💾

Database locale portabile

I dati sono in un file SQLite sul tuo computer. Puoi copiarlo, spostarlo, farne backup come qualsiasi altro file. Nessun cloud obbligatorio, nessun account, nessun abbonamento.


Non per tutti. Per chi vuole il controllo vero.

Quattro profili che trovano in Spendify qualcosa che le alternative non danno.

🏦

Chi ha più conti in banche diverse

Conto corrente + carta di credito + conto deposito + conto trading? Spendify li unifica tutti in un unico ledger senza dover fare nulla a mano.

📊

Chi tiene i conti seriamente

Se usi Excel per le spese, Spendify può sostituire quella routine: importi i file una volta, Spendify unifica e classifica, tu controlli solo le eccezioni.

🔐

Chi non si fida del cloud

Nessun backend remoto obbligatorio, nessun account, nessuna registrazione. I tuoi dati bancari restano dove devono restare: sul tuo computer.

👨‍💻

Developer

Progetto open source Python con architettura modulare, pipeline LLM su dati strutturati, test suite completo. Un punto di partenza per sperimentare o costruire integrazioni custom.


Tutto quello che serve, niente di più


Import multi-banca CSV e XLSX da qualsiasi banca italiana (e non solo)
Auto-detect formato Nessuna configurazione manuale per ogni tipo di file
Ledger unificato Tutte le transazioni cronologiche, filtrabili per data / conto / categoria / contesto
Classificazione automatica 15 categorie spese + 7 entrate con sottocategorie
Tassonomia personalizzabile Aggiungi / modifica categorie senza riavviare l'app
Regole deterministiche Regole "ESSELUNGA → Alimentari" applicate retroattivamente
Analytics interattiva 7 grafici: andamento mensile, bilancio cumulato, torta categorie, top 10 commercianti
Contesti di vita Segmenta le spese per Lavoro / Vacanza / Quotidianità
Check List Tabella pivot mese × conto: vedi quali mesi non hai ancora importato
Export HTML standalone (con grafici), CSV, XLSX
LLM configurabile Ollama, OpenAI, Claude, Groq, Gemini, LM Studio, qualsiasi API compatibile
PII sanitization Protezione automatica IBAN / PAN / codice fiscale / nome prima di chiamate remote

Un comando, l'app è pronta

Serve solo Docker Desktop. Nessun git clone, nessuna configurazione.

bash
$ curl -fsSL https://raw.githubusercontent.com/drake69/spendify/main/installer/install.sh | bash
powershell
PS> irm https://raw.githubusercontent.com/drake69/spendify/main/installer/install.ps1 | iex

Lo script scarica l'immagine da GitHub Container Registry, avvia il container e apre il browser su http://localhost:8501 automaticamente.
AI locale opzionale: lo script chiede se installare Ollama con gemma3:12b — scaricato in background (~8 GB). Funziona su Apple Silicon (arm64) e amd64.
Per disinstallare: curl -fsSL https://raw.githubusercontent.com/drake69/spendify/main/installer/uninstall.sh | bash


Tecnologie mature, nessuna dipendenza esotica

Nessun framework LLM (no LangChain) — i backend AI usano direttamente gli SDK ufficiali.

Python 3.13 + pandas
Streamlit interfaccia web
SQLite + SQLAlchemy
Pydantic v2 validazione schemi
Plotly grafici interattivi
uv package manager
Ollama AI locale
chardet encoding detection
openpyxl parsing Excel

Architettura modulare, test suite completo

File CSV/XLSX Pre-processing (strip righe sparse, drop colonne metadati) Classificatore schema (fingerprint SHA-256 → LLM se schema nuovo) Normalizzatore (encoding, parse_amount Decimal, SHA-256 tx_id) Riconciliatore RF-03 (carta–conto corrente, 3 fasi) Rilevatore RF-04 (giroconti interni, matching simbolico) Description cleaner (LLM: rumore → testo canonico) Categorizzatore (regole → regex → LLM → fallback) Database (SQLAlchemy, upsert idempotente)

🔌 Nuovi backend LLM

Implementa LLMBackend (3 metodi) e registralo in BackendFactory. Funziona con qualsiasi API OpenAI-compatible.

🏦 Nuovi formati bancari

Flow 2 li riconosce automaticamente via LLM senza modifiche al codice. Lo schema viene salvato e riutilizzato nelle importazioni successive.

🏷️ Nuove categorie

Dalla pagina Tassonomia, senza toccare il codice. La tassonomia è completamente configurabile dall'interfaccia.

🚀 API REST

La pipeline process_file() è completamente separata dall'UI — si può esporre via FastAPI senza modifiche.


bash — test suite
$ uv run pytest tests/ -v # 199 test, zero dipendenze esterne
$ uv run pytest tests/ --cov=core # coverage del business logic layer

Cosa sta arrivando



Contribuire è benvenuto

Le aree dove il contributo è più utile:

🏦 Nuovi formati bancari

Se la tua banca non viene riconosciuta automaticamente, apri una issue con un campione CSV anonimizzato.

🧪 Test UI

La suite copre il layer di business logic ma non ancora l'interfaccia Streamlit. C'è spazio per contribuire.

🌍 Internazionalizzazione

L'architettura supporta già più lingue per le descrizioni. La UI è in italiano — c'è margine per aggiungere altre lingue.

⚡ Performance

La categorizzazione batch è il collo di bottiglia con LLM locale. C'è margine per parallelizzazione.


Vai su GitHub