Open source · Offline-first · Sans abonnement

Votre registre bancaire unifié,
sur votre ordinateur

Importez les fichiers de toutes vos banques. Spendify les fusionne, élimine les doubles comptages, classifie chaque transaction — et vos données ne quittent jamais votre disque.

▶ Installer maintenant View on GitHub

Python · Streamlit · SQLite · Ollama · aucun compte requis

🔒 Données uniquement sur votre ordinateur
🔁 Import idempotent SHA-256
🏦 Multi-banque, multi-format
🤖 IA locale ou cloud avec rédaction PII
🧪 199 tests, zéro dépendance externe

Trois banques, trois fichiers, un bazar

Chaque mois : télécharger, ouvrir Excel, coller, corriger les signes, trouver les doublons. Et à chaque fois quelque chose ne colle pas.

😩 La routine mensuelle que tout le monde déteste

Trois fichiers de mouvements de trois portails bancaires différents, formats CSV incompatibles, dates dans des formats différents, montants avec des signes aléatoires. Les fusionner à la main prend des heures et produit toujours des erreurs.

🔴 Le problème des problèmes : le double comptage

L'achat au supermarché apparaît sur le relevé de carte de crédit et sur le compte courant comme un prélèvement mensuel agrégé. En additionnant tout, vos dépenses semblent le double de ce qu'elles sont réellement. Aucun outil courant ne résout cela automatiquement.

🔄 Les virements internes qui faussent votre bilan

Un virement vers un compte d'épargne n'est pas une dépense. Mais si vous importez les deux comptes, la même transaction apparaît deux fois — comme sortie du compte courant et comme entrée sur le compte d'épargne.

📋 La catégorisation qui ne finit jamais

Classer 300 transactions par mois à la main est un travail à part entière. Les applications cloud le font, mais elles envoient vos données bancaires sur leurs serveurs et vous facturent un abonnement mensuel.


Trois étapes, pas de magie noire

Pas d'intégrations bancaires, pas de compte, pas de configuration par fichier.

Téléchargez les fichiers de votre banque

Exportez les fichiers de mouvements en CSV ou XLSX depuis le portail de votre banque. Fonctionne avec n'importe quelle banque — Spendify détecte automatiquement le format sans configuration manuelle.

Glissez-les dans Spendify et cliquez sur Traiter

Sélectionnez tous les fichiers en une fois, même de banques différentes, même d'années différentes. Spendify détecte le type de document, corrige les signes, élimine les doubles comptages entre carte et compte, et classifie chaque transaction.

Voyez où va votre argent

Le registre unifié montre tout au même endroit : graphiques, filtres, export, et la certitude que chaque euro est compté exactement une fois.


Des algorithmes qui résolvent de vrais problèmes

Ce n'est pas une application de budget générique. Elle est conçue autour des problèmes spécifiques des personnes ayant plusieurs comptes bancaires.

RF-03

Rapprochement carte de crédit–compte courant

Quand la carte de crédit débite le montant mensuel du compte courant, Spendify reconnaît la relation et supprime le double comptage automatiquement.

Fenêtre temporelle ±45 jours · 3 phases de correspondance : fenêtre glissante → somme de sous-ensembles pour montants fractionnés → rapprochement partiel

RF-04

Détection des virements internes

Un virement d'un compte courant vers un compte d'épargne n'est ni une dépense ni un revenu : c'est un virement interne. Spendify le reconnaît en comparant montants, dates et noms de titulaires dans les descriptions — même si les deux fichiers ont été importés à des moments différents.

Dedup

Déduplication idempotente

Chaque transaction a un identifiant unique calculé à partir de son contenu (SHA-256). Si vous importez le même fichier deux fois, rien ne se passe. Vous pouvez réimporter tout votre historique de transactions sans crainte de doublons.

Categories

Classification hybride en cascade

La catégorisation utilise quatre niveaux en séquence :

  • 1Vos règles — "CONAD" → Alimentation (appliquées rétroactivement)
  • 2Regex statiques — motifs prédéfinis pour les catégories courantes
  • 3LLM — pour tout le reste, IA locale ou cloud
  • 4Fallback — "À revoir" si tout le reste échoue

Vos données restent les vôtres. Vraiment.

Ce n'est pas juste un slogan. C'est l'architecture.

🏠

Offline-first par défaut

Spendify utilise Ollama en local par défaut : un moteur d'IA qui tourne sur votre ordinateur, sans connexion internet. Vos fichiers de mouvements ne quittent jamais votre disque.

🛡️

Rédaction automatique des PII

Si vous utilisez OpenAI ou Claude, Spendify supprime automatiquement toutes les données identifiantes avant chaque appel distant :

IBAN → <ACCOUNT_ID> PAN → <CARD_ID> Tax ID → <FISCAL_ID> Nom → alias fictif

Si la vérification échoue, l'appel est bloqué — pas dégradé silencieusement.

💾

Base de données locale portable

Les données sont stockées dans un fichier SQLite sur votre ordinateur. Vous pouvez le copier, le déplacer, le sauvegarder comme n'importe quel autre fichier. Pas de cloud obligatoire, pas de compte, pas d'abonnement.


Pas pour tout le monde. Pour ceux qui veulent un vrai contrôle.

Quatre profils qui trouvent dans Spendify quelque chose que les alternatives n'offrent pas.

🏦

Personnes avec des comptes dans plusieurs banques

Compte courant + carte de crédit + compte d'épargne + compte-titres ? Spendify les unifie tous dans un seul registre sans rien faire manuellement.

📊

Personnes qui suivent sérieusement leurs finances

Si vous utilisez Excel pour vos dépenses, Spendify peut remplacer cette routine : vous importez les fichiers une fois, Spendify unifie et classifie, vous ne vérifiez que les exceptions.

🔐

Personnes qui ne font pas confiance au cloud

Pas de backend distant obligatoire, pas de compte, pas d'inscription. Vos données bancaires restent là où elles doivent être : sur votre ordinateur.

👨‍💻

Développeurs

Projet Python open source avec architecture modulaire, pipeline LLM sur données structurées, suite de tests complète. Un point de départ pour expérimenter ou construire des intégrations personnalisées.


Tout ce dont vous avez besoin, rien de plus


Import multi-banque CSV et XLSX de n'importe quelle banque
Détection automatique du format Aucune configuration manuelle pour chaque type de fichier
Registre unifié Toutes les transactions par ordre chronologique, filtrables par date / compte / catégorie / contexte
Classification automatique 15 catégories de dépenses + 7 catégories de revenus avec sous-catégories
Taxonomie personnalisable Ajouter / modifier des catégories sans redémarrer l'application
Règles déterministes Règles "ESSELUNGA → Alimentation" appliquées rétroactivement
Analyses interactives 7 graphiques : tendance mensuelle, solde cumulé, camembert par catégorie, top 10 commerçants
Contextes de vie Segmenter les dépenses par Travail / Vacances / Vie quotidienne
Liste de contrôle Tableau croisé mois × compte : voyez quels mois vous n'avez pas encore importés
Export HTML autonome (avec graphiques), CSV, XLSX
LLM configurable Ollama, OpenAI, Claude, Groq, Gemini, LM Studio, any compatible API
Nettoyage des PII Protection automatique IBAN / numéro de carte / identifiant fiscal / nom avant les appels distants

Une commande, application prête

Application de bureau native avec IA locale incluse. Pas de Docker, pas de Terminal toujours ouvert.

📥 Télécharger l'installeur (DMG · MSIX · .deb · .rpm)
Guide pas-à-pas avec captures d'écran → installation et premier lancement

— ou, depuis le 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

Le script détecte votre matériel, télécharge le modèle IA optimal pour votre RAM (1–7 Go) et configure tout — zéro intervention.
L'application apparaît dans Launchpad / Menu Démarrer / explorateur de fichiers, prête à l'emploi.

🐳 Vous préférez Docker ?

Seul Docker Desktop est requis. Conteneur officiel depuis GitHub Container Registry, navigateur à 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

🆘 Besoin d'aide ? Ouvrez une issue sur GitHub — bugs, questions, demandes de fonctionnalités.
Vous aimez Spendif.ai ? Mettez-nous une étoile — cela nous aide à atteindre les registres officiels (Homebrew Core, winget).


Technologies matures, aucune dépendance exotique

Pas de framework LLM (pas de LangChain) — les backends IA utilisent directement les SDK officiels.

Python 3.13 + pandas
Streamlit interface web
SQLite + SQLAlchemy
Pydantic v2 validation de schéma
Plotly graphiques interactifs
uv gestionnaire de paquets
Ollama IA locale
chardet détection d'encodage
openpyxl analyse Excel

Architecture modulaire, suite de tests complète

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)

🔌 Nouveaux backends LLM

Implémentez LLMBackend (3 méthodes) et enregistrez-le dans BackendFactory. Fonctionne avec toute API compatible OpenAI.

🏦 Nouveaux formats bancaires

Le Flow 2 les reconnaît automatiquement via LLM sans modification de code. Le schéma est sauvegardé et réutilisé lors des imports suivants.

🏷️ Nouvelles catégories

Depuis la page Taxonomie, sans toucher au code. La taxonomie est entièrement configurable depuis l'interface.

🚀 REST API

Le pipeline process_file() est complètement séparé de l'UI — il peut être exposé via FastAPI sans modification.


bash — test suite
$ uv run pytest tests/ -v # 199 tests, zéro dépendance externe
$ uv run pytest tests/ --cov=core # coverage of business logic layer

Ce qui arrive



Les contributions sont bienvenues

Domaines où les contributions sont les plus utiles :

🏦 Nouveaux formats bancaires

Si votre banque n'est pas reconnue automatiquement, ouvrez une issue avec un échantillon CSV anonymisé.

🧪 Tests UI

La suite couvre la couche logique métier mais pas encore l'interface Streamlit. Il y a de la place pour contribuer.

🌍 Internationalisation

L'architecture supporte déjà plusieurs langues pour les descriptions. L'UI est en italien — il y a de la place pour ajouter d'autres langues.

⚡ Performance

La catégorisation par lots est le goulot d'étranglement avec un LLM local. Il y a de la place pour la parallélisation.


Go to GitHub