# 03. Product

## Truner 製品アーキテクチャ

### Layer 1: SNS Ingestion（SNS取り込み層）
- **Instagram Graph API**（OAuth 2.0）: 投稿・いいね・ハッシュタグ・ストーリー
- **X API v2**（OAuth 2.0 PKCE）: ポスト・いいね・リポスト・フォロー関係
- 権限スコープは最小限（読み取りのみ）
- 初回12ヶ月分をバルクfetch、以降は毎週差分更新

### Layer 2: AIタグ抽出層
- **マルチモーダルAI**（Gemini 3.1 Flash / GPT-5.5 mini）
- 投稿テキスト + 画像キャプション + ハッシュタグ + 絵文字パターン を統合解析
- 出力：細粒度タグを30〜80個／ユーザー、各タグに *活動度スコア*（0〜1）
- タグオントロジーは独自構築（約8,000種、階層構造）
  - 例：「食」→「ラーメン」→「ラーメン二郎」
  - 例：「音楽」→「Jロック」→「Mr.Children」

### Layer 3: 相性スコア算出層
```
score = w1 × common_tags_count
      + w2 × tag_rarity_score（希少タグが共通の方が高評価）
      + w3 × activity_level_match
      + w4 × age_distance_score
      + w5 × geographic_proximity
      + w6 × time_pattern_similarity
```
- 重みは機械学習で最適化（マッチング→実際に会った→良かったのシグナルで学習）
- Cold Start対策：新規ユーザーには「人気タグ多数所有者」を初期リコメンド

### Layer 4: UI / リコメンド層
- React Native（iOS/Android共通）
- 毎朝9:00に「今日のリコメンド5人」プッシュ通知
- 共通タグを会話スターターとして自動生成（例：「お互い深夜ドライブが好きみたいです、おすすめコース教えてください」）

---

## 5つの主要画面

### ① Home（ホーム）
- 「Good evening, Yukiさん」挨拶
- 今日のTop 1 リコメンド大カード（相性%ゴールド強調）
- 共通タグピル3〜5個表示
- 「会話を始める」CTA

### ② Match（相性）
- 今日の5人リコメンドリスト
- 各カード: 相性%（ゴールド） / ファーストネーム＋年齢 / 共通タグ3つ
- スワイプではなくスクロール。Like / Pass ボタン

### ③ Tags（自分のタグ）
- SNS連携済みバッジ（Instagram ✓ X ✓）
- AIが抽出した自分のタグを放射状チャート表示
- タグをタップで「このタグを持つ他ユーザー」へ遷移
- ユーザー編集可能（タグ削除・追加）

### ④ Chat（チャット）
- マッチ済み相手とのメッセージUI
- アバターは英字イニシャル（写真は相互合意でのみ共有）
- AIが会話スターター提案（共通タグベース）

### ⑤ Profile（プロフィール）
- SNS連携状態
- プラン表示（Free / Plus / Premium）
- プライバシー設定：タグ公開範囲、SNS再解析頻度、データダウンロード

---

## AIタグ例（田中太郎・30歳・エンジニア）

**食** 🍽️: ラーメン二郎、スープカレー、町中華、クラフトビール
**趣味** 🎮: サッカー観戦（FC東京）、サウナ、深夜ドライブ、DIY
**音楽** 🎵: Mr.Children、RADWIMPS、米津玄師、90sJPOP
**映像** 🎬: ノーラン映画、韓国ドラマ、アニメ（鬼滅の刃）
**読書** 📚: ビジネス書、SF小説、村上春樹
**ライフスタイル** 🌿: 観葉植物、ミニマリスト、キャンプ初心者
**テック** 💻: React、クラウド、AIツール、ガジェット

---

## プライバシー設計

- SNSデータは *タグ抽出後、原データは7日以内に削除*（保持はタグのみ）
- ユーザーが削除リクエストすれば即時全削除
- SNS側の権限は読み取りのみ、投稿・DMには一切アクセスしない
- 自分のタグ可視化は *自分だけ*（他人には共通タグのみ見える）
- タグ編集可能（「このタグは違う」を削除できる）

---

## 技術スタック

- **Frontend**: React Native + Expo + TypeScript
- **Backend**: Next.js 15 + Node.js + tRPC
- **DB**: PostgreSQL（ユーザー）＋ Pinecone（タグベクトル）
- **AI**: Gemini 3.1 Flash（タグ抽出）/ OpenAI Embeddings v4（類似度）
- **Infra**: AWS（Tokyo region）＋ Cloudflare
- **Auth**: Firebase Auth + OAuth（Instagram / X / Apple）
