実績・プロジェクト/Pulpulitiko
フィリピンのための高性能な市民インテリジェンス・政治透明化プラットフォーム。深い関係性エンティティグラフ、主権債務分析、そしてネイティブなModel Context Protocol(MCP)AI統合を特徴とする。

Pulpulitikoは、フィリピンのためのオープンな市民インテリジェンス・政治透明化プラットフォームです。標準的なニュースフィードとして機能するのではなく、政治家を中心的な関係ノードとして国内の政治情勢を構造化し、歴代大統領政権(1965年〜現在)を、過去の主権債務記録、対外借款イベント(世界銀行、ADB、JICA、中国)、毎年のSALN資産開示、そして機密・情報活動資金(CIF)に結びつけます。プラットフォームには、市民討論スレッド、検証済み世論調査、地域住民の有権者教育、そして「My Representatives」位置情報検索機能が統合されています。Pulpulitikoは、OAuth 2.0とAPIキーによるセキュリティを備えた組み込みのModel Context Protocol(MCP)サーバーを通じて、AI対応の市民データベースとしても機能し、AIエージェントが構造化されたツールコールを通じて政治資金、法案履歴、債務指標を直接照会できるようにします。
Key architectural decisions, concrete code implementations, and performance wins behind this project.
Click any node below to inspect its role, tech stack, and engineering implementation.
Server-side rendered bilingual interface with responsive dark mode and instant navigation.
Engineering Highlights:
政治報道プラットフォームは通常、政治家を単なるテキストタグとして扱い、在任中に生じた構造的債務、対外借款義務、財政記録から政治家を切り離してしまっている。
政治家を中心エンティティとしてデータベースを再設計し、外部キー関係とインデックスを主権債務返済記録(1965年〜現在)、対外借款イベント、年次資産開示にわたって強制した。
調査報道記事はしばしば多様な市民エンティティ(政治家、二国間融資パッケージ、主権債務記録)の組み合わせを扱うが、任意の関係性を効率的かつ非破壊的にモデル化する手段がなかった。
複合ユニーク制約とデュアルB-treeインデックスを備えたポリモーフィックなリンクテーブルを構築し、編集コンテンツが任意のエンティティタイプに動的に紐付けられるようにしつつ、重複参照を防止した。
Claudeなどの現代的な外部AIエージェントやカスタムリサーチエージェントは、HTMLスクレイピングや認証回避なしに、プラットフォームの市民データベースへプログラム的・安全・構造的にリアルタイムアクセスする必要がある。
mark3labs/mcp-goを使用したネイティブGo製MCPサーバーを組み込み、19のモジュール式ツールレジストリを備え、RFC準拠のOAuth 2.0とAPIキーセキュリティによりstdioとHTTP両トランスポートをサポート。
ユーザー生成コメントやリッチな政治記事は、サードパーティメディアやソーシャルiframeを埋め込む際にXSS攻撃やReDoS脆弱性のベクターとなり得る。
CSSクラスを制限し、DoS攻撃対策として長さ制限を強制し、データベース永続化前にiframeを承認済みドメインのみに厳格に制限する、Go Bluemondayによる厳格なサニタイゼーションポリシーを実装。
静的なrobots.txt設定は、本番以外のステージング環境をウェブクローラーに晒したり、サイトマップに誤ったlocalhostドメインをインデックスさせるリスクがある。
実行時のサイトURLをサイトマップディレクティブに動的に注入し、24時間のエッジキャッシュヘッダーを適用し、管理・認証ルートへのクローラーアクセスをブロックする、サーバーレンダリング型Nuxt 3ルートハンドラーを構築。
// community_discussion
Have thoughts, questions, or ideas regarding this system's architecture? Leave a comment below with your GitHub account.