ASIA / TOKYO00:00:00
ZFILMS©
LOADING000%
ZFILMS©
ASIA/TOKYO00:00:00
XDEAL

{ IVS / XDEAL }

Web · 2026

View live ↗

XDEAL

M&A イベントの LP から、4S チケット購入と連携するバイヤーページ自動生成・参加者おつなぎ仲介・属性配信メールまで一気通貫の商談インフラ。

Services
Design / Frontend / Platform
Client
IVS / XDEAL
Production
ZFILMS × 4S
Year
2026
COMMITS946
LINES+310,755
DB TABLES61
匿名化段階3
認証方式5

裏側の仕組み — 商談を成立させるデータフロー

XDEAL は「LP」ではなく商談インフラだ。4S のチケット購入 CSV が入口になり、バイヤーページ自動生成 → 匿名化公開 → マッチング → おつなぎ仲介 → 属性配信までを 61 テーブルの Neon 上で一気通貫に走らせる。以下の 4 本のデモは絵ではない — 元リポの純関数エンジン (normCompany / mergeRange / maskPortfolioItem / scoreBuyerForSeller / computeLehmanFee / assessKAnonymity) を zfilms-lp へ verbatim 移植し、ブラウザ上で本物を実行して、その戻り値をそのまま描画している。

実装の現物 — CSV 取込パイプライン (表記ゆれ収斂 → LP 自動生成 → 匿名化 → 公開判定)

// MOTION 画面の文字列は全部 normCompany() の戻り値。「THECOO株式会社(ザクー)」と「THECOO株式会社」は同じキー thecoo に収斂して物理的に 1 行へ重なる (括弧の読み仮名・スラッシュ以降の別表記を除去する — 2026-07-02 に重複 org を作った実際の回帰)。生成される LP は実在の公開バイヤー /b/gaiax で、対象売上・投資予算は enum band を mergeRange() が組んだレンジ文字列。公開状態は B14 の回答から決まるが、一括取込は KYC を経ていないため一般公開でも auto-publish せず preview 止まり = 未審査の org を公開面に出さない。@harvested-from xdeal-lp src/lib/buyer-import.ts / buyer-lp-display.ts

実装の現物 — 匿名化 3 段階 (open / masked / stealth) — 自分で触る版

社名 / 担当者名すべて実名

S
サンプル・パートナーズ株式会社
CVC
/b/sample
対象売上
1億 〜 10億
投資予算
3億 〜 30億
検討期限
2028年3月以内
グループイン実績 — sanitizePortfolioForPublic() の出力
アオゾラ技研株式会社2024.05
時期 2024.05ステータス 統合済 + 成長中売上 8億円従業員 42名取得金額 約 12億円
社名アオゾラ技研株式会社ロゴ画像/logos/xdeal-logo-自社ドメインhttps://example.co一言SaaS 基盤の内製化ノート開発チームごとグループイン。共通基盤買収メモ受託の粗利より、基盤エンジニアの採用買収背景自社プロダクトの基盤刷新に必要な人材決め手コメント基盤エンジニア 12 名が丸ごと残る算定根拠EBITDA 8x統合成果共通基盤を 9 ヶ月で刷新外注比率 統合後KPI売上 2.3x / 18ヶ月
みなとロジスティクス株式会社2023.11
時期 2023.11ステータス 単体で成長中売上 22億円従業員 180名取得金額 非開示
社名みなとロジスティクス株式会社ロゴ画像/logos/xdeal-logo-自社ドメインhttps://example.co一言ラストワンマイル獲得ノート地域物流網とラストワンマイルの獲得。買収メモオーナーの承継意向が明確で、経営陣が買収背景自社 EC の配送を外部に依存してお決め手コメント既存拠点が配送圏をそのまま埋めた算定根拠純資産 + 営業権 3年分統合成果繁忙期の欠配率 4.1% → 0.6統合後KPI配送単価 -14% / 12ヶ月
1 行 ― anonymize:true はレベルに関係なくサーバ境界で物理除外 (client に渡さない)
露出中の識別情報22 / 221 行あたり 11 系統が生で載っている (社名・ロゴ・URL・自由記述)
マスクは固定長 — 社名の桁数を漏らさない
アオゾラ技研株式会社→ maskCompanyName() →●●●●株式会社
長さに比例させると「業種 × 地域 × 桁数」の三角測量で 1 社に特定されうる。だから ● は常に 4 個。

// DEMO 本番の sanitizePortfolioForPublic() / maskPortfolioItem() / maskCompanyName() をそのまま実行している。masked は社名を伏字にするだけでなく、ロゴ画像と自社ドメイン URL を削除し自由記述 7 種を空にする — 社名だけ伏せてもロゴと URL と本文から実社名が復元できてしまうため (masked の実効ゼロ対策)。マスクは固定長 ●●●●: 文字数に比例させると社名の桁数が漏れ、業種 × 地域 × 桁数 の三角測量で 1 社に特定されうる。社名の長さを変えても ● が 4 個のままであることを下段で確認できる。anonymize:true の行はレベルに関係なくサーバ境界で物理除外。@harvested-from xdeal-lp src/lib/buyer-lp-display.ts

実装の現物 — マッチングエンジン (実在バイヤーの公開マンデートを実スコアで採点)

// MOTION スコアは手打ちではない。xdeal.4s.link/b/{raccoon,kaonavi,gaiax} で実際に公開されている買収マンデート (enum band) に対し、匿名売り手の自由文 (「8 億 / 年」「¥8 〜 15 億」) を parseJpyRange() で円レンジ化して scoreBuyerForSeller() を実行し、返ってきた score と reasons[] をそのまま描画している。結果は 65 / 55 / 10。配点は単一真実源 SCORE_WEIGHTS (売上 30 / 譲渡レンジ 25 / 業種 20 / 営業利益 10)。3 社とも公開マンデートに対象業種の記載が無いため業種 +20 は誰にも当たらない — データの無い基準は動いて見えて永久に効かない。買い手は実名・売り手は匿名という XDEAL の非対称設計がそのまま画になっている。@harvested-from xdeal-lp src/lib/matching-score.ts / matching-bands.ts / industry-taxonomy.ts

実装の現物 — k-匿名性ガード — 匿名なのに特定できてしまう (自分で触る版)

SELLER TEASER — 匿名で公開する属性を選ぶ#S-087
同条件の匿名売り手 (cohort)15 / 推奨 k ≥ 5
quasiKey() → saas||

匿名性 OK同条件の匿名売り手が 15 件あり、匿名性は十分です。

母集団 22 件の匿名売り手。業種は industry-taxonomy が canonical カテゴリへ正規化してから突き合わせる (「SaaS」と「クラウド」は同じコホート)。

// MOTION 匿名 teaser が公開する準識別子 (業種 / 地域 / 売上規模) を増やすほど、同条件の匿名売り手 (cohort) が 15 → 8 → 3 と痩せ、k=5 を割った瞬間に再識別リスク警告が出る。判定は本番の assessKAnonymity() / quasiKey() / coarsenSuggestions() をクリックのたびに実行。業種は industry-taxonomy が canonical カテゴリへ正規化するので「SaaS」と「クラウド」は同じコホートに入る。提案どおり地域を「関東」まで粗くすると cohort が 6 に戻り警告が消える。「首都圏・2016年創業・従業員40名・売上8億の SaaS」は匿名でも数社に絞れる、という M&A 匿名化の核心。@harvested-from xdeal-lp src/lib/k-anonymity.ts

本番サイト — 商談インフラを全部触る

表玄関の LP を1本だけ live で埋め込み、そこから分岐する各機能はスクショと要点で紹介する(カードにマウスを重ねると中身が展開/自動スクロールする)。実際の匿名化挙動は上の「匿名化3段階トグル」で、パスワード関門の奥の参加者リストは下の実演で触れる。

XDEAL LP — 実ページ liveOPEN ↗

// LIVE 13 セクションの本番ランディング。oklch() と backdrop-filter を多用した M&A イベントの表玄関で、ここから全機能へ分岐する。クリックで操作モードに入り本番そのまま触れる。

分岐先の機能ページ (スクショ + 中身)

xdeal.4s.link/b/gaiax
バイヤーページ (公開例 /b/gaiax)▲▼ auto-scroll
バイヤーページ (公開例 /b/gaiax)OPEN LIVE ↗

認証不要で公開されている実在バイヤーの買収マンデート。ガイアックスは事業会社(上場) / 対象売上 〜3億 / 投資予算 〜3億 / 検討期限 2027年3月以内 を実名で開示している。上のマッチングデモはこのページの enum band をそのまま入力に使っている。

xdeal.4s.link/buyers
買い手一覧 /buyers▲▼ auto-scroll
買い手一覧 /buyersOPEN LIVE ↗

公開済みバイヤー LP をキーワード・業種・地域で絞り込む一覧 (閲覧はログイン後)。個別ページ /b/[slug] は認証不要で、実在する買い手が「何を買うか」を実名で宣言している。

xdeal.4s.link/search
横断検索 /search▲▼ auto-scroll
横断検索 /searchOPEN LIVE ↗

組織・買い手 LP・売り手 LP を ILIKE で並行検索。stealth 案件は匿名 1 行で返し、ログイン中はウォッチリスト★を出す。

xdeal.4s.link/trust
トラストセンター /trust▲▼ auto-scroll
トラストセンター /trustOPEN LIVE ↗

大手バイヤーの vendor risk assessment を通すためのセキュリティ posture 開示。passkey/2FA/監査ログ/APPI 対応を明文化する。

xdeal.4s.link/press
プレスキット /press▲▼ auto-scroll
プレスキット /pressOPEN LIVE ↗

報道向けのロゴ・ファクトシート配布ページ。クリエイティブ・スタジオが書き出す公式ビジュアルと同一の真実源を共有する。

xdeal.4s.link/sellers
売り手一覧 /sellers▲▼ auto-scroll
売り手一覧 /sellersOPEN LIVE ↗

売り手は匿名のまま並ぶ。業種・規模・想定譲渡レンジだけを teaser として出し、実名・連絡先は電子同意が揃うまで一切出さない。買い手は実名・売り手は匿名という非対称がプラットフォームの前提。

xdeal.4s.link/apply
セルフサーブ申込 /apply▲▼ auto-scroll
セルフサーブ申込 /applyOPEN LIVE ↗

自前の 6 桁 OTP で本人確認してから申込を受け付ける。CSV 一括取込と同じく審査ゲートを通り、未審査の org が公開面に出ることはない。

xdeal.4s.link/participants
匿名参加者リスト /participants▲▼ auto-scroll
匿名参加者リスト /participantsOPEN LIVE ↗

共有パスワードの関門の奥。参加者は役割・業種・規模のカテゴリ値だけで並び、氏名・会社・メールはサーバ境界で物理的に落ちる。opt-out 行は fail-closed で最初から出ない。

xdeal.4s.link/workshop
密室ワークショップ /workshop▲▼ auto-scroll
密室ワークショップ /workshopOPEN LIVE ↗

East / West 各 20 名の定員を Neon で管理し、満席は自動でキャンセル待ちへ回す。受付停止は単一フラグで公開フォームと server action を同時に閉じる (直叩きバックストップつき)。

実演 — 固有機能をそのまま動かす

// LIVE DEMO — 実挙動の再現

属性一斉配信 (Mailchimp 的)

参加者を属性ファセットで絞り、BCC でなく 1 通ずつ個別 To で一斉送信。opt-out fail-closed、打診→仲介のステータスも追跡。上の実演は「1通ずつ」の送信カスケードまで再現。

// LIVE DEMO — 実挙動の再現

おつなぎ仲介 + 電子同意

/r/[token] のログイン不要同意ページ。相手方の実名は同意まで一切出さず、レーマン方式の手数料開示を提示してから運営が個別接続する。同意の瞬間に実名がリビールされる流れを実演。

// LIVE DEMO — 実挙動の再現

匿名参加者リスト — 関門の奥をサンプルで実演

共有パスワードの関門の奥にある実画面をサンプルデータで再演。解錠すると参加者が役割・業種・規模のカテゴリ値だけで並び、氏名・会社・メールはサーバ境界で物理的に落ちる。opt-out 行は fail-closed で最初から出ない。

WHAT'S INSIDE

01

バイヤーページ自動生成 (CSV冪等)

4S チケット購入 CSV 1 枚から organization/buyer LP を冪等生成。表記ゆれ正規化で重複防止、既存社は保護して差分だけ足す。

02

匿名化 3 段階の公開ページ

open / masked / stealth で社名〜担当者を段階マスク。SSR + インライン編集で、露出度を案件ごとに絞れる。

03

PII サーバ再導出

共有は行 index だけを受け渡し、氏名・会社は毎回サーバで再導出。なりすまし不能で、APPI 監査ログを同時記録する。

04

御見積書ツール (A4/PDF)

4S 名義の見積書を Neon 保存で作成し、画面プレビュー・印刷・PDF を単一ソースで共有。取引先名・金額は git 履歴に残さない。

05

News AI ファースト・ワークフロー

API でなくプロンプトコピペ式。担当者へ Resend 通知 → claude.ai で記事化 → 貼付・適用・公開。手元の Pro/Max プランで処理する。

06

クリエイティブ・スタジオ

登壇者一覧・セッション告知・密室WS・バイヤー陣容・ディール用語などを A4/SNS/会場サイズで書き出し。data URI 化で重複 fetch を回避。

07

Program 3層マージ

4S 実 API × Neon × ローカル mock を freshness 判定つき union fallback で統合し、タイムテーブル全消失を防ぐ。

08

パスワードレス認証 5 方式

passkey(WebAuthn)/magic link/email OTP/Google OAuth を標準装備、password は bcrypt fallback。管理者は 2FA 必須、新端末ログインを検知通知。

09

ウォッチリスト + セラー閲覧監査

買い手は気になる案件を★保存。seller LP は per-request で view log を取り、機微情報アクセスを監査する force-dynamic 描画。

10

M&A ディールルーム

NDA 締結 → 資料開示 (アクセスログ付) → Q&A → 承認フローまでを deal / deal_document / deal_document_access_log / nda_acceptance / approval_request で実装。機微資料の閲覧は 1 リクエストずつ監査に残る。

11

Referral Desk — 実名開示が唯一の課金ゲート

匿名情報は無料。実名開示の手前で電子同意 (成功報酬合意 / 開示同意) を必須化し、成約時に累進レーマンで請求する。最低報酬 300万円 / テール条項 24ヶ月 / 算定基準の事前明示は経産省 中小M&Aガイドライン第3版に準拠。

12

Stripe 課金基盤

subscription / plan_tier / usage_event / stripe_webhook_event / org_webhook で従量課金とプラン制御。webhook は冪等キーで二重計上を防ぐ。

13

61 テーブルの自前 DB

Neon(Postgres) + Drizzle ORM で organization/buyer_lp/seller_lp/deal/nda_acceptance/subscription/estimate ほか 61 テーブル。migration は CREATE/ALTER IF NOT EXISTS で冪等・非破壊。

Next projectIVS Event FrontendIVS · 2026