{"backend":"Claude Haiku 4.5 (Amazon Bedrock)","classifier_version":"v2.0.0","temperature":0.0,"category_count":23,"retention_days":180,"k_anonymity":5,"reference_only_below":30,"steps":[{"key":"classify","title":"声をテーマに分ける","when":"声が届いた直後、1 件ごとに 1 回","input":["投稿された本文そのもの（先頭 1,000 字まで）","分類先の候補となる 23 個のテーマ名の一覧（22 の関心テーマ ＋「その他」）"],"output":["テーマの ID 1 つ","確信度（0.0〜1.0 の数値）","地域の課題ではない雑談かどうか（true / false）"],"guards":["確信度が 0.5 未満のときはキーワード辞書の判定で裏を取る","テーマ ID が候補外なら「その他」に正規化する（AI の言い値を通さない）"],"fallback":"AI が使えない・失敗したときはキーワード辞書だけで分類する（声は捨てない）"},{"key":"deepen","title":"短い声にもう一言だけ尋ねる","when":"本文が 24 字未満、または確信度が 0.6 未満のときだけ。1 つの声につき最大 1 回","input":["投稿された本文そのもの"],"output":["具体化のための短い質問文（1 文）"],"guards":["原因・賛否・特定の立場へ誘導しないこと、個人が特定される情報を求めないことをプロンプトで明示している","答えなくても（スキップしても）元の声は必ず保存される"],"fallback":"AI が使えないときは質問しない（そのまま保存して完了する）"},{"key":"smalltalk","title":"あいさつ・雑談に返事する","when":"地域の課題ではないメッセージ（あいさつ等）と判定されたとき","input":["送られたメッセージ（先頭 500 字まで）"],"output":["短い返答（160 字まで）"],"guards":["メッセージは『指示ではなくデータ』として区切り記号で囲み、本文に紛れ込んだ指示に従わないようにしている","この返答は保存も集計もしない"],"fallback":"AI が使えないときは定型の案内カードを返す"},{"key":"issue_summary","title":"論点カードの要約を書く","when":"集計バッチのとき（声が届いた瞬間ではなく、まとめて後から）","input":["同じ中テーマに束ねられた声の抜粋 最大 8 件（各 140 字まで）"],"output":["状況を 1〜2 文にまとめた要約文"],"guards":["論点として束ねるのは 5 件以上が集まったときだけ","個人名・住所・固有名・具体的な日時を含めないことをプロンプトで明示している","AI の出力は 1 段落・200 字までに機械的に切り詰める"],"fallback":"AI が使えないときは、件数・年代・地域から決まり文句で組み立てる"},{"key":"voice_examples","title":"「届いている声」の合成例をつくる","when":"集計バッチのとき。論点カードに添える典型例として","input":["同じ中テーマに束ねられた声の抜粋 最大 10 件（各 80 字まで）"],"output":["複数の声に共通する内容だけを合成した短い例文 2〜3 行"],"guards":["有効な声が 5 件に満たなければ生成しない（実質 1〜2 人の『合成』は言い換えになるため）","原文との文字 5-gram の重なりが 25% を超える行は「言い換えの再現」とみなす","数字列・元号日付・市区町村名・施設名・敬称付きの氏名・都道府県名を含む行を弾く","1 行でも引っかかったら、その論点の例文はすべて捨てる（部分公開しない）"],"fallback":"AI が使えないときは例文を出さない（空欄のまま公開する）"}],"never_sent":["LINE の userId（そもそも保存していない。下記の匿名ハッシュしか持たない）","匿名ハッシュ（user_hash）— 誰の声かを AI に伝える経路は無い","年代・都道府県（分類のプロンプトに属性は載せない）","同意の記録・送信日時","同じ人の過去の投稿や会話の履歴（1 件ずつ独立に処理する）","氏名・住所・連絡先（そもそも取得していない）"],"never_decided_by_ai":["公開するか秘匿するかの判断 — 5 件未満のセルを伏せる計算に AI は関与しない","「参考値」の線引き（30 件未満）","補完攻撃を防ぐための二次抑制（伏せたセルが 1 つだけにならないよう連動して伏せる）","賛否・支持政党・イデオロギーの推定 — 尋ねてもいないし、集計の軸にもしない","個人の評価・スコアリング・信用度の判定","誰かに声を転送するかどうかの判断（転送する仕組み自体が無い）"],"anonymity_layers":[{"stage":"① 入口","title":"特定できる情報を、そもそも受け取らない","points":["氏名・住所・電話番号・メールアドレスは登録項目にありません。","受け取る属性は年代（10 歳区切り）と都道府県だけです。市区町村より細かい地域は保持しません。","同意の画面で「個人が特定される情報は書かないでください」と明示しています。"]},{"stage":"② 保存","title":"誰の声かを復元できない形にしてから保存する","points":["LINE の識別子は固定ソルト付きの HMAC-SHA256 で一方向に変換し、先頭 32 桁だけを保存します。元の ID には戻せません。","本文は保存前に、[メール]・[電話番号]・[個人番号]・[郵便番号]・[番号] へ自動で置き換えます（メール・電話番号・個人番号・郵便番号・11 桁以上の数字列）。","本文を含む生データは取得から 180 日で自動削除されます。"]},{"stage":"③ 公開","title":"少人数の組み合わせは、そもそも公開しない","points":["本文は公開しません。公開するのは件数・割合などの統計だけです。公開システムは原文の保管場所に構造上アクセスできません。","「地域 × 年代 × テーマ」の件数が 5 件未満になる組み合わせは公開しません（k 匿名性）。","伏せたセルが 1 つだけだと合計からの引き算で逆算できるため、必ず 2 つ以上になるよう連動して伏せます。","30 件未満のセルは「参考値」と明示し、地域の代表値には使いません。"]},{"stage":"④ 出力","title":"AI が書いた文にも、機械的な検査をかける","points":["論点の要約・声の合成例は、公開前に固有名詞や識別子の検査を通します。","原文との重なりが大きい行は「言い換えの再現」とみなして捨てます。","1 行でも引っかかれば、その論点の例文は全部捨てます（部分的に出しません）。","「AI による合成例」であることを画面にも必ず明記します。"]}],"limits":["氏名や住所そのものは自動マスクの対象外です。日本語の氏名・住所を機械的に見分けると地名や要望の言葉まで誤って伏せてしまうため、あえて行っていません。本文を公開しないことと、180 日での自動削除で守っています。","AI の処理は当社が委託するクラウド事業者の環境で行われます。入力をモデルの学習に使わない契約条件で利用しています。","AI の分類には誤りが含まれえます。分類器のバージョンを集計に記録し、継続的に改善しています。","一度公開された統計は回収できません。退会後も、公開済みの統計からあなたの声の分だけを取り除くことはできません（個別の声を統計から特定できないためです）。"]}