JIB (ジェーアイビー) 要件定義書
保険代理店向け経営OS — エンジニア向け技術仕様
1. プロジェクト概要
JIBは保険代理店の面談録音から、顧客管理・意向確認・提案・16種類の規制帳票生成までを自動化するシステム。「組織の記憶」をテーマに、担当者が変わっても顧客情報が失われない設計を採用する。
コンセプト
- 組織の記憶に絞る — 機能数で勝負しない
- 現場が意識せず使える — 録音するだけ
- 承認ありきの自動化 — AIは下支え、最後は人が確認
- データは自社保有 — JSON/SQLite、SaaSロックインなし
- 段階的拡張 — 小さく始めて現場に合わせて拡張
料金体系
| 項目 | 金額 |
|---|---|
| 初期費用 | 100,000円 |
| 月額(月払い) | 150,000円/月 |
| 月額(年払い) | 100,000円/月 |
2. 現在のステータス
完成済み 完成済み
| カテゴリ | 内容 |
|---|---|
| Web デモ | 7タブ構成SPA、38 APIエンドポイント |
| CLI | 要約、提案マッチ、更改一覧、商品検索 |
| AI | ルールベース要約、意向抽出、ライフイベント抽出、次アクション抽出 |
| ワークフロー | 7フェーズ状態管理、ゲート自動判定 |
| 帳票 | 16帳票の一括生成(Excel/Word) |
| テスト | 14ファイル、121テスト |
未実装 未着手
| 項目 | 詳細 |
|---|---|
| マスタデータ入力UI | doc01-03, 05, 08, 10-11 の入力画面が未実装 |
| Gate F 定期実行 | 満期90日前自動検知のスケジューラ |
| AI要約のLLM統合 | 現在ルールベース。Claude API未接続 |
| 本番環境整備 | 認証、権限、監査ログ |
3. 技術スタック
| レイヤー | 技術 | 備考 |
|---|---|---|
| 言語 | Python 3.12+ | |
| データモデル | Pydantic v2 | BaseModel ベース |
| HTTPサーバー | http.server.ThreadingHTTPServer | stdlib |
| DB | SQLite | 商品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 | 面談種別 |
CustomerPhase | 7フェーズ(初回面談〜更改) |
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.json | AI要約・意向・アクション |
| 募集人 | recruiters.json | マスタ |
| 日常記録 | operations/*.json | 7種(募集人単位) |
| 商品DB | insurance_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-all | 16帳票一括生成 |
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の追加 未着手
以下の帳票に対応する入力画面を実装する。
- doc01-03: 業務提携先管理(
BusinessPartnerのCRUD画面) - doc05: オンラインストレージ(
CloudServiceRecordの入力画面) - doc08: 高齢者対応記録(
meetings.elderly_responseの入力画面) - doc10: 個人情報管理簿(
PersonalDataRecordの入力画面) - doc11: 業務利用機器管理台帳(
DeviceRecordの入力画面)
AI要約のClaude API統合 未着手
現在のルールベース要約を Claude API(Haiku)に置換する。
summarizer.pyにLLMバックエンド追加- 意向抽出・アクション抽出もLLM化
- フォールバック: API障害時はルールベースにフォールバック
Gate F 定期実行スケジューラ 未着手
満期90日前の契約を自動検知し、該当顧客を「更改」フェーズに遷移させるスケジューラ。
本番環境整備 未着手
- 認証(ログイン機能)
- 権限管理(ロールベース)
- 監査ログ(操作ログ記録)
WebUI改善 未着手
UX向上、テスト拡充、帳票生成の安定化。
12. 設計方針
5つの設計原則
- 「組織の記憶」に絞る — 機能数で勝負しない。担当が変わっても顧客情報が失われない仕組みに集中する。
- 現場が意識せず使える — 録音するだけで情報が構造化される。追加の手間を最小化する。
- 承認ありきの自動化 — AIは下書きを作成し、最終判断は人間が行う。全自動にはしない。
- データは自社保有 — JSON/SQLiteで保存。特定SaaSへのロックインを避ける。
- 段階的拡張 — P0はプロトタイプ。小さく始めて現場のフィードバックに基づいて拡張する。
既存コードの所在
30_案件別/ジェーアイビー/ 配下に格納。