An interactive geopolitical news analysis platform built as a ChatGPT App using the Skybridge SDK. Select any country on the map to receive AI-generated analysis of current political news, organized by topic with source attribution. Test it out at https://politicalmap-landing.fly.dev/ !
Political Map aggregates news from multiple sources, analyzes content using LLMs, and presents findings through an interactive world map interface. The application runs as an MCP (Model Context Protocol) server that integrates directly with ChatGPT.
- Interactive world map with country selection and smooth animated panning
- Real-time news aggregation from Yahoo News via headless browser scraping
- AI-powered topic extraction and categorization (finance, energy, defense, climate, technology, elections)
- Multiple research modes: Standard, Diversity, Deep Report, and Custom
- Government information display for selected countries
- Connection visualization between related countries
- Client-side caching for instant mode switching
- Responsive dark theme UI
Political Map was built during the ORIGIN AI Founders Hackathon (Paris, January 2026), an event focused on building real products using ChatGPT Apps and MCP servers with a strong emphasis on:
- Technical execution with AI tools
- Clear business value
- Proof of user adoption and traction within days
Over four days, we designed, built, deployed, tested, and validated Political Map with real users including students and journalists. The project demonstrated how MCP-based tools, real-time web data, and LLM reasoning can be combined into a usable interface for understanding complex geopolitical relationships.
Political Map was awarded 1st Place among 50 selected participants for:
- Turning real-time geopolitical news into an explorable relationship system
- Effective use of MCP, Lightpanda, and ChatGPT integration
- Demonstrated user interest and professional feedback during the event
- A clear path from prototype to a credible product
This repository contains the exact codebase that powered the winning demo.
app-political-map/
├── server/src/
│ ├── server.ts # MCP tool definitions
│ ├── pipeline.ts # News fetching and LLM analysis
│ └── middleware.ts # Express middleware
└── web/src/
└── widgets/
└── political-news-pipeline.tsx # React widget
The server exposes a single synchronous MCP tool (political-news-pipeline) that:
- Scrapes news articles using Lightpanda (headless browser API)
- Sends articles to OpenRouter for LLM analysis
- Returns structured topic groups with summaries and source references
- Node.js 24+
- Lightpanda API key for headless browsing
- OpenRouter API key for LLM access
- HTTP tunnel such as ngrok for local development
cd app-political-map
npm installCreate a .env file:
LIGHTPANDA_API_KEY=your_lightpanda_key
OPENROUTER_API_KEY=your_openrouter_key
OPENROUTER_MODEL=openai/gpt-4o-mini
Start the development server:
npm run devThis launches:
- Express server on port 3000 with MCP endpoint at
/mcp - Vite HMR dev server for the React widget
-
Expose your local server:
ngrok http 3000
-
In ChatGPT, navigate to Settings > Connectors > Create
-
Add the ngrok URL with
/mcpsuffix (e.g.,https://abc123.ngrok-free.app/mcp)
npm run inspector| Mode | Description |
|---|---|
| Standard | Balanced analysis with mainstream sources, optimized for speed |
| Diversity | Prioritizes varied perspectives from multiple regions and viewpoints |
| Deep Report | Comprehensive analysis with extensive cross-source verification |
| Custom | Manual control over source trust, diversity, evidence threshold, language scope, and search depth |
Deploy to production using Alpic:
npm run buildThen configure your ChatGPT connector with your production URL.
Analyzes political news for specified countries.
Parameters:
| Name | Type | Required | Description |
|---|---|---|---|
| countries | string[] | Yes | Array of country names to analyze |
| researchMode | object | No | Research mode configuration |
| forceRefresh | boolean | No | Bypass cache and fetch fresh data |
Response:
Returns a structured analysis containing:
- Topic groups with importance scores (1-10)
- Summary points per topic
- Article references with source attribution
- Category classification for filtering
- React 19 with TypeScript
- Skybridge SDK for ChatGPT integration
- react-simple-maps for map visualization
- Playwright/Lightpanda for web scraping
- OpenRouter API for LLM access
- Tailwind CSS with Radix UI components
- Express.js server with MCP protocol support
Proprietary