対象 / Scope: Reftrix Preference Profiling, Part-Level Analysis & Section Visual Embedding 最終更新 / Last Updated: 2026-03-13 バージョン / Version: 1.2.0
Reftrixは、デザイン検索結果をユーザーの嗜好に基づいてパーソナライズするためにプロファイリングを行います。具体的には、ユーザーのデザインに対するフィードバック(好み・不満・コメント)を蓄積し、嗜好プロファイルを構築します。このプロファイルは検索結果のリランキング(スコア調整)に使用され、ユーザーにとってより関連性の高いデザインパターンが上位に表示されるようになります。
Reftrix performs profiling to personalize design search results based on user preferences. Specifically, it accumulates user feedback on designs (likes, dislikes, comments) to build a preference profile. This profile is used for search result reranking (score adjustment), ensuring that design patterns more relevant to the user appear higher in results.
主な用途 / Primary Uses:
- デザイン検索結果のリランキング(preference embeddingとsearch resultsのコサイン類似度に基づくスコア調整) / Search result reranking (score adjustment based on cosine similarity between preference embedding and search results)
- ユーザーのデザイン嗜好の学習と検索体験の継続的な向上 / Learning user design preferences for continuous search experience improvement
プロファイリングの性質 / Nature of Profiling:
本プロファイリングは、検索結果の表示順序の調整のみを目的としています。法的効果やそれに類する重大な影響をデータ主体に対して生じさせるものではありません(GDPR Art. 22(1)の適用範囲外)。
This profiling is solely for adjusting the display order of search results. It does not produce legal effects or similarly significantly affect the data subject (outside the scope of GDPR Art. 22(1)).
| データ項目 / Data Item | カラム / Column | 説明 / Description |
|---|---|---|
| 嗜好テキスト / Preference text | preference_text |
Claudeエージェントがフィードバックから生成した嗜好サマリテキスト(10-1000文字) / Preference summary text generated by Claude agent from feedback (10-1000 chars) |
| 嗜好ベクトル / Preference embedding | preference_embedding |
preference_textから生成された768次元ベクトル(multilingual-e5-base) / 768-dimensional vector generated from preference_text (multilingual-e5-base) |
| 個別フィードバック / Individual feedback | preference_signals |
個別フィードバック記録: signal_type (hearing_positive/hearing_negative/hearing_neutral), signal_weight, target_type, target_id, feedback_text / Individual feedback records |
| フィードバック回数 / Interaction count | interaction_count |
累積フィードバック回数 / Cumulative feedback count |
| タイムスタンプ / Timestamps | created_at, updated_at |
プロファイル作成日時・最終更新日時 / Profile creation and last update timestamps |
- アーキテクチャ / Architecture: ローカルファースト・シングルユーザー構成(データはユーザーのローカルPostgreSQLに保存) / Local-first, single-user architecture (data stored in user's local PostgreSQL)
- データ主体 / Data Subjects: Reftrix MCPツールを使用する個人ユーザー / Individual users of the Reftrix MCP tool
- データカテゴリ / Data Category: デザイン嗜好に関する個人データ(デザインの好み・フィードバックテキスト) / Personal data related to design preferences (design likes/dislikes, feedback text)
| 法的根拠 / Legal Basis | 条項 / Article | 適用 / Application |
|---|---|---|
| 同意 / Consent | Art. 6(1)(a) | ユーザーが preference.hear MCPツールを明示的に使用することでフィードバックを提供。自発的な操作に基づく。 / User explicitly provides feedback by using the preference.hear MCP tool. Based on voluntary action. |
| 正当な利益 / Legitimate interest | Art. 6(1)(f) | ユーザーが自発的にツールを使用し、検索結果のパーソナライズを求めた場合。 / When the user voluntarily uses the tool and seeks personalized search results. |
Reftrixのプロファイリングは、検索結果のスコア調整(リランキング)に限定されており、以下の理由からArt. 22(1)の制限の対象外です:
Reftrix's profiling is limited to search result score adjustment (reranking) and is outside the restrictions of Art. 22(1) for the following reasons:
- 法的効果なし / No legal effects: 検索結果の表示順序変更は、データ主体に対する法的効果や契約上の影響を生じさせない / Changes to search result display order do not produce legal effects or contractual impacts on the data subject
- 重大な影響なし / No similarly significant effects: デザインパターンの表示順序は、データ主体の権利・自由・利益に対して重大な影響を及ぼさない / Design pattern display order does not significantly affect the data subject's rights, freedoms, or interests
- ユーザーコントロール / User control: ユーザーはいつでもプロファイルをリセットまたは完全削除可能 / Users can reset or completely delete their profile at any time
- GDPR Art. 13/14: 新規プロファイル作成時に
profiling_noticeをレスポンスに含めて通知(セクション7参照) / Notification viaprofiling_noticein response when creating a new profile (see Section 7) - GDPR Art. 12: 本ドキュメントおよび
DATA_RETENTION.mdにより、処理に関する情報を明確かつ平易な言語で提供 / This document andDATA_RETENTION.mdprovide clear and plain language information about processing
嗜好プロファイルデータは、ユーザーが明示的に削除するまで保持されます。自動的な期限切れや定期削除はありません。
Preference profile data is retained until the user explicitly deletes it. There is no automatic expiration or scheduled deletion.
- GDPR Art. 5(1)(e) — 保存制限の原則: Reftrixはローカルファースト・シングルユーザーのMCPツールです。データはユーザーのローカル環境に保存され、ユーザーが継続的にツールを使用する間、検索品質の向上に寄与します。ユーザーが能動的に使用し続ける限り、パーソナライズ目的での保持は適切です。 / Storage limitation principle: Reftrix is a local-first, single-user MCP tool. Data is stored in the user's local environment and contributes to search quality while the user continues using the tool. Retention for personalization is appropriate while the user actively uses the tool.
| 方法 / Method | MCPツール / MCP Tool | 動作 / Behavior |
|---|---|---|
| ソフトリセット / Soft reset | preference.reset(profile_id, confirm: true) |
preference_text, preference_embedding をクリア。interaction_count を 0 にリセット。preference_signals はCASCADE削除。プロファイルレコード自体は残存。 / Clears preference_text, preference_embedding. Resets interaction_count to 0. preference_signals CASCADE deleted. Profile record remains. |
| 完全削除 / Hard delete | preference.reset(profile_id, confirm: true, hard_delete: true) |
プロファイルレコードおよび全関連シグナルを完全に物理削除。完全に不可逆。 / Permanently deletes profile record and all associated signals. Completely irreversible. |
詳細は DATA_RETENTION.md を参照してください。 / See DATA_RETENTION.md for details.
GDPRに基づき、データ主体は以下の権利を行使できます。ReftrixではすべてMCPツールを通じて直接行使可能です。
Under the GDPR, data subjects can exercise the following rights. In Reftrix, all rights can be exercised directly via MCP tools.
preference.get MCPツールにより、プロファイルに保存されている全データ(嗜好テキスト、フィードバック回数、作成日時、更新日時)を閲覧できます。
The preference.get MCP tool allows viewing all data stored in the profile (preference text, interaction count, creation date, update date).
preference.get({ include_signals: true }) により、全シグナルデータを含む構造化JSON形式でプロファイルデータをエクスポートできます。この形式は機械可読であり、別のシステムへのデータ移行にも使用可能です。
preference.get({ include_signals: true }) exports profile data in structured JSON format including all signal data. This format is machine-readable and can be used for data migration to another system.
プロファイルをリセット(preference.reset)した後、新規フィードバックをpreference.hearで提供することにより、プロファイルを再構築できます。
After resetting the profile (preference.reset), the profile can be rebuilt by providing new feedback via preference.hear.
preference.reset({ hard_delete: true }) により、プロファイルレコードおよび全関連シグナルを完全に物理削除できます。この操作は不可逆であり、監査証跡として全環境でlogger.warnが出力されます(PII truncate済み)。
preference.reset({ hard_delete: true }) permanently deletes the profile record and all associated signals. This operation is irreversible, and an audit trail is output via logger.warn in all environments (PII truncated).
preference.reset() (ソフトリセット)により、嗜好データをクリアしつつプロファイル枠を維持できます。リセット後は、嗜好に基づくリランキングが適用されなくなります。
preference.reset() (soft reset) clears preference data while maintaining the profile shell. After reset, preference-based reranking is no longer applied.
| 権利 / Right | GDPR条項 / GDPR Article | MCPツール / MCP Tool | パラメータ / Parameters |
|---|---|---|---|
| データアクセス / Data access | Art. 15 | preference.get |
profile_id |
| データエクスポート / Data export | Art. 20 | preference.get |
profile_id, include_signals: true |
| プロファイルリセット / Profile reset | Art. 18 | preference.reset |
profile_id, confirm: true |
| 完全削除 / Full deletion | Art. 17 | preference.reset |
profile_id, confirm: true, hard_delete: true |
# データアクセス(プロファイル閲覧) / Data access (view profile)
preference.get(profile_id: "<uuid>")
# データエクスポート(シグナル含む) / Data export (including signals)
preference.get(profile_id: "<uuid>", include_signals: true)
# プロファイルリセット(ソフト) / Profile reset (soft)
preference.reset(profile_id: "<uuid>", confirm: true)
# 完全削除(GDPR忘れられる権利) / Full deletion (GDPR Right to Erasure)
preference.reset(profile_id: "<uuid>", confirm: true, hard_delete: true)
新規プロファイルが作成された際(初回の preference.hear 呼び出し時)、レスポンスに profiling_notice フィールドが含まれます。これはGDPR Art. 13(データ主体から直接収集する場合の情報提供義務)およびArt. 14に基づく透明性要件を満たすものです。
When a new profile is created (on the first preference.hear call), the response includes a profiling_notice field. This fulfills the transparency requirements under GDPR Art. 13 (information obligations when collecting data directly from the data subject) and Art. 14.
profiling_notice には以下の情報が含まれます:
The profiling_notice includes the following information:
| 項目 / Item | 内容 / Content |
|---|---|
| メッセージ / Message | プロファイリングの開始を通知するメッセージ / Message notifying the start of profiling |
| 目的 / Purpose | デザイン検索結果のパーソナライズ / Personalization of design search results |
| 削除方法 / Deletion method | preference.reset ツールによる削除手順 / Deletion procedure via preference.reset tool |
| 保持ポリシー / Retention policy | 明示的削除まで保持(自動消去なし) / Retained until explicit deletion (no auto-purge) |
{
"success": true,
"data": {
"profile_id": "01926a3b-...",
"samples": [...],
"profiling_notice": {
"message": "A new preference profile has been created. Your design feedback will be used to personalize search results.",
"purpose": "Search result personalization via preference-based reranking",
"deletion_method": "Use preference.reset with hard_delete: true to permanently delete all profile data",
"retention_policy": "Data is retained until you explicitly delete it. No automatic expiration."
}
}
}2回目以降の preference.hear 呼び出しでは、profiling_notice は含まれません。プロファイリングに関する情報は、本ドキュメントおよび DATA_RETENTION.md からいつでも参照可能です。
On subsequent preference.hear calls, profiling_notice is not included. Information about profiling is available at any time from this document and DATA_RETENTION.md.
Part-Level Analysis は、Webページ内のUIパーツ(ボタン、フォーム、ナビゲーション等)を個別に抽出・分析し、component_parts / component_part_embeddings テーブルに保存する機能です。
Part-Level Analysis extracts and analyzes individual UI parts (buttons, forms, navigation, etc.) within web pages and stores them in the component_parts / component_part_embeddings table.
| データ項目 / Data Item | カラム / Column | 説明 / Description |
|---|---|---|
| パーツ種別 / Part type | partType |
16種類(button, link, image, video, form, input, heading, card, navigation, footer, cta, hero_image, icon, badge, tag, avatar) / 16 types |
| テキストベクトル / Text embedding | text_embedding |
パーツのテキスト内容から生成された768次元ベクトル(multilingual-e5-base) / 768-dimensional vector generated from part text content (multilingual-e5-base) |
| 視覚ベクトル / Visual embedding | visual_embedding |
パーツのスクリーンショットから生成された768次元ベクトル(DINOv2 ViT-B/14)。piiRiskLevel='high' の場合はスキップ(null) / 768-dimensional vector generated from part screenshot (DINOv2 ViT-B/14). Skipped (null) when piiRiskLevel='high' |
| バウンディングボックス / Bounding box | boundingBox |
ページ上のパーツ位置とサイズ(x, y, width, height) / Part position and size on page (x, y, width, height) |
| 計算済みスタイル / Computed styles | computedStyles |
CSSプロパティのJSON(色、フォント、余白等) / JSON of CSS properties (color, font, margin, etc.) |
| テキスト内容 / Text content | textContent |
パーツ内のテキスト(part.inspect でopt-in取得) / Text within the part (opt-in retrieval via part.inspect) |
| HTML内容 / HTML content | innerHTML |
パーツのHTML構造(part.inspect でopt-in取得) / HTML structure of the part (opt-in retrieval via part.inspect) |
| PII リスクレベル / PII risk level | piiRiskLevel |
none, low, medium, high の4段階 / 4 levels: none, low, medium, high |
| CSSクラス / CSS classes | cssClasses |
パーツに適用されているCSSクラス名 / CSS class names applied to the part |
| 属性 / Attributes | attributes |
パーツのHTML属性(JSON) / HTML attributes of the part (JSON) |
- アーキテクチャ / Architecture: ローカルファースト・シングルユーザー構成(Preference Profilingと同一) / Local-first, single-user architecture (same as Preference Profiling)
- データ主体 / Data Subjects: 分析対象Webページのコンテンツ所有者。ユーザー自身の個人データではなく、クロール対象サイトのUIコンポーネントに関するデータ / Content owners of analyzed web pages. Not the user's own personal data, but data about UI components of crawled sites
- データカテゴリ / Data Category: UIデザインパターンデータ。ただし、フォーム入力フィールドやパスワードフィールド等のパーツには間接的にPIIが含まれる可能性がある / UI design pattern data. However, parts such as form input fields and password fields may indirectly contain PII
Part-Level Analysisでは、パーツの種類と属性に基づいてPIIリスクレベルを自動判定し、リスクレベルに応じた保護措置を適用します。
In Part-Level Analysis, PII risk levels are automatically determined based on part type and attributes, and protective measures are applied according to the risk level.
| piiRiskLevel | 判定基準 / Criteria | 保護措置 / Protection |
|---|---|---|
high |
フォーム入力(パスワード、メールアドレス等)、個人情報を含むと推定されるコンポーネント / Form inputs (password, email, etc.), components estimated to contain personal data | visual embedding 生成をスキップ(visual_embedding = null) / Visual embedding generation skipped (visual_embedding = null) |
medium |
一般的なフォームフィールド、ユーザー入力エリア / General form fields, user input areas | 通常処理(visual embedding 生成あり) / Normal processing (visual embedding generated) |
low |
テキストブロック、メディア要素 / Text blocks, media elements | 通常処理 / Normal processing |
none |
ボタン、アイコン、ナビゲーション等の静的UIパーツ / Static UI parts such as buttons, icons, navigation | 通常処理 / Normal processing |
Part-Level Analysisは、ユーザーが page.analyze MCPツールを明示的に実行することでデータ収集が開始されます。ユーザーの自発的な操作に基づく処理です。
Part-Level Analysis data collection begins when the user explicitly executes the page.analyze MCP tool. Processing is based on the user's voluntary action.
- GDPR Art. 6(1)(f) — 正当な利益: ユーザーが自発的にツールを使用し、UIデザインパターンの分析・検索を求めた場合。 / Legitimate interest: When the user voluntarily uses the tool and seeks UI design pattern analysis and search.
component_parts / component_part_embeddings は web_pages テーブルに CASCADE 外部キーで紐づいています。WebPageレコードを削除すると、関連するすべての component_parts / component_part_embeddings が自動的に削除されます。
component_parts / component_part_embeddings is linked to the web_pages table via CASCADE foreign key. Deleting a WebPage record automatically deletes all associated component_parts / component_part_embeddings.
- GDPR Art. 17(忘れられる権利) / Right to Erasure: WebPageの削除により、全関連
component_parts/component_part_embeddings(テキスト内容、ベクトル、バウンディングボックス、スタイル情報を含む)が完全に物理削除されます。 / Deleting a WebPage permanently removes all associatedcomponent_parts/component_part_embeddings(including text content, vectors, bounding boxes, and style information).
詳細は DATA_RETENTION.md を参照してください。 / See DATA_RETENTION.md for details.
Part-Level Analysisに加え、セクション単位でもDINOv2 ViT-B/14によるvisual embeddingを生成します。セクションのスクリーンショット領域(startY/height)をcropし、768次元のL2正規化ベクトルをsection_embeddings.vision_embeddingに保存します。
In addition to Part-Level Analysis, visual embeddings are also generated at the section level using DINOv2 ViT-B/14. The section screenshot area (startY/height) is cropped and a 768-dimensional L2-normalized vector is stored in section_embeddings.vision_embedding.
| 条件 / Condition | 動作 / Behavior |
|---|---|
| セクション高さ < 10px / Section height < 10px | visual embedding スキップ(null) / Visual embedding skipped (null) |
piiRiskLevel='high' パーツを含むセクション / Section containing piiRiskLevel='high' parts |
visual embedding スキップ(null)— GDPR Art. 5(1)(c) データ最小化 / Visual embedding skipped (null) — GDPR Art. 5(1)(c) data minimisation |
| スクリーンショット未取得 / Screenshot unavailable | text embedding のみ保持 / Only text embedding retained |
削除方法はPart-Level Analysisと同様、WebPageレコードのCASCADE削除で自動実行されます。
Deletion follows the same CASCADE pattern as Part-Level Analysis — automatically executed when a WebPage record is deleted.
| ドキュメント / Document | 内容 / Description |
|---|---|
DATA_RETENTION.md(同ディレクトリ) / (same directory) |
データ保持ポリシー、削除方法の詳細、セキュリティ措置 / Data retention policy, deletion method details, security measures |
| ` | 嗜好プロファイリング監査是正ガイド(SEC/TDA/LCC 18項目のトリアージ結果) / Preference profiling audit remediation guide (SEC/TDA/LCC 18-item triage results) |
本ドキュメントは一般的な法的情報の提供を目的としており、特定の事案に対する法的助言を構成するものではありません。 具体的な法的判断が必要な場合は、資格を有する弁護士にご相談ください。
This document is intended to provide general legal information and does not constitute legal advice for any specific case. If specific legal judgment is needed, please consult a qualified attorney.
法的調査日 / Legal Research Date: 2026-03-13
- Art. 22 GDPR – Automated individual decision-making, including profiling
- Art. 13 GDPR – Information to be provided where personal data are collected from the data subject
- Art. 14 GDPR – Information to be provided where personal data have not been obtained from the data subject
- Rights related to automated decision making including profiling | ICO
- Writing a GDPR-compliant privacy notice (template included) - GDPR.eu
| 日付 / Date | バージョン / Version | 内容 / Description |
|---|---|---|
| 2026-03-13 | 1.2.0 | Section Visual Embedding プライバシー情報追加(PII保護、高さ制限、CASCADE削除) / Added Section Visual Embedding privacy information (PII protection, height limit, CASCADE deletion) |
| 2026-03-13 | 1.1.0 | Part-Level Analysis プライバシーセクション追加(PII保護措置、CASCADE削除) / Added Part-Level Analysis privacy section (PII protection measures, CASCADE deletion) |
| 2026-03-08 | 1.0.0 | 初版作成(LCC-5: プロファイリングセクション) / Initial version (LCC-5: Profiling section) |