1.毎晩21時、60社の仕訳が自動で処理される
これが一番インパクトのある仕組みです。
毎晩21時になると、Claude Codeのスケジュールタスクが自動起動して、freeeに登録された未処理の取引明細を全社分処理します。
処理の流れはこうです。
Phase 1: 未処理明細の取得
freee API から各事業所の口座明細を取得します。ステータスが「未処理」かつ「出金」のものだけを抽出。さらに進行中の会計年度内のものだけに絞り込みます。
Phase 2: 勘定科目の自動判定(2段階)
ここが一番重要なところです。勘定科目の判定を、2段階の仕組みでやっています。
<第1段階>
キーワード辞書マッチング 14個の勘定科目カテゴリに対して、それぞれ100個以上のキーワードを登録しています。
例:
・「Suica」「JR」「タクシー」→ 旅費交通費
・「Amazon」「ヨドバシ」「ビックカメラ」→ 消耗品費
・「AWS」「Google Cloud」「ChatGPT」→ 通信費
・飲食店名で1万円以下 → 会議費
・飲食店名で1万円超 → 交際費
・取引の摘要欄を全角→半角、大文字→小文字に正規化してから照合します。日本語・英語・カナ・半角カナ、全部対応。
さらに、特殊パターンも組み込んでいます。
・「振込+士業名」→ 支払報酬料(自動で取引先名も抽出)
・「振込+カタカナ人名」→ 外注費(発生日を前月末に自動変更)
・ただし従業員への振込は給与なのでスキップ(freee人事労務APIから従業員名を取得して除外)
<第2段階>
Claude APIフォールバック キーワードで判定できなかった取引だけ、Claude APIに問い合わせます。使える14個の勘定科目を提示して、JSON形式で回答させる。信頼度がhigh/mediumなら登録、lowならスキップして僕に確認が回る。
この2段階構成がミソです。キーワードマッチで処理できるものはAPIを呼ばないので速い。Claude APIは「新しい取引先」や「判断が微妙なもの」だけに使う。
Phase 3: 重複チェック&登録
登録前に、既存の取引と日付・金額・摘要の先頭40文字で重複チェックします。二重登録を防ぐ仕組みです。ATM出金は口座振替として別処理。
問題なければ freee API で取引登録。取引先が新規ならAPIで取引先マスタも自動作成します。
Phase 4: セキュリティ(ここが重要)
60社のデータを扱うので、事業所間のデータ分離は徹底しています。
・各事業所の処理は company_id 単位で完全分離
・取引の詳細(摘要・金額)はログファイルにのみ記録し、画面には件数とステータスだけ表示
・ログファイルも事業所ごとに独立
A社の仕訳処理中にB社のデータが混ざる、なんてことは絶対に起きない設計にしています。これ、顧問先を預かる以上は絶対に妥協できないところです。
処理時間
処理時間は、全60社を直列処理して30〜50分。1社あたり20〜40秒です。
以前はブラウザを自動操作する方式でやっていて、5時間かかっていました。それをClaude Codeに「APIを直接叩く方式に書き換えて」とお願いして、今の形になりました。
5時間 → 50分。しかも毎晩勝手に動く。朝起きたら前日の経理が終わっている。これだけで、僕の仕事の景色が一変しました。


