# プロダクト計画書: SME Copilot – 経営アクションレポート自動生成システム(AIウェブ検索版)
## 1. プロダクト概要
### 名称(仮)
SME Copilot – 経営アクションレポート自動生成システム
### コンセプト
「法人番号がなくても、社名と所在地だけで税務チェック・統計コメント・補助金候補・アクションリストを自動生成する“中小企業向け経営OS”」
### 対象ユーザー
- 税理士・会計事務所(メイン)
- 中小企業経営者
- 中小企業診断士
### MVPのゴール
1. 社名と所在地(法人番号は任意)を入力
2. MCPツールがウェブ検索+LLM要約で企業プロファイルを取得(出典URL付き)
3. 法令条文と地域統計を組み合わせ、LLMがA4 1枚のアクションレポートを返す
## 2. 使用API(MVP)
### 2-1. ウェブ検索+LLM(汎用検索API)
- Bing Web Search / SerpAPI / OpenAIブラウジング等を切り替え可能にする
- 社名・所在地をキーに企業プロファイルを要約取得
### 2-2. 法令API(デジタル庁)
- 税法(所得税法・法人税法など)の条文取得
- 条・項・号単位で取得し、LLMに渡す
### 2-3. e-Stat API(総務省・政府統計)
- 地域×産業の基礎統計(事業所数・従業者数)
- 経営レポートの簡易コメント材料として使用
## 3. 全体アーキテクチャ(MVP構成)
### 3-1. 構成図(テキスト)
ユーザー → ChatGPT(MCP接続) → MCPサーバ(Node.js) → 外部API(検索API / 法令API / e-Stat) → LLMで統合 → レポート生成(テキスト or PDF)
### 3-2. MCPサーバの役割
- APIごとの複雑な処理を隠蔽
- LLMが1回の会話で複数ツールを組み合わせられるようにする
- レスポンスはJSONで返し、LLM側でレポート組み立て
## 4. 機能要件(MVP)
### F-1 企業プロファイル取得(法人番号なしで可)
- **入力**: 社名(必須)、所在地またはドメイン(任意)、法人番号(任意)
- **処理**: 汎用ウェブ検索→LLM要約→候補提示→出典URL付与
- **出力**: 商号、所在地、法人格、公式サイトURL、法人番号(取得できた場合)、取得日時、出典URL
### F-2 法令条文取得
- **入力**: 法令名 or lawID、条番号、項番号
- **処理**: 法令API
- **出力**: 条文原文テキスト、階層情報(条/項/号)
- **対象法令(初期)**: 法人税法、所得税法、消費税法
### F-3 地域統計の取得
- **入力**: 都道府県コード or 名称、産業分類コード
- **処理**: e-Stat API
- **出力**: 事業所数、従業者数、年度
### F-4 LLMによるレポート生成
- **入力**: 企業プロファイル、法令条文、地域統計
- **出力**: 今月の税務リスク、関連条文要約、地域産業動向コメント、補助金・支援策案、アクションリスト(5〜10項目)
### F-5 PDFエクスポート(任意)
- MVPではテキスト優先。後続でPDF出力を追加。
## 5. 非機能要件(MVP)
### N-1 性能
- 1リクエストあたり5秒以内を目標(検索APIとLLMレスポンスに依存)
### N-2 保守性
- APIクライアントを分離(検索 / 法令 / e-Stat)
- MCPツールとクライアントを疎結合化
### N-3 拡張性
- 検索プロバイダを差し替えられるインタフェースを用意
- 将来のAPI追加(ミラサポ、官公需、EDINETなど)を想定
### N-4 プライバシー/コンプライアンス
- PIIはログ出力しない
- 検索結果キャッシュは短期TTLで保持し、ユーザー承認後のみ永続化
## 6. MCP ツール仕様(MVP)
### 6-1 lookup_company
**ウェブ検索+LLM要約**
- **入力**:
```json
{
"company_name": "株式会社〇〇",
"address": "東京都千代田区…",
"force_refresh": false
}
```
- **出力**:
```json
{
"name": "株式会社〇〇",
"address": "東京都千代田区…",
"legal_form": "株式会社",
"corporate_number": "1234567890123", // 取得できた場合のみ
"website": "https://example.co.jp",
"sources": ["https://example.com/page"],
"fetched_at": "2025-12-03T01:23:45Z"
}
```
### 6-2 get_law_article
**法令API**
- **入力**:
```json
{
"law_name": "法人税法",
"article": "34",
"paragraph": "1"
}
```
- **出力**:
```json
{
"law_name": "法人税法",
"article": "34",
"paragraph": "1",
"text": "(条文原文)"
}
```
### 6-3 get_region_stats
**e-Stat API**
- **入力**:
```json
{
"prefecture": "石川県",
"sector_code": "E"
}
```
- **出力**:
```json
{
"establishments": 3200,
"employees": 23400,
"year": 2023
}
```
## 7. データ項目定義
### 7-1 企業プロファイル
| 項目 | 型 | 説明 |
| --- | --- | --- |
| name | string | 商号 |
| address | string | 所在地 |
| legalForm | string | 法人格 |
| corporateNumber | string | 取得できた場合のみ |
| website | string | 公式サイトURL |
| sources | string[] | 出典URLの配列 |
| fetchedAt | string | ISO8601取得日時 |
### 7-2 条文データ
| 項目 | 型 | 説明 |
| --- | --- | --- |
| lawName | string | 法令名 |
| article | string | 条番号 |
| paragraph | string | 項番号 |
| text | string | 条文原文 |
### 7-3 統計データ
| 項目 | 型 | 説明 |
| --- | --- | --- |
| region | string | 地域名 |
| establishments | number | 事業所数 |
| employees | number | 従業者数 |
| year | number | 年度 |
## 8. 画面仕様(任意)
- 初期は不要。必要なら以下を想定:
- 入力フォーム: 社名、所在地、業種、任意の法人番号
- 出力: レポートテキスト、出典リンク、PDF出力(将来)
## 9. 出力レポート仕様(A4 1枚)
1. 顧問先情報(社名・所在地・法人格・法人番号(任意)・出典)
2. 今月の税務リスク(要点3〜5件)
3. 関連条文(抜粋+要約)
4. 地域産業動向(統計+LLMコメント)
5. 補助金・支援策(簡易候補)
6. 今月やるべきアクションリスト(5〜10項目)
## 10. 処理フロー
1. ChatGPTから「◯◯株式会社の今月レポート」と依頼
2. LLM → MCPの `lookup_company` でプロファイル取得(ウェブ検索)
3. LLM → `get_law_article` を複数呼び条文収集
4. LLM → `get_region_stats` で地域統計取得
5. 取得データをLLMが統合しレポート生成
6. ユーザーにテキスト or PDFとして返却
## 11. 制約・前提
- 検索APIのレート制限あり
- 法令APIはXML形式のためJSONへ整形が必要
- 税務判断は情報提供レベルにとどめ、免責を明記
- 検索結果には誤情報が含まれる可能性があるため、出典URL提示とユーザー承認を必須にする
## 12. 次に作るべき実装リスト(タスク分解)
### タスク1 検索プロバイダ抽象化
- Bing / SerpAPI / OpenAIブラウジングを切り替えるIFを用意
- `.env`でプロバイダとAPIキーを設定できるようにする
### タスク2 `lookup_company` ツール
- 検索→スクレイプ要約→候補マージ→JSON整形
- 取得結果に出典URLと取得日時を付与
- 短期キャッシュ(メモリ or SQLite)を実装
### タスク3 法令APIクライアント
- 条文取得、XMLパース、条/項/号の整形
### タスク4 e-Stat APIクライアント
- 都道府県→統計コード変換
- 事業所数・従業者数取得
### タスク5 レポート生成プロンプト
- 企業プロファイル+条文+統計を入力にA4テンプレで出力
- 出典URLと免責文を付ける
### タスク6 エンドツーエンド動作確認
- `npm run build` → `npx ts-node test_script.ts` で主要ツールを呼び出すシナリオテスト