← 納品物一覧に戻る

要件定義書

保険リーズマーケットプレイス — v2.1.0 — 2026-03-18

1. 文書管理情報

項目内容
プロジェクト名保険リーズマーケットプレイス
文書名要件定義書
バージョンv2.1.0
作成日2026-03-18
最終更新日2026-03-18
クライアントカスタマークラウド株式会社
作成者プロダクト開発部
承認者CTO / プロダクトオーナー
機密レベル社外秘

改訂履歴

日付変更内容作成者
v1.0.02026-01-15初版作成田中
v1.1.02026-02-01オークション仕様の詳細化佐藤
v1.2.02026-02-14課金モデルを個人単位に変更鈴木
v2.0.02026-03-01A/Bテスト機能・返金フロー追加田中
v2.1.02026-03-18NO_BID再掲載ロジック・通知仕様追加佐藤

2. プロジェクト概要

2.1 目的

本プロジェクトは、保険相談を希望する消費者(エンドユーザー)と、保険販売を行う営業担当者(セールスエージェント)をリアルタイムにマッチングするマーケットプレイスを構築するものである。消費者がランディングページ(LP)から相談申込を行うと、システムが自動的にリードをスコアリングし、登録済みの営業担当者に対してオークション形式で案件を配信する。営業担当者は入札または即時購入により案件を獲得し、消費者へのコンタクトを開始する。

2.2 背景

従来の保険リード流通は、リード提供会社が一括でリストを販売する方式が主流であった。この方式では、リードの鮮度が低下する問題、価格の不透明性、品質のばらつきといった課題が存在していた。本システムでは、リアルタイムオークション方式を採用することにより、リードの鮮度を最大限に保ちつつ、市場原理に基づく適正価格での取引を実現する。

また、スコアリングアルゴリズムにより、リードの品質を定量的に評価し、営業担当者が投資判断を行いやすい環境を提供する。課金は営業担当者個人単位で行い、代理店一括請求ではなく、各担当者が自身の裁量で案件を購入・管理できるモデルを採用している。

2.3 対象ユーザー

ユーザー種別説明主な利用シーン
消費者(エンドユーザー)保険相談を希望する一般消費者。LPから申込を行う。LP閲覧、相談申込フォーム入力、SMS認証
営業担当者(セールスエージェント)保険代理店に所属する営業担当者。案件を購入し消費者にコンタクトする。案件一覧閲覧、入札、案件管理、面談記録、請求確認
代理店管理者(エージェンシーアドミン)保険代理店の管理者。所属担当者の活動を監視する。担当者管理、活動レポート閲覧、代理店設定
プラットフォーム運営者本システムの運営スタッフ。全体の管理・監視を行う。リード管理、オークション設定、返金審査、データ分析

3. システム概要

3.1 システムアーキテクチャ

本システムは以下の技術スタックを基盤として構築する。フロントエンドとバックエンドをNext.js 16のApp Router上に統合し、リアルタイム通信にはSocket.ioを用いたWebSocketを採用する。決済基盤にはStripeを使用し、PaymentIntentのマニュアルキャプチャ方式で落札確定時に課金を実行する。

レイヤー技術用途
フロントエンドNext.js 16 (App Router) / React 19SPA + SSR ハイブリッドレンダリング
UIライブラリshadcn/ui + Tailwind CSS v4コンポーネント基盤・スタイリング
バックエンドNext.js API Routes (Route Handlers)REST API / Server Actions
リアルタイム通信Socket.io (WebSocket)オークション入札・通知のリアルタイム配信
データベースPostgreSQL 16 + Prisma ORMデータ永続化・マイグレーション管理
認証NextAuth.js v5 / CC-Authユーザー認証・セッション管理
決済Stripe (PaymentIntent / Manual Capture)課金・請求・返金処理
メール・SMSAmazon SES / Amazon SNS通知・SMS認証コード送信
インフラAWS (ECS Fargate / RDS / CloudFront)コンテナホスティング・CDN
CI/CDGitHub Actions + AWS CodePipeline自動テスト・自動デプロイ

3.2 ロール別システム利用概要

各ロールのユーザーは、以下のシステム機能を主に利用する。権限管理はロールベースアクセス制御(RBAC)により厳密に管理され、各ロールがアクセス可能な画面・APIは明確に分離されている。

ロール主な機能アクセス画面
SALES_AGENT案件閲覧・入札・購入・案件管理・面談記録・請求確認ダッシュボード、案件一覧、案件詳細、請求管理
AGENCY_ADMIN所属担当者管理・活動監視・レポート閲覧代理店管理、担当者一覧、活動レポート
ADMIN全機能のフルアクセス・システム設定変更管理画面全体
OPERATORリード管理・オークション運用・返金審査・配信管理リード管理、オークション管理、返金審査
ACCOUNTANT請求・入金管理・売上レポート・経理処理請求管理、売上レポート、入金確認
VIEWER閲覧のみ(データ参照・レポート確認)ダッシュボード(読み取り専用)

4. 機能要件一覧

4.1 リード取得機能(FR-LEAD)

消費者がLPから保険相談を申し込む際のフォーム入力・認証・リードデータ登録までの一連の機能を提供する。取得したリードは自動スコアリングされ、オークション対象として配信キューに登録される。

4.1.1 申込フォーム入力項目

LPの申込フォームは必須項目8項目、任意項目8項目で構成される。フォームはステップ形式で表示し、離脱率を最小化する設計とする。

No.項目名必須バリデーション
1氏名text必須全角のみ、2〜20文字
2フリガナtext必須全角カタカナのみ、2〜40文字
3電話番号tel必須ハイフンなし10〜11桁、携帯番号のみ
4生年月日date必須18歳以上、過去の日付
5性別select必須男性 / 女性 / その他
6都道府県select必須47都道府県から選択
7相談希望内容multi-select必須生命保険 / 医療保険 / がん保険 / 学資保険 / 年金保険 / 損害保険 / その他
8希望連絡時間帯select必須午前 / 午後 / 夕方以降 / いつでも
9メールアドレスemail任意RFC5322準拠
10郵便番号text任意7桁数字(ハイフンなし)
11市区町村text任意自由入力、最大50文字
12世帯年収select任意300万未満 / 300〜500万 / 500〜700万 / 700〜1000万 / 1000万以上
13家族構成select任意独身 / 夫婦のみ / 子供あり(未就学)/ 子供あり(小中学生)/ 子供あり(高校生以上)
14現在の保険加入状況select任意未加入 / 1社加入 / 2社以上加入 / 不明
15相談動機textarea任意最大500文字
16備考textarea任意最大1000文字

4.1.2 SMS認証

フォーム送信前にSMS認証を必須とする。これにより、不正リードの流入を防止し、リードの品質を担保する。

項目仕様
認証コード桁数6桁数字
有効期限送信から10分間
再送可能回数同一番号に対し3回/1時間
試行上限5回失敗で30分ロック
送信手段Amazon SNS経由
送信メッセージ「【保険相談】認証コード: XXXXXX(10分以内に入力してください)」

4.1.3 重複検知

同一消費者からの重複申込を検知し、リードの品質を維持する。検知対象は電話番号をプライマリキーとし、過去30日以内の申込との照合を行う。

項目仕様
検知ウィンドウ過去30日間
プライマリキー電話番号(正規化済み)
セカンダリキー氏名 + 生年月日の組み合わせ
重複時の動作リード登録は行うが、重複フラグを付与。スコアリングで減点対象。
通知運営者に重複検知通知を送信

4.1.4 自動スコアリング

取得したリードを0〜100点で自動スコアリングする。スコアは3つのカテゴリ(入力完全性・温度感・属性)の重み付き合計で算出される。スコアはオークションの開始価格算出に使用される。

カテゴリ配点評価基準
入力完全性スコア0〜30点任意項目の入力率に応じて配点。全項目入力で30点。メールアドレス入力+5点、年収入力+5点。
温度感スコア0〜40点相談希望内容の選択数(複数選択で加点)、希望連絡時間帯の具体性、相談動機の文字数と内容分析。「すぐに相談したい」等のキーワードで加点。
属性スコア0〜30点年齢帯(30〜50代に高配点)、世帯年収(高いほど加点)、家族構成(子供ありで加点)、保険加入状況(未加入・見直しで加点)。
スコアティア分類: S(80〜100点)= 高品質リード、A(50〜79点)= 標準リード、B(0〜49点)= 低品質リード。ティアに応じてオークションの categoryMultiplier が変動する。

4.2 オークション機能(FR-AUCTION)

スコアリング済みリードをリアルタイムオークション形式で営業担当者に配信する。WebSocket(Socket.io)を用いてリアルタイムに入札状況を配信し、営業担当者は即座に入札・即時購入を行うことができる。

4.2.1 価格算出ロジック

項目仕様
開始価格(entryPrice)basePrice(8,000円) + score × 200円 × categoryMultiplier
基本価格(basePrice)8,000円(管理画面から変更可能)
スコア係数スコア1点あたり200円
カテゴリ乗数(categoryMultiplier)生命保険: 1.0 / 医療保険: 1.2 / がん保険: 1.3 / 学資保険: 0.9 / 年金保険: 1.1 / 損害保険: 0.8
即時購入価格entryPrice × 2.0
入札単位500円刻み
最低入札額現在最高額 + 500円
価格算出例: スコア75点の医療保険リードの場合、entryPrice = 8,000 + 75 × 200 × 1.2 = 26,000円。即時購入価格 = 52,000円。

4.2.2 オークション運用ルール

項目仕様
オークション時間デフォルト15分(管理画面から5〜60分で設定可能)
自動延長条件終了3分前に入札があった場合、+5分延長
最大延長回数3回(最大30分)
同時開催上限1営業担当者あたり最大10案件の同時入札
参加条件有効な決済手段(Stripe PaymentMethod)が登録済みであること
入札取消不可(入札確定後のキャンセルは認められない)
即時購入オークション中いつでも即時購入価格で購入可能。即時購入時点でオークション終了。
落札通知WebSocket + メール + アプリ内通知の3チャネルで通知

4.3 案件管理機能(FR-CASE)

営業担当者が落札・購入した案件の進捗を管理する機能。購入後にリード情報(氏名・電話番号等)が開示され、営業担当者はコンタクト履歴と面談記録を登録しながら案件をクロージングまで管理する。

4.3.1 案件ステータス遷移

ステータス説明遷移先
NOT_CONTACTED購入直後。まだ消費者にコンタクしていない状態。IN_PROGRESS / UNREACHABLE
IN_PROGRESSコンタクト済み。商談進行中。MET / UNREACHABLE
UNREACHABLE3回以上コンタクトを試みたが連絡がつかない。IN_PROGRESS(再コンタクト時)
MET面談実施済み。面談結果の記録待ち。CLOSED
CLOSED案件完了。成約・継続・辞退のいずれかの結果が記録されている。(終了状態)

4.3.2 面談結果記録

結果区分説明後続処理
CONTRACTED成約。保険契約が締結された。成約データとして記録。成約率算出に使用。
CONTINUING継続商談。次回面談を予定。次回面談日をリマインダー登録。
DECLINED辞退。消費者が契約を見送った。辞退理由を記録。分析データとして活用。

4.4 返金機能(FR-REFUND)

営業担当者がリード品質に問題があると判断した場合に返金申請を行う機能。返金は一定条件を満たした場合にのみ申請可能であり、運営者による審査を経て承認・却下が決定される。

4.4.1 返金申請条件

条件詳細
コンタクト試行回数3回以上のコンタクト試行が記録されていること
コンタクト期間購入から7日以内にコンタクト試行が行われていること
申請期限購入から14日以内
申請上限同一担当者につき月5件まで

4.4.2 返金理由

理由コード説明自動承認
DUPLICATE同一消費者の重複リード。過去30日以内に同一消費者を購入済み。可(システム自動検知時)
FRAUDULENT虚偽情報によるリード。氏名・電話番号等が明らかに虚偽。不可(運営者審査)
UNREACHABLE連絡不通。3回以上のコンタクト試行後も一度も連絡がつかない。不可(運営者審査)

4.5 課金・請求機能(FR-BILLING)

課金は営業担当者個人単位で行う。代理店(法人)単位の一括請求ではなく、各営業担当者が自身のStripeアカウントに紐づく決済手段を登録し、案件購入ごとに課金が発生する。請求書の名義は営業担当者が任意に設定可能とする(個人名・屋号・法人名など)。

設計方針: 保険営業は個人事業主として活動するケースが多く、代理店所属であっても経費精算は個人単位で行われることが一般的である。このため、課金・請求の単位を個人としている。
項目仕様
課金単位営業担当者個人
決済手段Stripe PaymentIntent(マニュアルキャプチャ方式)
課金タイミングオークション落札確定時 / 即時購入時にキャプチャ実行
仮押さえ(authorize)入札時にPaymentIntentをcreateし、金額をオーソリ
確定(capture)落札確定時にPaymentIntentをcapture
解放(cancel)落札失敗時にPaymentIntentをcancel(オーソリ解放)
請求書月次で自動生成。Stripe Invoiceを利用。
請求書名義営業担当者が任意設定(個人名・屋号・法人名)
領収書Stripe Receipt URLを発行。PDF保存可能。
月額利用料なし(案件購入時の従量課金のみ)

4.6 A/Bテスト機能(FR-ABTEST)

オークションパラメータの最適化を目的としたA/Bテスト機能を提供する。運営者がテスト変数と配分比率を設定し、統計的有意差を自動判定する。

4.6.1 テスト変数

変数説明値の例
price(基本価格)basePriceの変動テストA: 8,000円 / B: 10,000円
display(表示形式)案件カードの表示パターンA: 詳細表示 / B: 簡略表示
duration(オークション時間)オークション時間の最適化A: 15分 / B: 10分
multiplier(カテゴリ乗数)カテゴリごとの価格調整A: 医療1.2 / B: 医療1.5

4.6.2 統計指標

指標説明
入札率オークションに1件以上の入札があった割合
平均落札価格落札確定した案件の平均取引価格
即時購入率即時購入で終了したオークションの割合
NO_BID率入札者ゼロで終了したオークションの割合
有意差判定カイ二乗検定(割合比較)/ t検定(平均値比較)/ p値 < 0.05で有意

4.7 通知機能(FR-NOTIFY)

システム内のイベントに応じて、関連するユーザーに対して通知を配信する。通知チャネルはアプリ内通知・メール・WebSocketプッシュの3種類を提供する。

通知種別トリガー対象チャネル
オークション開始新規オークション開始時条件マッチする全担当者WebSocket + アプリ内
上回り通知自分の入札が他者に上回られた時入札中の担当者WebSocket + メール
落札通知オークション終了・落札確定時落札者WebSocket + メール + アプリ内
終了間近オークション終了3分前入札中の全担当者WebSocket
返金結果返金審査完了時申請者メール + アプリ内
請求書発行月次請求書生成時全担当者メール
予算警告月間購入額が設定上限の80%到達時該当担当者メール + アプリ内

4.8 管理機能(FR-ADMIN)

プラットフォーム運営者がシステム全体を管理するための機能群。ユーザー管理、リード管理、オークション設定、配信スケジュール設定等を含む。

機能説明対象ロール
ユーザー管理営業担当者・代理店管理者のCRUD操作。アカウント有効化/停止。ADMIN / OPERATOR
代理店管理代理店情報の登録・編集。所属担当者の一覧・移動。ADMIN / OPERATOR
リード管理リード一覧の閲覧・ステータス変更・手動スコア調整。不正リードの除外。ADMIN / OPERATOR
オークション管理進行中オークションの監視・強制終了・パラメータ調整。ADMIN / OPERATOR
価格設定basePrice・categoryMultiplier・即時購入倍率の変更。ADMIN
配信スケジュールオークション開始時間帯の設定(平日9:00〜18:00等)。祝日設定。ADMIN / OPERATOR
返金審査返金申請の承認・却下。エビデンス確認。ADMIN / OPERATOR
レポート・分析売上・成約率・リード品質等のダッシュボード。CSV/PDFエクスポート。ADMIN / OPERATOR / ACCOUNTANT

5. 業務フロー

5.1 リード取得からオークション配信

消費者のLP訪問から、リード登録、スコアリング、オークション配信までの業務フローを以下に示す。

Stepアクター処理内容システム動作
1消費者LPにアクセスし、相談申込フォームに入力フォームバリデーション実行
2システムSMS認証コード送信Amazon SNS経由で6桁コード送信(有効期限10分)
3消費者認証コードを入力コード照合。一致すればリード登録処理へ。
4システムリードデータ登録PostgreSQLにリード情報を保存。重複検知実行。
5システム自動スコアリング3カテゴリでスコア算出(0〜100点)。ティア分類。
6システムオークション生成entryPrice算出。配信スケジュールに基づきオークション開始時刻を決定。
7システムオークション開始・通知WebSocketで対象担当者に配信。アプリ内通知・メール送信。

5.2 入札から落札・購入

Stepアクター処理内容システム動作
1営業担当者案件一覧からオークション参加案件詳細(匿名情報)を表示
2営業担当者入札額を入力し入札Stripe PaymentIntentをcreate(オーソリ)。入札をDBに記録。
3システム全参加者にリアルタイム更新WebSocketで現在最高額・入札者数を配信
4営業担当者(任意)即時購入を選択即時購入価格でPaymentIntentをcapture。オークション即時終了。
5システムオークション終了判定終了時刻到達 or 即時購入。自動延長ルール適用。
6システム落札確定・課金実行最高入札者のPaymentIntentをcapture。他の入札者のオーソリをcancel。
7システムリード情報開示落札者にのみ消費者の氏名・電話番号等を開示。

5.3 NO_BID(入札なし)時の再掲載ロジック

オークションが入札者ゼロのまま終了した場合(NO_BID)、以下のルールに基づき自動的に再掲載を行う。リードの鮮度が低下する中で、段階的な価格調整により取引成立の確率を最大化する設計とする。

掲載回数価格設定掲載タイミング備考
1回目(初回)算出されたentryPriceスケジュールに基づく通常のオークション
2回目(再掲載1)同額(entryPrice)即時再掲載価格変更なし
3回目(再掲載2)同額(entryPrice)即時再掲載価格変更なし
4回目(再掲載3)entryPrice × 0.9(10%値下げ)即時再掲載自動値下げ適用
5回目以降再掲載停止運営者が手動で判断。価格再設定 or アーカイブ。
設計意図: 1〜3回目は同一価格で再掲載することにより、タイミングの問題で入札されなかったケースを救済する。4回目で10%値下げを適用し、価格が障壁となっているケースに対応する。5回目以降は自動処理を停止し、運営者の判断に委ねる。これにより、過度な値下げによる収益性の毀損を防止する。

5.4 案件フォローアップから請求

Stepアクター処理内容システム動作
1営業担当者消費者にコンタクト(電話/メール)コンタクト履歴を記録(日時・手段・結果)
2営業担当者面談実施面談記録を登録(日時・場所・提案内容)
3営業担当者面談結果を記録CONTRACTED / CONTINUING / DECLINED を登録
4システム月次請求書生成Stripe Invoiceを自動生成。担当者にメール通知。
5営業担当者請求書確認・ダウンロード請求書PDF / 領収書の閲覧・保存
6(該当時)営業担当者返金申請返金理由・エビデンスを入力。運営者に審査依頼。
7(該当時)運営者返金審査・決定承認時: Stripe Refund実行。却下時: 理由通知。

6. ユーザーロール定義

本システムのロールベースアクセス制御(RBAC)は以下の6ロールで構成される。各ロールの権限は管理画面から変更不可とし、システム定義のプリセットとする。

ロール案件閲覧入札・購入案件管理返金申請代理店管理システム設定返金審査ユーザー管理
SALES_AGENT自分のみ自分のみ
AGENCY_ADMIN所属代理店所属代理店所属のみ所属のみ
ADMIN全件全件全件全権限全件
OPERATOR全件全件全件一部一部
ACCOUNTANT全件(読取)閲覧のみ
VIEWER全件(読取)

7. 用語定義

本文書および関連文書で使用する主要な用語の定義を以下に示す。

用語英語表記定義
リードLead消費者がLPから申し込んだ保険相談案件のデータ。氏名・電話番号・相談内容等を含む。
リーズLeads(複数形)リードの複数形。業界慣行に基づき「リーズ」と表記する。
スコアリングScoringリードの品質を0〜100点で数値化する自動評価プロセス。
エントリープライスEntry Priceオークションの開始価格。basePrice + score × 200 × categoryMultiplierで算出。
即時購入Instant Buyオークション中にentryPrice × 2.0の価格で即座に案件を購入する機能。
NO_BIDNo Bidオークションが入札者ゼロのまま終了した状態。再掲載ロジックが適用される。
マニュアルキャプチャManual CaptureStripeの決済方式。入札時にオーソリ(仮押さえ)し、落札確定時にキャプチャ(確定)する。
セールスエージェントSales Agent保険代理店に所属し、消費者に保険商品を提案・販売する営業担当者。
エージェンシーAgency保険代理店。1つ以上のセールスエージェントが所属する法人・組織。
カテゴリ乗数Category Multiplier保険種別ごとに設定される価格調整係数。保険種別の需給バランスを反映する。
オーソリAuthorizationクレジットカード決済において、利用枠を仮押さえする処理。確定前の状態。
キャプチャCaptureオーソリ済みの決済を確定し、実際の課金を実行する処理。

本文書はカスタマークラウド株式会社の機密情報を含みます。無断での複製・転載を禁じます。

保険リーズマーケットプレイス 要件定義書 v2.1.0 — 2026-03-18