Sho Builds It
← 制作事例の一覧へ
制作事例経費記録の自動化

メールとSMSから経費を記録する自動化

形式の異なる支払い通知を、1つのGoogle Sheetsにまとめて記録する個人用の自動化です。すべてをAIで処理するのではなく、通知の形式に合わせてAIとルール処理を使い分けています。

業務上の課題

どんな問題があったか

支払い通知は、メールやSMSなど異なる経路で届き、書式もそろっていません。手作業で記録すると入力の手間がかかり、カテゴリの付け方もばらつきます。また、通知の再配信や処理のやり直しによって、同じ支払いを二重に記録する可能性もあります。

作った仕組み

どう対応したか

Wiseのメールと銀行SMSで受付・解析の方法を分け、抽出した支払い情報を1つのGoogle Sheetsに記録します。書式が一定でないWiseメールはAIで必要な項目を抽出し、書式が決まっている銀行SMSはMakeの文字列処理で解析します。銀行SMSの内容はOpenAIには送りません。

処理の流れ

入力から完了までの流れ

各工程で何を受け取り、何を処理し、どこで人が判断するかを示します。

  1. 01・受信

    メールまたはSMSを受け取る

    Wiseの支払い通知はGmailから取得します。銀行SMSは、macOSのMessagesを読み取り専用で確認し、対象の通知だけをMakeへ送ります。

  2. 02・重複確認

    同じ支払いの重複を確認する

    支払い通知ごとの識別情報を使って、すでに処理した通知かどうかを確認します。処理済みの場合は、Google Sheetsへ重複して記録せずに停止します。

  3. 03・解析

    通知の形式に合わせて解析する

    書式が一定でないWiseメールはOpenAI Structured Outputsで必要な項目を抽出し、書式が決まっている銀行SMSはMakeの文字列処理で解析します。

  4. 04・記録

    支払い情報をGoogle Sheetsへ記録する

    店舗名や金額など、記録に必要な情報がそろった場合だけTransactionsシートへ追加します。必要な情報が不足している場合は、推測せずに処理を止めます。

  5. 05・カテゴリ

    必要なときだけLINEでカテゴリを選ぶ

    過去に利用した店舗には以前のカテゴリを自動で適用し、初めての店舗だけLINEでカテゴリを選びます。

設計上の判断

この構成にした理由

必要な処理にだけAIを使う

書式が決まっている銀行SMSはルールで処理し、OpenAIには送りません。書式が一定でないWiseメールだけ、AIを使って必要な項目を抽出します。

必要な情報がなければ記録しない

店舗名や金額など、記録に必要な情報を取得できない場合はGoogle Sheetsへ追加せず、確認が必要なことを通知します。不足している情報をAIで推測して補うことはしません。

重複確認とカテゴリの再利用を分ける

支払い通知ごとの識別情報は、同じ支払いを重複して記録しないために使います。一方、店舗の履歴は、過去に選んだカテゴリを次回以降も利用するために使います。

Messagesのデータは読み取り専用で扱う

銀行SMSを取得するPythonプログラムは、macOSのMessagesデータベースを読み取り専用で確認します。Messagesの内容は変更せず、処理済みの位置だけをMac内に保存します。

検証内容

検証した内容

  • Wiseのテストデータを使い、新規店舗の支払い情報がGoogle Sheetsへ記録され、LINEでカテゴリ選択が必要な状態になることを確認しました。
  • LINEでカテゴリを選択すると、対象の支払いだけにカテゴリが反映されることを確認しました。
MakeOpenAI Structured OutputsGoogle SheetsGmailLINEPythonmacOS Messages

検証資料

実装した仕組みを画面と構成図で紹介します。

WiseメールのAI解析経路と銀行SMSのルール解析経路を分け、重複確認とカテゴリ処理へ合流する経費記録フロー

処理フロー:入力別の解析から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を使った記録とカテゴリ管理