Case Study · Information Intelligence

MENDINEWS Agent

Inteligencia ejecutiva sobre noticias con clasificación, digests y RAG cerrado

Alejandro Mendoza
Mayo 20269 min

FastAPI + Jobs

API y automatización

PostgreSQL + pgvector

persistencia semántica

Closed RAG

anti-hallucination

MENDINEWS Agent

No hacía falta leer más titulares. Hacía falta separar señal de ruido y responder solo desde evidencia real.

MENDINEWS Agent es una plataforma personal de inteligencia informativa pensada para monitoreo ejecutivo. Ingesta RSS y web, extrae texto legible, clasifica relevancia política y social, genera resúmenes ejecutivos, almacena embeddings en PostgreSQL con pgvector y expone un chat RAG cerrado que solo responde desde noticias indexadas.

Problema real#

Los equipos institucionales y tomadores de decisión no necesitan más volumen de noticias: necesitan detectar señal, priorizar contexto y evitar respuestas inventadas. Leer titulares crudos, navegar portales dispersos y depender de memoria humana genera ruido operativo y baja confiabilidad.

Solución#

Diseñé una pipeline de inteligencia ejecutiva que monitorea fuentes, extrae contenido, puntúa relevancia, genera digests estructurados y habilita consulta conversacional únicamente sobre evidencia indexada. El diseño optimiza para confiabilidad institucional antes que para fluidez conversacional.

Qué es la app#

MENDINEWS Agent funciona como una plataforma de monitoreo, enriquecimiento y retrieval sobre noticias. No es un chatbot genérico; es un sistema evidence-first que recolecta artículos, normaliza contenido, produce resúmenes ejecutivos y después habilita búsqueda semántica y preguntas con grounding explícito.

Capacidades principales#

●

Scraping RSS y web con fallback de extracción.

●

Clasificación por categoría, importancia, sentimiento y tags.

●

Resúmenes ejecutivos para briefings de alto valor.

●

Embeddings y búsqueda semántica en PostgreSQL con pgvector.

●

Chat RAG cerrado sobre noticias indexadas solamente.

●

Entrega por Telegram y arquitectura preparada para WhatsApp.

●

Jobs programados para scraping, digest, health check y preflight.

Base técnica (stack)#

TecnologíaRol en el sistema
Python 3.12Runtime principal de API, jobs y orquestación
FastAPIAPI HTTP y exposición OpenAPI
PostgreSQLPersistencia relacional de artículos y metadata
pgvectorEmbeddings y similarity search
Groq APIClasificación, summaries y grounded answers
APSchedulerScheduling in-process para scraping y digest
Telegram Bot APIEntrega ejecutiva y comandos operativos
Docker + ComposeRuntime portable para local, VPS o cloud
GitHub ActionsAutomatización de scraping, digest y deploy preflight

Estructura del proyecto#

●

`app/scrapers/`: discovery RSS, source registry y extracción con fallback chain.

●

`app/ai/`: clasificación, summarization, embeddings y RAG cerrado.

●

`app/db/`: modelos SQLAlchemy, inicialización pgvector y queries.

●

`app/messaging/`: Telegram activo y contrato preparado para WhatsApp.

●

`app/jobs/`: scraping programado, digest matutino y health workflows.

●

`app/main.py` y `app/cli.py`: entrypoints HTTP y operativos no interactivos.

Arquitectura del sistema#

La app está diseñada como pipeline. RSS y scraping web alimentan una capa de extracción; luego clasificación, summary y embeddings enriquecen cada artículo; PostgreSQL + pgvector sostienen retrieval y similarity search; finalmente el chat responde solo si la evidencia recuperada supera umbrales y pasa una validación post-generación.

●

Scraping → extracción → clasificación → embeddings → storage → retrieval → grounded generation.

●

Vector retrieval filtrado por similitud, recencia, allowlist de fuentes y reranking contextual.

●

API, Telegram, jobs y GitHub Actions comparten los mismos entrypoints operativos.

Estrategia anti-hallucination#

●

No existe ruta directa user → LLM: toda respuesta pasa por retrieval primero.

●

Threshold mínimo de similitud antes de permitir grounding.

●

El modelo recibe evidencia estructurada en JSON, no contexto libre.

●

Las respuestas válidas deben incluir citas coherentes con la evidencia recuperada.

●

Temperatura 0.0 y abstention explícita cuando el contexto es débil o contradictorio.

●

Respuesta de abstención: “No encontré información suficiente en las noticias indexadas.”

Superficie funcional#

●

`GET /health`: salud del servicio y volumen indexado.

●

`GET /news/latest`: últimos artículos persistidos.

●

`GET /news/search`: búsqueda keyword sobre títulos, summaries y contenido.

●

`POST /chat`: consulta RAG cerrada con citations y grounded flag.

●

`GET /digest/today`: payload del digest del día.

●

`POST /integrations/telegram/webhook` y `GET /integrations/whatsapp/webhook`: contratos de canal.

Operación y despliegue#

La plataforma está preparada para correr en local, Docker, VPS y proveedores gestionados como Railway, Render o Fly.io. El diseño desacopla la API web de la automatización periódica: la web expone retrieval y salud, mientras GitHub Actions puede ejecutar scraping, digest y deploy preflight sin competir por recursos de chat.

Resumen del proyecto#

Desarrollé MENDINEWS Agent como un sistema de inteligencia informativa evidence-first para monitoreo ejecutivo. Diseñé la API FastAPI, la pipeline de scraping y extracción, la capa de clasificación y summaries, el almacenamiento semántico con PostgreSQL + pgvector, la integración de Telegram y una arquitectura RAG cerrada con abstención, citas y validación post-generación.

Si buscan construir productos de información confiables con RAG y automatización operativa, este es el tipo de sistema que me interesa seguir desarrollando.

Trabajo donde arquitectura, criterio técnico y confiabilidad del output importan más que el demo superficial.

Alejandro Mendoza

Alejandro Mendoza

Software Engineer · Systems Builder · AI Developer

Desarrolla sistemas y productos digitales integrando backend, frontend, datos e inteligencia artificial. Enfocado en construir plataformas completas, escalables y aplicadas a problemas reales.

Más sobre el autor →
© 2026 Alejandro Mendoza. Todos los derechos reservados.|Privacidad