メールとSMSから経費を記録する自動化
形式の異なる支払い通知を、1つのGoogle Sheetsにまとめて記録する個人用の自動化です。すべてをAIで処理するのではなく、通知の形式に合わせてAIとルール処理を使い分けています。
業務上の課題
どんな問題があったか
支払い通知は、メールやSMSなど異なる経路で届き、書式もそろっていません。手作業で記録すると入力の手間がかかり、カテゴリの付け方もばらつきます。また、通知の再配信や処理のやり直しによって、同じ支払いを二重に記録する可能性もあります。
作った仕組み
どう対応したか
Wiseのメールと銀行SMSで受付・解析の方法を分け、抽出した支払い情報を1つのGoogle Sheetsに記録します。書式が一定でないWiseメールはAIで必要な項目を抽出し、書式が決まっている銀行SMSはMakeの文字列処理で解析します。銀行SMSの内容はOpenAIには送りません。
処理の流れ
入力から完了までの流れ
各工程で何を受け取り、何を処理し、どこで人が判断するかを示します。
01・受信
メールまたはSMSを受け取る
Wiseの支払い通知はGmailから取得します。銀行SMSは、macOSのMessagesを読み取り専用で確認し、対象の通知だけをMakeへ送ります。
02・重複確認
同じ支払いの重複を確認する
支払い通知ごとの識別情報を使って、すでに処理した通知かどうかを確認します。処理済みの場合は、Google Sheetsへ重複して記録せずに停止します。
03・解析
通知の形式に合わせて解析する
書式が一定でないWiseメールはOpenAI Structured Outputsで必要な項目を抽出し、書式が決まっている銀行SMSはMakeの文字列処理で解析します。
04・記録
支払い情報をGoogle Sheetsへ記録する
店舗名や金額など、記録に必要な情報がそろった場合だけTransactionsシートへ追加します。必要な情報が不足している場合は、推測せずに処理を止めます。
05・カテゴリ
必要なときだけLINEでカテゴリを選ぶ
過去に利用した店舗には以前のカテゴリを自動で適用し、初めての店舗だけLINEでカテゴリを選びます。
設計上の判断
この構成にした理由
必要な処理にだけAIを使う
書式が決まっている銀行SMSはルールで処理し、OpenAIには送りません。書式が一定でないWiseメールだけ、AIを使って必要な項目を抽出します。
必要な情報がなければ記録しない
店舗名や金額など、記録に必要な情報を取得できない場合はGoogle Sheetsへ追加せず、確認が必要なことを通知します。不足している情報をAIで推測して補うことはしません。
重複確認とカテゴリの再利用を分ける
支払い通知ごとの識別情報は、同じ支払いを重複して記録しないために使います。一方、店舗の履歴は、過去に選んだカテゴリを次回以降も利用するために使います。
Messagesのデータは読み取り専用で扱う
銀行SMSを取得するPythonプログラムは、macOSのMessagesデータベースを読み取り専用で確認します。Messagesの内容は変更せず、処理済みの位置だけをMac内に保存します。
検証内容
検証した内容
- Wiseのテストデータを使い、新規店舗の支払い情報がGoogle Sheetsへ記録され、LINEでカテゴリ選択が必要な状態になることを確認しました。
- LINEでカテゴリを選択すると、対象の支払いだけにカテゴリが反映されることを確認しました。
検証資料
実装した仕組みを画面と構成図で紹介します。
処理フロー:入力別の解析から1件の経費記録へ
WiseメールだけをAIで解析し、固定書式の銀行SMSはルールで処理してOpenAIには送りません。どちらも重複を確認し、1件の支払いを1カテゴリで記録し、新規店舗の場合だけ人がカテゴリを選びます。
結果
検証結果
Wiseのテストデータを使い、新規店舗の支払い情報をGoogle Sheetsへ記録し、その後LINEで選択したカテゴリを反映する一連の流れを検証しました。必要な箇所だけ人が入力し、それ以外を自動で処理する流れを確認しています。
制約・未検証事項
今回の検証範囲
- この事例は個人用に作った自動化で、企業向けの製品として検証したものではありません。
- 重複確認は既存データを確認してから記録する方式のため、複数の処理が同時に実行された場合の重複を完全には防げません。
- 銀行SMSは1つの銀行の固定書式に対応しています。また、GELからJPYへの換算には固定レートを使用しています。
- 1件の支払いは1つのカテゴリとして記録する設計で、1回の支払いを複数カテゴリに分ける処理には対応していません。
- Make、Google Sheets、OpenAI、LINEなどの外部サービスに支払い関連データが残る可能性があるため、実運用ではデータの保存方針を検討する必要があります。
この事例で分かること
担当した設計・実装の範囲
形式が異なる経費データの統一
ルール処理とAIの使い分け
重複を考慮した記録処理
必要な箇所だけ人に入力を求める設計
Google Sheets・LINEを使った記録とカテゴリ管理