-- 日本の個人開発者向け垂直 B2B 機会モデル
-- 基準日: 2026-08-01
-- Engine: SQLite 3
--
-- 重要:
-- - 評点は公式統計ではなく、公開情報を基にした判断モデルである。
-- - 各項目は 1〜5。5 が個人開発者に有利。
-- - score = sum(weight * rating / 5)。理論範囲は 20〜100。
-- - market_indicator は比較可能な TAM ではない。単位・時点・母集団が異なる。
-- - public_source_coverage は公開資料の充実度であり、需要・価格・支払意思の検証度ではない。
-- - tier は損害・規制リスクの非補償ゲートを先に適用し、総合点で相殺しない。

-- Query 1: 個人開発適合スコア
WITH
weights AS (
  SELECT
    20.0 AS pain_weight,
    20.0 AS reach_weight,
    15.0 AS willingness_weight,
    10.0 AS retention_weight,
    15.0 AS mvp_weight,
    10.0 AS safety_weight,
     5.0 AS integration_weight,
     5.0 AS defensibility_weight
),
opportunities(
  opportunity_id,
  opportunity,
  buyer,
  wedge,
  do_not_automate,
  why_now,
  pain_frequency,
  reachability,
  willingness_to_pay,
  retention,
  mvp_feasibility,
  low_harm_regulatory_risk,
  low_integration_change_burden,
  defensibility,
  public_source_coverage,
  pilot_price_hypothesis,
  market_indicator
) AS (
  VALUES
    ('agency_close',
     '広告・制作：月次クローズ',
     '代表、運用責任者、CS責任者',
     '媒体CSVと既存資料から、KPI照合・根拠付き文章案・承認・既存スライド出力',
     '因果の確定、誇大な改善提案、無承認の顧客提出',
     '元Webエンジニアから到達しやすくCSV型で最速検証できるが、単なるダッシュボードはコモディティ化',
     4,5,3,5,5,4,4,2,
     '中',
     '初期3万〜8万円 + 月2万〜5万円',
     '広告業9,085事業所、デザイン業8,619事業所（2021-06-01）'),
    ('construction_change_order',
     '専門工事：追加工事証拠',
     '社長、工事部長、事務責任者',
     '音声・前後写真・時間・材料を、内訳付き変更見積と承認用証拠束へ変換',
     '施工可否、安全性、契約適法性、最終金額の自動確定',
     '詳細な見積内訳と下請取引の是正が政策上重視され、未請求追加工事の回収へ直結しやすい',
     5,4,4,4,4,3,4,4,
     '中〜高',
     '初期3万〜10万円 + 月1万〜3万円',
     '建設業許可483,823業者、うち1業種のみ221,833（2026-03-31）'),
    ('recruitment_compliance',
     '有料職業紹介：法定台帳締め',
     '代表、職業紹介責任者、業務責任者',
     'ATS/Excel CSVから必須項目、6か月離職、返戻金、年次報告、公開用データを点検',
     '求職者の選別、推薦、自動不採用、企業との仲介',
     '1事業所だけの事業者が多く、法定・事後業務がATSとExcelの間に残りやすい',
     4,5,4,5,4,2,4,4,
     '高',
     '初期3万〜8万円 + 月1.5万〜4万円',
     '有料職業紹介31,486事業所（2025-03-31）'),
    ('trucking_evidence',
     '中小運送：待機等の請求証拠',
     '社長、営業所長、運行管理責任者',
     '荷待ち・荷役・附帯作業を短時間で記録し、未請求候補と荷主協議用証拠を出力',
     '運転中操作、配車最適化、法令適合や請求可否の自動判定',
     '2025/2026年の書面・記録義務拡張と、待機・附帯作業の料金回収が近い',
     5,4,4,5,4,2,4,4,
     '高',
     '初期5万円前後 + 月1.5万〜3万円',
     '一般貨物56,954事業者、10両以下29,275（2025-03-31）'),
    ('facility_repair',
     '設備点検：不良→修繕承認',
     '地域点検・保守会社の経営者、業務責任者',
     '有資格者が確定した不良を、説明・見積・承認・修繕前後・再点検へ追跡',
     '法定点検の判定、適合表示、資格者の署名代替',
     '反復周期が強く、点検後に止まる修繕案件を売上へ変えられる',
     5,3,4,5,4,3,4,5,
     '中〜高',
     '初期5万円 + 月1.5万〜4万円',
     '建築物衛生8区分17,842登録（隣接代理指標）、特定建築物48,608施設（2024年度）'),
    ('property_repair',
     '賃貸管理：修繕承認',
     '管理会社の経営者、管理部門責任者',
     'アプリ不要の故障受付から、業者割当・オーナー承認・完了証跡・月次報告まで',
     '入居審査、敷金精算、法的判断、完全自動の緊急度判定、未マスキング室内画像の無制限共有',
     '公開登録リストと反復需要がある一方、基幹連携・個人情報・夜間対応が重い',
     5,5,4,5,3,2,2,4,
     '中〜高',
     '初期5万円 + 月2万〜5万円',
     '賃貸住宅管理10,102登録業者（2025-12）'),
    ('manufacturing_rfq',
     '加工受託：見積案件と図面版',
     '社長、工場長、営業・見積担当',
     'メール添付の見積案件、図面版、回答期限、担当、既存Excel見積を一つの受信箱で管理',
     '価格、加工可否、公差、輸出管理該当性の自動決定',
     '売上と粗利に近く、ERPやAI見積を置換せず、行方不明と版事故に絞れる',
     4,4,4,5,4,3,4,4,
     '高',
     '初期5万〜15万円 + 月2万〜5万円',
     '製造業222,200事業所、金属+生産用機械53,775（2024-06-01）'),
    ('accounting_monthly_pack',
     '税理士：月次説明パック',
     '所長、税理士法人パートナー、業務責任者',
     '複数会計ソフトのCSVから差異・要確認・根拠リンク付き顧客説明案を作る',
     '税務判断、税務相談、申告書作成、マイナンバー取扱い',
     '高継続だが、大手会計ベンダーが資料回収・催促・進捗まで拡張している',
     5,3,4,5,4,3,4,3,
     '高',
     '初期5万〜10万円 + 月2万〜5万円',
     '会計士・税理士30,479事業所（2021）、税理士82,297人（2026-06-30）'),
    ('home_care_audit',
     '訪問介護：請求前例外監査',
     '法人代表、事業所管理者',
     '予定・実績・記録CSVから不一致、欠落、重複、未確定を検出して人の訂正一覧へ',
     '介護計画、請求判断、自動訂正、利用者状態の自動評価',
     '痛みと継続性は強いが、健康・介護情報、各ソフト差、請求責任が重い',
     5,3,4,5,3,1,2,4,
     '高',
     '初期3万〜8万円 + 月1万〜3万円',
     '訪問介護37,264事業所（2024-10-01）'),
    ('food_haccp_exception',
     '食品製造：HACCP例外レビュー',
     '経営者、工場長、品質保証責任者',
     '一業種・既存3帳票だけを忠実に電子化し、未完了・逸脱・承認・監査出力を管理',
     '危害分析、CCP、出荷可否、期限、アレルゲン、安全性の自動判定',
     '法定反復性は強いが、安全責任が最大で、一般飲食店には2026年から国の無料記録アプリもある',
     5,3,3,5,3,1,3,4,
     '高',
     '初期5万〜10万円 + 月1万〜3万円',
     '食料品製造24,659事業所（2024-06-01、個人経営除外）')
),
scored AS (
  SELECT
    o.*,
    ROUND(
      pain_frequency * pain_weight / 5.0 +
      reachability * reach_weight / 5.0 +
      willingness_to_pay * willingness_weight / 5.0 +
      retention * retention_weight / 5.0 +
      mvp_feasibility * mvp_weight / 5.0 +
      low_harm_regulatory_risk * safety_weight / 5.0 +
      low_integration_change_burden * integration_weight / 5.0 +
      defensibility * defensibility_weight / 5.0,
      1
    ) AS score
  FROM opportunities o
  CROSS JOIN weights
)
SELECT
  DENSE_RANK() OVER (ORDER BY score DESC) AS rank,
  opportunity_id,
  opportunity,
  score,
  CASE
    WHEN low_harm_regulatory_risk <= 1 THEN '専門家同伴'
    WHEN score < 70 THEN '専門家同伴'
    WHEN low_harm_regulatory_risk = 2 THEN '条件付き'
    WHEN score >= 80 THEN '優先検証'
    WHEN score >= 70 THEN '条件付き'
    ELSE '専門家同伴'
  END AS tier,
  buyer,
  wedge,
  do_not_automate,
  why_now,
  pain_frequency,
  reachability,
  willingness_to_pay,
  retention,
  mvp_feasibility,
  low_harm_regulatory_risk,
  low_integration_change_burden,
  defensibility,
  public_source_coverage,
  pilot_price_hypothesis,
  market_indicator
FROM scored
ORDER BY score DESC, opportunity_id;

-- Query 2: 公的な見込み客・業務量の指標
-- 件数は単位・時点・定義が異なるため、合算・横比較しない。
WITH market_indicators(
  sort_order,
  opportunity,
  indicator,
  unit,
  as_of,
  scope_note,
  source_url
) AS (
  VALUES
    (1, '専門工事：追加工事証拠', '483,823', '許可業者', '2026-03-31', '全建設業許可。1業種のみは221,833。企業数/TAMではない。', 'https://www.mlit.go.jp/report/press/tochi_fudousan_kensetsugyo13_hh_000001_00350.html'),
    (2, '設備点検：不良→修繕承認', '17,842', '登録件', '2024年度', '清掃・空気環境測定・害虫防除等8区分の登録合計。同一営業所の重複あり。修繕販売者数ではない。', 'https://www.e-stat.go.jp/stat-search/files?collect_area=100&layout=dataset&stat_infid=000040359172&toukei=00450027&tstat=000001031469'),
    (3, '賃貸管理：修繕承認', '10,102', '登録業者', '2025-12', '200戸以上は原則登録義務、200戸未満は任意。全管理会社数ではない。', 'https://www.mlit.go.jp/tochi_fudousan_kensetsugyo/const/content/001983396.pdf'),
    (4, '中小運送：待機等の請求証拠', '56,954', '一般貨物事業者', '2025-03-31', '10両以下29,275。法人企業数とは限らない。', 'https://www.mlit.go.jp/common/001459429.pdf'),
    (5, '加工受託：見積案件と図面版', '222,200', '製造業事業所', '2024-06-01', '個人経営等を除く推計。加工受託だけではない。', 'https://www.e-stat.go.jp/stat-search/file-download?fileKind=2&statInfId=000040312266'),
    (6, '食品製造：HACCP例外レビュー', '24,659', '食料品製造事業所', '2024-06-01', '個人経営等を除く。飲料等は別分類。', 'https://www.e-stat.go.jp/stat-search/file-download?fileKind=2&statInfId=000040312266'),
    (7, '訪問介護：請求前例外監査', '37,264', '事業所', '2024-10-01', '全規模。複数サービス提供事業所はサービスごとに計上。', 'https://www.mhlw.go.jp/toukei/saikin/hw/kaigo/service24/dl/sankouhyou.pdf'),
    (8, '有料職業紹介：法定台帳締め', '31,486', '事業所', '2025-03-31', '許可事業所。2025-04-01時点の事業者25,159の94.3%は1事業所。', 'https://www.mhlw.go.jp/content/11650000/001584721.pdf'),
    (9, '税理士：月次説明パック', '30,479', '会計士・税理士事業所', '2021-06-01', '公認会計士事務所との合算。別指標の税理士登録者は82,297人（2026-06-30）。', 'https://www.meti.go.jp/statistics/tyo/census/r3result/pdf/r03_service_giy.pdf'),
    (10, '広告・制作：月次クローズ', '9,085 / 8,619', '広告業 / デザイン業事業所', '2021-06-01', '互いに別分類。コンサルや制作全体のTAMではない。', 'https://www.meti.go.jp/statistics/tyo/census/r3result/pdf/r03_service_giy.pdf')
)
SELECT *
FROM market_indicators
ORDER BY sort_order;

-- Query 3: 12か月で獲得した顧客コホートの年換算売上ランレート
-- 年換算ランレートは12か月の解約不能契約価値でも、当年の売上・入金でもない。
WITH som_scenarios(
  scenario,
  reachable_accounts,
  paid_conversion_rate,
  annualized_revenue_per_customer_jpy,
  acquisition_hours_per_reached_account,
  onboarding_hours_per_customer,
  monthly_support_hours_per_customer,
  note
) AS (
  VALUES
    ('保守', 300, 0.02, 240000, 0.75, 8.0, 1.0, '25社/月へ個別接触。6社獲得。'),
    ('基準', 600, 0.04, 360000, 0.75, 8.0, 1.5, '50社/月へ個別接触。24社獲得。'),
    ('上振れ', 800, 0.06, 600000, 0.75, 10.0, 2.0, '約67社/月へ個別接触。48社獲得。サポート容量の再設計が前提。')
)
SELECT
  scenario,
  reachable_accounts,
  ROUND(paid_conversion_rate, 2) AS paid_conversion_rate,
  CAST(ROUND(reachable_accounts * paid_conversion_rate) AS INTEGER) AS new_customers,
  annualized_revenue_per_customer_jpy,
  CAST(ROUND(reachable_accounts * paid_conversion_rate * annualized_revenue_per_customer_jpy) AS INTEGER) AS annualized_run_rate_jpy,
  CAST(ROUND(reachable_accounts * acquisition_hours_per_reached_account) AS INTEGER) AS acquisition_hours_year,
  CAST(ROUND(reachable_accounts * paid_conversion_rate * onboarding_hours_per_customer) AS INTEGER) AS onboarding_hours_year,
  ROUND(reachable_accounts * paid_conversion_rate * monthly_support_hours_per_customer, 1) AS support_hours_month_at_full_cohort,
  note
FROM som_scenarios
ORDER BY reachable_accounts;
