Open source · Offline-first · Nessun abbonamento

I tuoi movimenti unificati,
sul tuo computer

Importa i file di tutte le tue banche. Spendif.ai 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
🔁 Importazione idempotente SHA-256
🏦 Multi-banca, multi-formato
🤖 AI locale o cloud con redazione PII
🧪 Centinaia di test, zero dipendenze esterne

Tre banche, tre file, un caos

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 file movimenti da tre portali bancari diversi, esportazioni CSV con strutture incompatibili, date in formati eterogenei, importi con segni inconsistenti. Unirli a mano richiede ore e genera sempre errori.

🔴 Il problema più insidioso: il doppio conteggio

La spesa al supermercato appare nei movimenti 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 alterano 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 a mano 300 transazioni al mese è un lavoro impegnativo. 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 i movimenti in CSV o XLSX dal portale della tua banca. Funziona con qualsiasi banca italiana (e non solo) — Spendif.ai riconosce automaticamente il formato senza configurazione manuale.

Trascinali in Spendif.ai e clicca Elabora

Seleziona tutti i file insieme, anche da banche diverse, anche di anni diversi. Spendif.ai 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 unico posto: grafici, filtri, esportazioni e la certezza che ogni euro viene contato una volta sola.


Algoritmi che risolvono i problemi reali

Non è un'app di gestione del budget 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, Spendif.ai riconosce la relazione e rimuove il doppio conteggio automaticamente.

Finestra temporale ±45 giorni · 3 fasi di abbinamento: 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. Spendif.ai 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 per scelta predefinita

Spendif.ai usa llama.cpp in locale in modo predefinito: un motore di AI che gira sul tuo computer, senza connessione internet. I tuoi movimenti non lasciano mai il tuo disco. Ollama è disponibile come alternativa locale.

🛡️

Redazione PII automatica

Se usi OpenAI o Claude, Spendif.ai 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 viene degradata in silenzio.

💾

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 vero controllo.

Quattro profili che trovano in Spendif.ai qualcosa che le alternative non danno.

🏦

Chi ha più conti in banche diverse

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

📊

Chi tiene i conti seriamente

Se usi Excel per le spese, Spendif.ai può sostituire quella routine: carichi i file una sola volta, Spendif.ai 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, suite di test completa. Un punto di partenza per sperimentare o costruire integrazioni personalizzate.


Tutto quello che serve, niente di più


Import multi-banca CSV e XLSX da qualsiasi banca italiana (e non solo)
Riconoscimento automatico del 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
Grafici interattivi 7 grafici: andamento mensile, bilancio cumulato, torta delle categorie, primi 10 commercianti
Contesti di vita Segmenta le spese per Lavoro / Vacanza / Quotidianità
Lista di controllo Tabella pivot mese × conto: vedi quali mesi non hai ancora importato
Esportazione HTML standalone (con grafici), CSV, XLSX
LLM configurabile Ollama, OpenAI, Claude, Groq, Gemini, LM Studio, qualsiasi API compatibile
Sanitizzazione PII Protezione automatica IBAN / PAN / codice fiscale / nome prima di chiamate remote

Un comando, l'app è pronta

App desktop nativa con AI locale inclusa. Niente Docker, niente terminale sempre aperto.

📥 Scarica l'installer (DMG · MSIX · .deb · .rpm)
Guida passo-passo con screenshot → installazione e primo avvio

— oppure, da terminale: —

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

Lo script rileva l'hardware, scarica il modello AI ottimale per la tua RAM (1–7 GB) e configura tutto — zero interventi manuali.
L'app appare in Launchpad / Start Menu / file manager, pronta all'uso.

🐳 Preferisci Docker?

Basta Docker Desktop. Container ufficiale da GitHub Container Registry, browser su 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

🆘 Serve aiuto? Apri un'issue su GitHub — bug, domande, richieste di funzionalità.
Ti piace Spendif.ai? Lascia una stella — ci aiuta ad arrivare nei repository ufficiali (Homebrew Core, winget).


Tecnologie mature, nessuna dipendenza esotica

Nessun framework LLM (niente 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 gestore pacchetti
Ollama AI locale
chardet rilevamento codifica
openpyxl parsing Excel

Architettura modulare, suite di test completa

File CSV/XLSX Pre-processing (elimina righe sparse, scarta 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, abbinamento simbolico) Pulizia descrizioni (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 compatibile OpenAI.

🏦 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 # centinaia di test, zero dipendenze esterne
$ uv run pytest tests/ --cov=core # coverage del layer di logica di business

Cosa sta arrivando



I contributi sono benvenuti

Le aree dove il contributo è più utile:

🏦 Nuovi formati bancari

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

🧪 Test UI

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

🌍 Internazionalizzazione

La UI è già internazionalizzata in cinque lingue (IT, EN, FR, DE, ES). C'è margine per aggiungerne altre.

⚡ Performance

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


Vai su GitHub