オープンソース · オフラインファースト · サブスクリプションなし

あなたの統合銀行台帳を、
ご自身のコンピュータで

すべての銀行のファイルをインポートします。Spendifyがそれらを統合し、二重計上を排除し、 すべての取引を分類します — そしてデータがディスクから出ることは決してありません。

▶ 今すぐインストール GitHubで見る

Python · Streamlit · SQLite · Ollama · アカウント登録不要

🔒 データはご自身のコンピュータの中だけ
🔁 SHA-256による冪等なインポート
🏦 複数銀行・複数フォーマット対応
🤖 ローカルまたはクラウドAI、PIIマスキング付き
🧪 199個のテスト、外部依存ゼロ

3つの銀行、3つのファイル、1つの混乱

毎月の作業 — ダウンロード、Excelで開く、貼り付け、符号の修正、重複の探索。 そして毎回どこかが合わない。

😩 誰もが嫌う毎月のルーティン

3つの異なる銀行ポータルから取得した3つの取引ファイル、互換性のないCSVフォーマット、 異なる形式の日付、ばらばらな符号の金額。これらを手作業で統合するのは何時間もかかり、 必ずエラーが発生します。

🔴 すべての問題の根源 — 二重計上

スーパーでの買い物がクレジットカード明細当座預金口座の両方に表示されます。 後者は月次の集計請求として計上されるためです。すべてを合計すると、支出が実際の2倍に見えてしまいます。 一般的なツールではこれを自動的に解決できません。

🔄 残高をゆがめる口座間振替

普通預金から定期預金への振替は支出ではありません。しかし両方の口座をインポートすると、 同じ取引が2回現れてしまいます — 当座預金からの出金として、そして定期預金への入金として。

📋 終わりのないカテゴリ分類

毎月300件の取引を手作業で分類するのは大変な労力です。クラウド型のアプリはそれを行いますが、 あなたの銀行データを自社のサーバーへ送信し、月額料金を請求します。


3ステップ、ブラックボックスなし

銀行とのAPI連携なし、アカウント不要、ファイルごとの設定もありません。

銀行からファイルをダウンロード

銀行のポータルから取引ファイルをCSVまたはXLSX形式でエクスポートします。 どの銀行でも動作します — Spendifyは手動設定なしで自動的にフォーマットを検出します。

Spendifyにドラッグして「処理」をクリック

すべてのファイルを一度に選択できます。異なる銀行のものでも、異なる年のものでも構いません。 Spendifyはドキュメントの種類を識別し、符号を修正し、カードと口座の二重計上を排除し、 すべての取引を分類します。

お金の行き先を確認

統合された台帳がすべてを一箇所に表示します — グラフ、フィルタ、エクスポート。 そして、すべての金額が正確に1回だけカウントされている確かさが得られます。


現実の問題を解くアルゴリズム

これは汎用の家計簿アプリではありません。複数の銀行口座を持つ人々が抱える具体的な課題を中心に設計されています。

RF-03

クレジットカードと当座預金口座の照合

クレジットカードが月次金額を当座預金口座から引き落とす際、 Spendifyはその関係を認識し、二重計上を自動的に取り除きます。

時間枠 ±45日間 · 3段階のマッチング処理: スライディングウィンドウ → 分割金額に対する部分和探索 → 部分照合

RF-04

口座間振替の検出

当座預金から定期預金への振替は、支出でも収入でもなく、内部の資金移動です。 Spendifyは金額、日付、説明欄に含まれる口座名義を比較してこれを認識します — 2つのファイルが別のタイミングでインポートされていても問題ありません。

Dedup

冪等な重複排除

すべての取引は、その内容から計算される一意のID(SHA-256)を持ちます。 同じファイルを2回インポートしても、何も起こりません。 重複を心配することなく、過去のすべての取引履歴を再インポートできます。

Categories

カスケード式のハイブリッド分類

カテゴリ分類は4階層を順番に使用します:

  • 1独自ルール — 「CONAD」 → 食料品 (過去に遡って適用)
  • 2静的な正規表現 — よくあるカテゴリ向けの定義済みパターン
  • 3LLM — 残りすべてに対して、ローカルまたはクラウドのAIが処理
  • 4フォールバック — どれも当てはまらなければ「要レビュー」

あなたのデータはあなたのもの。本気でそう考えています。

これは単なるスローガンではありません。アーキテクチャそのものです。

🏠

標準でオフラインファースト

SpendifyはデフォルトでOllamaをローカル実行します。インターネット接続なしで ご自身のコンピュータ上で動作するAIエンジンです。取引ファイルがディスクから外へ出ることは ありません。

🛡️

PIIの自動マスキング

OpenAIまたはClaudeを使用する場合、Spendifyはリモート呼び出しの前に 個人を特定できるすべての情報を自動的に削除します:

IBAN → <ACCOUNT_ID> PAN → <CARD_ID> 納税者番号 → <FISCAL_ID> 氏名 → 仮名のエイリアス

チェックに失敗した場合は呼び出しがブロックされます — 黙って劣化することはありません。

💾

ポータブルなローカルデータベース

データはご自身のコンピュータ上のSQLiteファイルに保存されます。他のファイルと同様に コピー、移動、バックアップが可能です。必須のクラウドも、アカウントも、サブスクリプションも ありません。


万人向けではありません。本当の制御を求める方のために。

代替手段では得られない価値を、Spendifyに見出す4つのプロフィール。

🏦

複数の銀行に口座を持つ方

当座預金 + クレジットカード + 定期預金 + 証券口座をお使いですか? Spendifyはそれらすべてを1つの台帳に統合します。手作業は一切不要です。

📊

本格的に家計を管理する方

家計の管理にExcelを使っているなら、Spendifyがその習慣に置き換わります。 ファイルを一度インポートすれば、Spendifyが統合・分類し、 あなたは例外だけを確認すればよくなります。

🔐

クラウドを信頼しない方

必須のリモートバックエンドなし、アカウントなし、登録なし。 銀行データはあるべき場所 — ご自身のコンピュータの中 — にとどまります。

👨‍💻

開発者の方

モジュール化されたアーキテクチャ、構造化データに対するLLMパイプライン、 完全なテストスイートを備えたオープンソースのPythonプロジェクトです。 実験やカスタム連携を構築するための出発点として活用できます。


必要なものはすべて、それ以上は何もない


複数銀行のインポート どの銀行のCSVおよびXLSXにも対応
フォーマット自動検出 ファイル種類ごとの手動設定は不要
統合台帳 すべての取引を時系列で表示。日付/口座/カテゴリ/コンテキストでフィルタ可能
自動カテゴリ分類 15の支出カテゴリ + 7の収入カテゴリ、サブカテゴリも対応
カスタマイズ可能な分類体系 アプリを再起動せずにカテゴリを追加・編集可能
決定論的なルール 「ESSELUNGA → 食料品」のようなルールが過去に遡って適用される
インタラクティブな分析 7種類のグラフ: 月次推移、累積残高、カテゴリ円グラフ、加盟店トップ10
ライフコンテキスト 仕事 / 旅行 / 日常生活で支出を分類
チェックリスト 月 × 口座のピボットテーブル: まだインポートしていない月を確認できる
エクスポート スタンドアロンHTML(グラフ付き)、CSV、XLSX
設定可能なLLM Ollama、OpenAI、Claude、Groq、Gemini、LM Studio、その他互換APIに対応
PIIサニタイズ リモート呼び出し前にIBAN / カード番号 / 納税者番号 / 氏名を自動的に保護

1コマンドで、アプリの準備完了

ローカルAI同梱のネイティブデスクトップアプリです。Dockerは不要、ターミナルを開いたままにする必要もありません。

📥 インストーラーをダウンロード (DMG · MSIX · .deb · .rpm)
スクリーンショット付きステップガイド → インストールと初回起動

— または、ターミナルから: —

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

スクリプトはハードウェアを検出し、お使いのRAMに最適なAIモデル(1〜7 GB)をダウンロードしてすべての設定を行います — ユーザーの作業は不要です。
アプリはLaunchpad / スタートメニュー / ファイルマネージャに表示され、すぐに使える状態になります。

🐳 Dockerをご希望ですか?

必要なのはDocker Desktopのみです。GitHub Container Registryからの公式コンテナを利用し、ブラウザで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

🆘 サポートが必要ですか? GitHubでissueを開いてください — バグ、質問、機能リクエストを受け付けています。
Spendif.aiを気に入っていただけましたか? スターをお願いします — 公式パッケージレジストリ(Homebrew Core、winget)への到達を後押しします。


枯れた技術、特殊な依存関係なし

LLMフレームワーク(LangChainなど)は使用せず — AIバックエンドは公式SDKを直接利用しています。

Python 3.13 + pandas
Streamlit Webインターフェース
SQLite + SQLAlchemy
Pydantic v2 スキーマ検証
Plotly インタラクティブなグラフ
uv パッケージマネージャ
Ollama ローカルAI
chardet エンコーディング検出
openpyxl Excelパース

モジュール化されたアーキテクチャと完全なテストスイート

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)

🔌 新しいLLMバックエンド

LLMBackend(3つのメソッド)を実装し、BackendFactoryに登録してください。OpenAI互換のあらゆるAPIで動作します。

🏦 新しい銀行フォーマット

フロー2はコード変更なしでLLMによりそれらを自動的に認識します。スキーマは保存され、以降のインポートで再利用されます。

🏷️ 新しいカテゴリ

分類体系のページから、コードに触れることなく追加できます。分類体系は画面から完全に設定可能です。

🚀 REST API

process_file()パイプラインはUIから完全に分離されており — 変更なしでFastAPIにより公開できます。


bash — テストスイート
$ uv run pytest tests/ -v # 199個のテスト、外部依存ゼロ
$ uv run pytest tests/ --cov=core # ビジネスロジック層のカバレッジ

これから提供予定の機能



コントリビューションを歓迎します

特に役立つ貢献分野:

🏦 新しい銀行フォーマット

あなたの銀行が自動的に認識されない場合は、匿名化されたCSVサンプルを添えてissueを開いてください。

🧪 UIテスト

テストスイートはビジネスロジック層をカバーしていますが、Streamlitインターフェースはまだです。貢献の余地があります。

🌍 国際化

アーキテクチャ自体は説明文の多言語対応をすでにサポートしています。UIはイタリア語であり、他の言語を追加する余地があります。

⚡ パフォーマンス

ローカルLLMを使うとバッチ分類がボトルネックになります。並列化の余地があります。


GitHubへ移動