venezuela-fakenews
Venezuela FakeNews — Portal de Verificación + Chatbot Sismo
Monorepo para combatir desinformación sobre Venezuela, enfocado en el sismo de junio 2026. Incluye un portal web de verificación de claims (Verdadero/Falso/Dudoso), un chatbot temático, y un servidor MCP para asistentes de IA.
Key Features
Portal de verificación — Ingresá un claim, obtené veredicto con nivel de confianza, explicación, patrones detectados y fuentes oficiales
Chatbot del sismo — Respondé preguntas sobre daños, víctimas, ayuda humanitaria y desinformación detectada
6+ patrones de desinformación implementados y detectables (videos descontextualizados, contenido IA, usurpación de canales, falsos anuncios, operaciones YouTube, desinformación salarial)
Servidor MCP para que asistentes de IA consuman la misma base de conocimiento
Búsqueda Tavily opcional — consultas en tiempo real a fuentes confiables
Historial de verificaciones persistido en SQLite
Tech Stack
Capa | Tecnología |
Frontend | Astro o Next.js (decisión pendiente) |
Backend | Hono + Bun |
ORM | Drizzle |
Base datos | SQLite |
API | oRPC (type-safe) |
Búsqueda | Tavily Search API |
Validación | Zod |
Monorepo | Bun workspaces |
MCP Server |
|
Architecture
venezuela-fakenew/
├── apps/
│ ├── frontend/ ← Portal web (Astro o Next.js)
│ └── backend/ ← API Hono + oRPC + Drizzle
├── packages/
│ ├── core/ ← Lógica compartida (PATTERNS, verify, key facts)
│ └── mcp-server/ ← Servidor MCP para asistentes IA
└── docs/ ← Notas e investigaciónEl backend expone procedures oRPC (verifyClaim, getPatterns, chat, searchSources, getKeyFacts) que consume el frontend y potencialmente el MCP.
Equipo
Nombre | Rol | Contacto |
Michel Novellino | Frontend (Diseño) | |
Carlos Gallardo | Frontend | |
Stephan Calderín | Backend + Deployment | |
Blure | Backend + BD | |
José Alejandro Castro | Coordinación + MCP/Core |
Project Status
Fase 1 — Definición y Diseño (27 de junio 2026). Decisiones pendientes:
Stack frontend (Astro vs Next.js)
Integración LLM (Tavily + reglas vs LLM real)
Plataforma de deploy
Nombre del producto
Servidor MCP (packages/mcp-server)
El servidor MCP se ejecuta como subproceso del host (opencode, Claude Desktop, etc.) vía STDIO.
Prerequisites
Node.js 18+ (20+ recomendado)
(Opcional) API key de Tavily
Getting Started
bun install
bun run build
bun run inspect # Probar con inspector MCPHerramientas expuestas
Tool | Input | Output |
| Ninguno | Lista de 6 patrones con ejemplos y detección |
|
| Análisis + patrones coincidentes + búsqueda web |
|
| Fuentes confiables (USGS, IOM, Reuters, etc.) |
|
| Reporte estructurado con datos del cuaderno |
Configuración en OpenCode
{
"mcpServers": {
"venezuela-fakenews": {
"command": "node",
"args": ["<path>/packages/mcp-server/dist/index.js"]
}
}
}Variables de entorno
Cada paquete trae su archivo de ejemplo — cópialo y rellená los valores.
Paquete | Archivo ejemplo | Copiar a |
|
|
|
|
|
|
|
|
|
Backend (apps/backend)
En local viven en .dev.vars; en producción se setean como secrets del Worker (bunx wrangler secret put <NOMBRE>). Nunca los pongas en [vars] de wrangler.toml — se escriben en texto plano y pisan el secret.
Variable | Requerida | Descripción |
| Sí | URL de la base libSQL/Turso ( |
| Sí | Token de auth de Turso. |
| Sí | Key del LLM. Una |
| No | Modelo a usar. Default: |
| No | Base URL OpenAI-compatible (Groq, HuggingFace…). Omitir para Anthropic/OpenAI. |
| Sí | Key de Tavily para búsqueda en tiempo real. |
| Sí (prod) | Orígenes exactos permitidos, separados por coma. Si esto y |
| No | Regex anclado para orígenes dinámicos (p. ej. cualquier puerto de localhost en dev). |
Frontend (apps/frontend)
Astro: solo las variables con prefijo PUBLIC_ llegan al cliente.
Variable | Requerida | Descripción |
| Sí | URL base del backend; el cliente le añade |
| No |
|
MCP server (packages/mcp-server)
Variable | Requerida | Descripción |
| No | Sin ella, |
License
MIT