Documentación para el jurado técnico

Arquitectura técnica de BCR Monitor

Cómo funciona el sistema a nivel de componentes: frontend en Vercel, API en Railway, datos en Supabase, IA con Claude, alertas en Slack, correo con Resend y despliegues automatizados desde Git — sin exponer secretos ni lógica propietaria.

01 · Vista general

Componentes y flujo de datos

Git versiona el código y dispara los deploys. El frontend orquesta la experiencia de usuario; el backend ejecuta scrape, comparación, IA y notificaciones. Railway Cron dispara el ciclo diario.

02 · Stack

Cuatro capas, un solo producto

CapaTecnologíaRol
FrontendNext.js en VercelUI, auth Supabase, llama al API
BackendFastAPI en RailwayScrape, comparación, IA, notificaciones, OAuth Slack
DatosSupabase Postgres + Auth + StorageMonitores, checks, eventos, baselines DOCX/PDF
DeployGit + GitHubControl de versiones; push a main dispara deploy automático en Vercel y Railway
03 · Pipeline

Ciclo de un monitor en 6 pasos

Todo ocurre dentro de una sola aplicación Python en Railway. No hay workflow externo entre pasos.

Paso 01

Scrape BCR

El backend consulta el buscador público del BCR con los filtros del monitor y localiza el documento por código de referencia.

Paso 02

Descarga DOCX/PDF

Obtiene la versión actual del documento normativo directamente del sitio del BCR.

Paso 03

Compare vs baseline

Compara contra la última versión en Supabase Storage. Si el hash es idéntico, termina como “sin cambios”.

Paso 04

Claude analiza

Si el archivo cambió, Anthropic API analiza ambas versiones y devuelve un resumen estructurado en español.

Paso 05

Guarda check y evento

Persiste el resultado de la corrida, el evento de cambio y la nueva baseline si hubo modificaciones sustanciales.

Paso 06

Notifica Slack y/o email

Según la configuración del monitor: chat.postMessage en Slack y/o correo transaccional vía Resend.

04 · Integraciones

Servicios conectados al backend

Claude (Anthropic)

API oficial de Anthropic desde el backend Python. Usos: comparación de documentos normativos y bot de Slack con tools (correr monitor, activar/desactivar, etc.).

Los tokens se registran por operación para control de costos. Los prompts y parámetros del modelo no se publican.

Slack

OAuth: /slack/install → callback → token guardado en slack_connections.

Alertas: chat.postMessage al canal configurado.

Bot: Event Subscriptions en POST /slack/events — patrón estándar Slack App + backend propio.

Cron (Railway)

Schedule diario en Railway (ej. 14:00 UTC). No ejecuta Python suelto: hace una petición HTTP autenticada al propio API.

POST api.bcr-monitor.com/run. Recorre todos los monitores activos.

Email (Resend)

Dominio verificado bcr-monitor.com. Remitente: no-reply@bcr-monitor.com.

Correos transaccionales: monitor creado, cambios detectados, sin cambios. El frontend no envía correos — todo vía API REST de Resend desde el backend.

Supabase

Postgres: monitores, checks, change_events, conexiones Slack, logs de tokens IA.

Auth: login del panel; cada monitor se asocia al user_id.

Storage: bucket baselines con versiones DOCX/PDF para comparar.

Frontend (Next.js)

Wizard: POST /bcr/search → elegir documento → POST /monitors.

Dashboard, historial de checks, conexión Slack, run manual con POST /run/{id}.

No scrapea el BCR, no llama a Anthropic ni envía Slack/email directamente.

05 · Deploy

Git como pipeline de producción

El código no se despliega a mano: Git es el punto de partida y Vercel y Railway publican cada versión estable automáticamente.

Git como fuente de verdad

El código del frontend y del backend vive en repositorios Git en GitHub. Cada cambio queda versionado con historial, ramas y revisiones antes de llegar a producción.

Deploy automático a Vercel

Vercel está conectado al repo del frontend. Cada push a main dispara build de Next.js y publica la nueva versión del panel y las páginas públicas.

Deploy automático a Railway

Railway está conectado al repo del backend. Cada push a main reconstruye la API FastAPI, la reinicia en producción y mantiene el cron diario en el mismo servicio.

¿Quiere ver el producto en acción?

La narrativa de IA está en el pitch; la landing tiene la demo. El panel autenticado es donde los equipos operan sus monitores.