JIB (ジェーアイビー) 要件定義書

保険代理店向け経営OS — エンジニア向け技術仕様

バージョン: P0 プロトタイプ 更新日: 2026-04-15 ステータス: 開発中

1. プロジェクト概要

JIBは保険代理店の面談録音から、顧客管理・意向確認・提案・16種類の規制帳票生成までを自動化するシステム。「組織の記憶」をテーマに、担当者が変わっても顧客情報が失われない設計を採用する。

コンセプト

料金体系

項目金額
初期費用100,000円
月額(月払い)150,000円/月
月額(年払い)100,000円/月

2. 現在のステータス

完成済み 完成済み

カテゴリ内容
Web デモ7タブ構成SPA、38 APIエンドポイント
CLI要約、提案マッチ、更改一覧、商品検索
AIルールベース要約、意向抽出、ライフイベント抽出、次アクション抽出
ワークフロー7フェーズ状態管理、ゲート自動判定
帳票16帳票の一括生成(Excel/Word)
テスト14ファイル、121テスト

未実装 未着手

項目詳細
マスタデータ入力UIdoc01-03, 05, 08, 10-11 の入力画面が未実装
Gate F 定期実行満期90日前自動検知のスケジューラ
AI要約のLLM統合現在ルールベース。Claude API未接続
本番環境整備認証、権限、監査ログ

3. 技術スタック

レイヤー技術備考
言語Python 3.12+
データモデルPydantic v2BaseModel ベース
HTTPサーバーhttp.server.ThreadingHTTPServerstdlib
DBSQLite商品DBのみ
Excel生成openpyxl
Word生成python-docx
テストpytest

4. ディレクトリ構成

jib/
├── src/
│   ├── core/                    # ドメインモデル・リポジトリ・ワークフロー
│   │   ├── models.py            # 全データモデル(35+クラス、11 Enum)
│   │   ├── runtime.py           # AppContext
│   │   ├── workflow.py          # ワークフローエンジン
│   │   ├── gate_checker.py      # ゲート判定(純粋関数6個)
│   │   ├── json_store.py        # 汎用JSONストア基底クラス
│   │   └── [10個のリポジトリ]
│   ├── ai/                      # AI・マッチングモジュール
│   │   ├── summarizer.py        # ルールベース要約
│   │   ├── insurance_intent_extractor.py  # 意向9項目抽出
│   │   └── matcher.py           # 商品×顧客マッチング
│   ├── documents/               # 帳票生成エンジン(16個)
│   │   ├── base.py              # DocumentFiller Protocol
│   │   ├── registry.py          # DocumentRegistry
│   │   └── doc01〜doc16         # 各帳票モジュール
│   ├── web/
│   │   ├── server.py            # 38エンドポイント
│   │   ├── service.py           # ビジネスロジック(1,416行)
│   │   └── static/index.html    # 7タブSPA
│   ├── integrations/
│   └── pipelines/
├── data/sample/                 # サンプルデータ
├── tests/                       # 14ファイル、121テスト
└── output/                      # 帳票出力先

5. データモデル

Enum定義(11個)

Enum用途
StaffRole募集人の役割
PartnerType業務提携先区分
RelationType関係種別
DelegationType委託種別
DelegationResult委託結果
LapseReason失効理由
ElderlyMethod高齢者対応方法
FeedbackTypeフィードバック種別
InteractionType面談種別
CustomerPhase7フェーズ(初回面談〜更改)
PhaseTransitionTriggerフェーズ遷移トリガー

主要エンティティ

Customer(中心エンティティ)

ID, 氏名, type, 年齢, 家族, 職業, 業種, ライフイベント, 契約, 面談, 意向9項目, フェーズを保持。全てのワークフローの起点。

InsuranceContract

保険契約エンティティ。顧客×保険会社の関連を管理し、満期・失効・更改を追跡する。

MeetingLog / MeetingDraft

面談記録。AI要約・意向抽出・アクション抽出の結果を保持する。MeetingDraft は承認前の下書き。

Recruiter

募集人マスタ。

BusinessPartner

業務提携先。3区分: 委託先 / 提携先 / 関連法人。

日常記録エンティティ

TakeoutRecord, WeeklyReport, CustomerFeedback, TrainingAbsence, PersonalDataRecord, DeviceRecord, CloudServiceRecord

データストア

ストアファイル用途
顧客customers.json中心。契約・面談・意向保持
契約contracts.json満期・失効・更改
面談meetings.jsonAI要約・意向・アクション
募集人recruiters.jsonマスタ
日常記録operations/*.json7種(募集人単位)
商品DBinsurance_products.sqlite3商品カタログ(SQLite)

6. ワークフロー(7フェーズ)

初回面談Gate A
意向確認Gate B
提案Gate C
申込Gate D
証券発行Gate E
アフターケア時間経過
更改Gate F

ゲート判定条件

実装箇所
gate_checker.py — 全て純粋関数として実装済み
ゲート判定条件
Gate A顧客登録済 + 面談1件以上 + 高齢者対応記録(70歳以上時)
Gate B意向9項目のうち1つ以上確認 + doc06生成済
Gate C提案あり + 顧客受諾(action_items.status == "proposal_accepted"
Gate D申込日セット + 意向確認書添付
Gate E証券番号付与 + status=active
Gate F契約の満期90日以内(時間トリガー) 未着手

7. API仕様(38エンドポイント)

GET(21個)

エンドポイント説明
/api/healthヘルスチェック
/api/dashboardダッシュボード集計
/api/customers顧客一覧
/api/customers/{id}顧客詳細
/api/customers/{id}/phase顧客フェーズ情報
/api/customers/{id}/requirementsゲート充足状況
/api/products保険商品一覧
/api/products/{id}保険商品詳細
/api/transcripts面談録音テキスト一覧
/api/calendar-eventsカレンダーイベント一覧
/api/calendar-events/{id}カレンダーイベント詳細
/api/drafts面談下書き一覧
/api/recruiters募集人一覧
/api/contracts契約一覧
/api/operations/takeout持ち出し記録
/api/operations/activity活動記録
/api/operations/feedbackお客様の声
/api/operations/training-absence研修欠席記録
/api/timeline満期+アクション期限タイムライン
/api/admin/pipelineフェーズ別パイプライン

POST(14個)

エンドポイント説明
/api/summarize面談テキストをAI要約
/api/drafts/{id}/approve面談下書きを承認
/api/customers/{id}/advanceフェーズを次へ進める
/api/customers/{id}/force-phaseフェーズを強制変更
/api/customers/{id}/proposals/{pid}/action提案アクション実行
/api/recruiter募集人新規登録
/api/customer顧客新規登録
/api/contract契約新規登録
/api/operations/takeout持ち出し記録追加
/api/operations/activity活動記録追加
/api/operations/feedbackお客様の声追加
/api/operations/training-absence研修欠席記録追加
/api/operations/early-lapse早期消滅報告追加
/api/documents/generate-all16帳票一括生成

PUT(3個)

エンドポイント説明
/api/recruiter/{id}募集人更新
/api/customer/{id}顧客更新
/api/contract/{id}契約更新

8. 16種類の規制帳票

doc名称データソース入力UI
01募集関連行為委託先一覧business_partners未着手
02業務提携チェックリストbusiness_partners未着手
03特定関係法人一覧表business_partners未着手
04生保早期消滅報告書contracts完成済み
05オンラインストレージ報告書cloud_services未着手
06意向把握・適合性確認シートcustomer.insurance_intents + contracts完成済み
07アフターフォローチェックシートcontracts + customers完成済み
08高齢者対応記録meetings.elderly_response未着手
09お客様の声受付簿feedback_records完成済み
10個人情報管理簿personal_data_records未着手
11業務利用機器管理台帳device_records未着手
12持ち出し管理簿takeout_records完成済み
13満期管理表contracts完成済み
14営業週報weekly_reports完成済み
15生損保挙績報告書contracts完成済み
16研修欠席者フォロー報告書training_absences完成済み

9. WebUI(7タブ構成)

#タブ名機能
1顧客管理顧客一覧・詳細・提案・アクション
2顧客記録会議・電話・メール → AI要約 → 下書き承認
3商品DB保険商品カタログ検索
4マスタ管理募集人・顧客・契約の登録
5日常記録持ち出し・活動・苦情・欠席・帳票一括生成
6期限管理満期+アクション期限のタイムライン
7管理者フェーズ別パイプライン・ゲート充足

10. コスト試算

前提条件
30人 × 3商談/日
サービス月額
Whisper API(音声文字起こし)¥32,400
Claude API(AI要約・抽出)¥7,650
Supabase(将来のDB基盤)¥3,750
その他¥200
合計¥44,000/月

売上150,000円/月に対し、粗利率 72%

11. 開発タスク(P0仕上げ)

マスタデータ入力UIの追加 未着手

以下の帳票に対応する入力画面を実装する。

AI要約のClaude API統合 未着手

現在のルールベース要約を Claude API(Haiku)に置換する。

Gate F 定期実行スケジューラ 未着手

満期90日前の契約を自動検知し、該当顧客を「更改」フェーズに遷移させるスケジューラ。

本番環境整備 未着手

WebUI改善 未着手

UX向上、テスト拡充、帳票生成の安定化。

12. 設計方針

5つの設計原則
  1. 「組織の記憶」に絞る — 機能数で勝負しない。担当が変わっても顧客情報が失われない仕組みに集中する。
  2. 現場が意識せず使える — 録音するだけで情報が構造化される。追加の手間を最小化する。
  3. 承認ありきの自動化 — AIは下書きを作成し、最終判断は人間が行う。全自動にはしない。
  4. データは自社保有 — JSON/SQLiteで保存。特定SaaSへのロックインを避ける。
  5. 段階的拡張 — P0はプロトタイプ。小さく始めて現場のフィードバックに基づいて拡張する。

既存コードの所在

30_案件別/ジェーアイビー/ 配下に格納。