⚠️ 内部資料 / 社外配布禁止
CHAPTER 04 / WORKFLOWS / UPAN A10 KEIRI

うーぱん × A10 社内経理パイプライン

証憑投入から Freee 自動登録までの全自動化(2026-05-27 完成)
担当: うーぱん 🐸(社内経理 A10) / CEO 直轄 / 白石監修(税務判断時)

役割

株式会社コネクトエイトの社内経理(A10)における、証憑(領収書・請求書・利用明細)の OCR・分類・命名・スプシ記録・Freee 登録までを自動化する。クライアント経理(A09 ガッチャン担当)には一切触らない厳格分離。

北極星(North Star):

「Freee の全取引 ↔ 証憑の 1:1 紐付け維持」。期末・税務調査で『この取引の証憑は?』に即答できる状態を常にキープ。

入口 3 経路

経路用途適性
Telegram /finance upload外出先・スマホ撮影で即投入レシート紙系
Discord /finance(#connect8_finance)PC 前・複数同時投入、ボタン UIPDF・スクショ
Drive 直 _INBOX_会社支払 / _INBOX_代表立替メール添付 PDF を一括電子請求書

標準フロー(投入から Freee 登録まで)

  1. 投入: スタッフ/CEO が 3 経路のいずれかに証憑を投入
  2. OCR: Claude Sonnet 4.6 Vision で日付・金額・店舗・税額・通貨を抽出(複数レシート 1 画像対応)
  3. マスタ照合: スプシ「定期取引手動調整」と部分一致 + 別名照合で正規名を取得
  4. 振分: 10 フォルダ(8 軸 + 通信費 + 公租公課)の該当箇所に Drive 移動
  5. リネーム: YYYYMMDD_¥金額_店舗_(会社|立替)_(電子領|電子請|紙領|紙請).ext 規約に統一
  6. 重複検知: スプシ既存行 + Freee 既登録の二重ガード
  7. スプシ追記: 証憑管理簿 23 列に 1 行追記(外貨対応、発生日降順 sort)
  8. Freee 登録:
    • L2 代表立替: 取引下書き作成(決済済み・役員資金口座)+ メモタグ「社長立替え」+ 部門「AI下書き要確認」+ 画像同時紐付け
    • L3 会社支払: ファイルボックスへ画像 POST のみ(既存取引への紐付けはスタッフ手動)
  9. レビュー: Telegram/Discord で /done 後にリネーム後ファイル名を返却。CEO が項目選択 + テキスト入力で修正可能
  10. スタッフ承認: Freee で部門「AI下書き要確認」フィルタ → 内容確認 → 部門外す = 承認完了

10 フォルダ構成(証憑/ 直下、年度階層なし蓄積運用)

#フォルダ名用途
01会社支払_電子領収書クレカ・銀行決済の電子領収書 PDF
02会社支払_電子請求書同 電子請求書(Cloudflare 等)
03会社支払_紙領収書会社カード決済の紙レシート
04会社支払_紙請求書会社宛 紙請求書
05代表立替_電子領収書CEO 立替の電子領収書
06代表立替_電子請求書CEO 立替の電子請求書
07代表立替_紙領収書CEO 立替の紙レシート
08代表立替_紙請求書CEO 立替の紙請求書
09通信費(月次)定期サブスク 9 種(ワイモバイル/楽天モバイル/IIJ/SoftBank AIR/LINE/Google Workspace/OPEN AI/Anthropic/ZOOM)
10公租公課(税金・社会保険)健康保険・厚生年金・源泉所得税・法人税等

リネーム規約と特殊ルール 8 種

標準(01〜08)

YYYYMMDD_¥金額_店舗_(会社|立替)_(電子領|電子請|紙領|紙請).ext
例: 20260518_¥990_DAISO_会社_紙領.jpg

09 通信費(月次)

YYYYMMDD_¥金額_店舗_(会社|立替)_通信費(月次).ext

10 公租公課

領収日_¥金額_書類名(送付分)_公租公課.ext
例: 20260331_¥42855_保険料納入告知額・領収済額通知書(令和8年4月送付分)_公租公課.pdf

外貨対応

YYYYMMDD_$62.69_ZOOM_会社_通信費(月次).pdf(USD/EUR/GBP 等通貨記号)

発生日 特殊ルール 8 種

サービス発生日ロジック
ソフトバンク AIRご利用月の翌月 9 日
楽天モバイルご利用月の翌月 11 日
Google Workspace請求書発行日 + 1 日
YOUTUBE(NOBU塾)請求書発行日 + 1 日
LINE公式アカウント取引年月の月初(1 日)
IIJ利用月の月末日
佐藤先生 / 田邊先生同月最終銀行営業日(土日祝繰り上げ)
辻倉様 給与同月 15 日(土日祝前営業日)
その他OCR の date そのまま

マスタ「定期取引手動調整」シート(CEO 運用)

定期サブスク・固定費の正解値を CEO 手動メンテ。OCR ブレを吸収し、リネーム正規名・勘定科目・支払い方法を自動確定。

項目
A支払い先(正規名)LINE公式アカウント
B勘定科目通信費
C支払い金額5500
D証憑タイトルお取引の詳細
Eサイクル月次
F支払い方法アメリカン・エキスプレス - ビジネス・カード(API)1
O証憑形態通信費(月次)/ 月末銀行営業日決済 / 給与 15 日 / クレカ明細 / 公租公課
P別名(カンマ区切り)GMO INTERNET, GMO ペパボ, お名前ドットコム

Discord 版 /finance UX 比較

項目TelegramDiscord
支払区分・証憑種別・勘定科目選択番号テキスト入力(1/2 等)ボタン UI(クリックのみ)
「誰と」備考入力テキスト返信Modal ダイアログ
画像添付連続送信Discord メッセージ添付(複数可)
レビュー結果テキスト返信Embed + 修正/完了ボタン
修正番号テキスト番号ボタン → 項目ボタン → Modal
適性外出先スマホPC 前・複数枚同時

レビュー機能(Telegram / Discord 共通)

/done 後に Bot がリネーム後ファイル名を返却。CEO が間違いに気付けば 項目選択 → 値入力で即修正。

修正項目 6 種: 店舗 / 金額 / 日付 / 備考 / 勘定科目 / 支払区分
パーサー柔軟性: 日付は 2026/12/01 / 20261201 全対応、金額は ¥15,000 / ¥1,5000(typo 補正)/ 全角数字対応

Freee 登録仕様

L2 代表立替(うーぱんが新規取引登録)

  • status: 決済済み(未決済山積み問題を回避)
  • 支払口座: 役員資金(type=private_account_item, id=232703331)→ BS 役員借入金に自動反映
  • 勘定科目: マスタ照合 or OCR 推定(交際費は CEO 入力で確定)
  • メモタグ: 社長立替え(業務分類、id=9239965)
  • 部門: AI下書き要確認(id=3989686、スタッフ承認フィルタ用)
  • 証憑: POST /api/1/receipts → POST /api/1/deals で同時紐付け
  • 備考: OCR 内容 + 交際費は CEO 入力「誰と」を転記

L3 会社支払(既存自動連携取引)

  • ファイルボックスに画像 POST のみ
  • 既存取引との紐付けはスタッフが Freee UI で手動実施

会議費自動判定

交際費選択時、OCR で人数取得 + 金額 ÷ 人数 ≤ 5,000 円なら会議費に自動切替(税法上の合理的区分)

重複検知(dedup 二段ガード・2026-05-28 強化)

目的: CEO の /upload 投入済み証憑をスタッフが再投入しても二重登録されない。特に立替は Freee 自動登録があるため二重計上は致命的。

段 1: SHA256 完全一致(高速・確実)

  • ファイルバイト全体の SHA256 を計算し dedup_index.json と照合
  • 一致 → SKIP 確定#connect8_finance に通知、ファイルを _重複候補/ に退避
  • Freee 紐付け済み(freee_attached: true)なら「絶対に処理しない」と明示通知

段 2: OCR 3項照合(再スキャン等の補完)

  • 段 1 miss 後 → OCR 実行 → (amount_total, date, store_name) 3 項を dedup_index.json と照合
  • 一致 → 「重複候補」として #connect8_finance に CEO 確認ボタン付き通知
    • [✅ 同一→SKIP]: ファイルを _重複候補/ に退避、既存スプシ行と紐付け
    • [🆕 別取引→処理続行]: そのまま通常パイプライン続行
  • 24 時間タイムアウト → デフォルト「別取引→処理続行」(保守的、見落とし防止)

dedup_index.json(新設)

処理済み証憑の SHA256 + OCR 3項を蓄積する JSON ファイル。processed_ids.json(file_id ベース)と並列運用。週次で _backups/ にバックアップ。

{
  "schema_version": "1.0",
  "entries": [
    {
      "sha256": "abc123...",
      "amount_total": 43110,
      "date": "2026-05-21",
      "store_name": "日本年金機構",
      "drive_file_id": "1TDn5-...",
      "sheet_row": 9,
      "processed_at": "2026-05-27T19:47:00+09:00",
      "freee_attached": false,
      "source": "pipeline"
    }
  ]
}

既存ガード(維持)

  • スプシ既存行との日付 + 金額 + 店舗(部分一致)照合 → 完全一致は _要確認/ 退避
  • Freee 既登録 deal との日付 + 金額照合 → 重複なら POST スキップ

自動却下はしない(誤検知防止)、必ず人間判断を挟む。

スタッフ向け簡易フロー(Drive ドロップのみ)

スタッフへの説明: 証憑は指定の Drive フォルダにドロップするだけ。カテゴリ(交際費か経費か)の判定はうーぱんが自動でやります。支払区分(立替か会社支払か)だけフォルダで分けてください。
操作フォルダDrive URL
立替(CEO 立替分) _INBOX_代表立替/ 開く
会社支払(会社カード・銀行振込) _INBOX_会社支払/ 開く
  1. 証憑(レシート画像 / PDF)を該当フォルダにドロップ
  2. 5 分以内にうーぱんが自動検知・OCR・振分・スプシ記録
  3. 公租公課(健保・年金・税金)は自動的に証憑_10 に振分
  4. ZOOM / Anthropic 等通信費は自動的に証憑_09 に振分
  5. それ以外は支払区分に応じて証憑_01〜08 に振分
  6. 処理後、ファイルは _processed/<YYYY-MM>/ にアーカイブ
重複防止: 同じ証憑を 2 回ドロップした場合、SHA256 ガードで自動検出し SKIP します。CEO に Discord 通知が届くので操作不要です。

自動処理の LaunchAgent

com.connect8.upan.poller LaunchAgent が 5 分毎に両 INBOX を監視。Mac mini で常時稼働。

インストール:
  cp com.connect8.upan.poller.plist ~/Library/LaunchAgents/
  launchctl load ~/Library/LaunchAgents/com.connect8.upan.poller.plist

Phase D.1 定期取引パターン分析

Freee 過去 3 年分(2,756 件)から定期支出を自動抽出。スプシ「定期取引パターン」シートに 28 件の月次/四半期/年次パターンを可視化。漏れ検知(来てるはずの請求が未着)も自動。

法的整合性

  • 電帳法: 電子取引データは Drive + Freee の二重保管、紙はハイブリッド(紙原本 + 電子バックアップ)
  • インボイス制度: 登録番号(T で始まる 13 桁)含む証憑を優先(楽天モバイル「ご利用料金のお知らせ」等)
  • 税務判断: AI はしない(うーぱんは候補提示まで)。確定は税理士 / CEO

Bundle モード(2026-05-27 追加)

複数ファイルが同一決済(例: 自動車税 表紙+本紙、保険料 複数月分)の場合、Drive 上でフォルダ単位で証憑を保管し、スプシは 1 行に集約する機能。

/done の 2 段階フロー

  1. アップロード 2 件以上 → /done 押下時に確認画面を表示
  2. [bundle] 選択 → 1 フォルダ 1 行で処理
  3. [separate] 選択 → 従来の個別処理(N 行)
  4. 1 件のみ → 確認スキップ、従来動作と完全互換

合議制 OCR

フィールド集約ルール
金額全 OCR の最大値(合計請求が含まれる想定)
日付全 OCR の最古値(決済発生日)
発行者最頻出 store_name(同率なら 1 枚目優先)
通貨全 OCR で一致確認、ズレたら警告 + JPY フォールバック
raw_text全ファイルを連結(公租公課/通信費キーワード判定に使用)
信頼スコア全 OCR の平均

Drive フォルダ構造

証憑/証憑_01_会社支払_電子領収書/
  └── 20260521_¥43110_日本年金機構_会社_公租公課/     ← bundle サブフォルダ
        ├── 20260521_¥43110_日本年金機構_会社_公租公課_#1.pdf
        ├── 20260521_¥43110_日本年金機構_会社_公租公課_#2.jpg
        └── 20260521_¥43110_日本年金機構_会社_公租公課_#3.pdf
  • 同名フォルダが存在する場合: _v2, _v3 自動付番
  • スプシ T 列: bundle_name/(末尾 / でフォルダを表現)
  • スプシ U 列: https://drive.google.com/drive/folders/<id>
  • K 列備考: bundle 3件: 表紙#1, 本紙#2, 振込控#3

特殊カテゴリの自動判定

bundle でも単一ファイルと同じ優先順位で特殊カテゴリを判定(raw_text は全ファイル連結で判定):

  1. 公租公課(KOSOKOKA_KEYWORDS 一致)→ 証憑_10、bundle 名は公租公課フォーマット
  2. 通信費(月次)(TSUSHINHI_MASTER_NAMES 一致、Anthropic/ZOOM 等)→ 証憑_09
  3. YOUTUBE(NOBU塾)(store_name 完全一致)→ 発生日 = 請求書発行日 + 1 日

Telegram 版

/done 後に [1] bundle / [2] separate のテキスト選択(ボタン UI 非対応のため番号入力)。ステート SELECT_BUNDLE = 11 を新設。

関連リソース

  • 立替管理表スプシ: A10_立替管理表_2026年度
  • Drive ルート: 1RbqJDW00aQGi9eqhaTdG_K0girAVHdkl(経理専用)
  • Freee 事業所: 株式会社コネクトエイト(事業所番号 905-960-7206)
  • コード: ~/claude/2_Areas/A10_corporate_finance/phase_b_reimbursement/