PROYECTOS / AI APLICADA

Polaris

Plataforma de soporte que clasifica cada ticket en cinco dimensiones y responde desde una base de conocimiento con RAG: cita la fuente y rechaza con honestidad cuando la respuesta no está. Demo de punta a punta sobre ~24.000 tickets sintéticos que diseñé y generé.

Rol
Diseño y desarrollo completo
Período
Jun — Ago 2026
Estado
Demo pública abierta
Mono
01

Qué construyo

GITHUB

Código y README

Pipeline completo: datos sintéticos, clasificador, RAG y despliegue.
HUGGING FACE

Dataset abierto

~24.000 tickets sintéticos con capa de eventos. Diseñado, generado y auditado por mí. CC-BY-4.0.

MERMAID

Diagrama de flujo

La arquitectura como código, versionada en el repo.
GITHUB

Evaluación del clasificador

Métricas por label, curva de aprendizaje y auditoría de labels.

En este caso
Stack
Pythonscikit-learnEmbeddingsMongoDBCloudflare WorkersVertex AI

El problema

Los sistemas de soporte con IA fallan de dos formas: clasifican mal —categorías gruesas donde el usuario elige la casilla equivocada— y responden con seguridad aunque la respuesta no exista (alucinan).

Quise resolver ambas de forma auditable, y sin datos de un cliente real: así que generé los míos. ~24.000 tickets sobre 2,5 años, con una capa de eventos —picos de incidentes, olas de lanzamiento— que les da realismo temporal. Publicado abierto en Hugging Face.

Arquitectura

El clasificador de triage no es un módulo aparte: es la puerta de entrada que enriquece y filtra el RAG. Predice tema y ruteo desde el texto, acota la búsqueda y decide si la pregunta se responde desde la base o se escala.

El retrieval es coseno exacto sobre los ~90 vectores del KB en MongoDB —sin un vector DB dedicado— porque a esa escala no hace falta; la decisión está documentada en un ADR. Doble honestidad: rechaza lo que no está en la base y escala lo que no es una pregunta de conocimiento.

Ticket entrante
Embeddings 768-d · VertexVectorizacióncompartida por clasificador y RAG
scikit-learn · 5 modelosClasificador de triagetema · tipo · prioridad · ruteo · sentimiento
gate por ruteo
kb_autoresolve
RAG · coseno sobre MongoDBResponde desde la basecon citas — o rechazo honesto si no está
resto
Escala al equipo correcto
Servido en Cloudflare Workers + D1

El clasificador enriquece y filtra el RAG: el retrieval es coseno exacto sobre el KB, sin un vector DB dedicado — la decisión está en un ADR.

El dataset

Los datasets públicos de soporte son pequeños, sin etiquetar o balanceados a la fuerza. Necesitaba uno realista y auditable, así que lo generé: un catálogo de escenarios alimenta un muestreador con semilla y un modelo que redacta cada ticket, con una capa de eventos —incidentes que pican y decaen, lanzamientos que suben en olas— sobre 2,5 años.

Cada ticket lleva cinco etiquetas (una por dimensión, para evaluaciones limpias). Publicado abierto en Hugging Face.

23,994
Tickets sintéticos etiquetados
2.5 años
Span temporal (ene 2024 – jun 2026)
5
Dimensiones por ticket: tema, tipo, prioridad, ruteo, sentimiento
25%
Con capa de eventos: incidentes y lanzamientos
CC-BY-4.0
Abierto en Hugging Face
US$3.35
Costo total de generarlo (FinOps)

Decisiones y descartes

Las alternativas que consideré, por qué las descarté y a qué costo. Un sistema se entiende tanto por lo que eligió como por lo que dejó fuera.

OpciónPor qué noCoste
Fine-tuning
El criterio cambia cada trimestre; reentrenar no escala.
Alto
Reglas manuales
Cubría el 60% de casos y nadie las mantenía.
Bajo
RAG con citas
Elegida: se actualiza cambiando la documentación, y es auditable.
Medio

Resultados medidos

99%

Precisión del clasificador en labels estructurales (tema, tipo, prioridad, ruteo)

23.994 tickets

Tickets del dataset, diseñado y generado por mí

US$1.75

Todo el sistema en GCP: dataset + embeddings + inferencia

≈ 5.500 — Preguntas grounded por cada US$1 (≈ US$0,0002 c/u)

Qué haría distinto

  • Empezar por la evaluación. Construí el set de pruebas después del prototipo; antes habría ahorrado iteraciones a ciegas.
  • Auditar los labels desde el día uno. security_incident mezclaba caídas de servicio con brechas reales, y el clasificador aprendió fielmente el error. El defecto vive en los datos, no en la métrica. 

Otros proyectos

DATA ENGINEERING

CRM Data Platform

Ingesta incremental, orquestada y con validación en cada carga.

Analítica

Plataformas analíticas

Modelo dimensional y métricas certificadas que la dirección puede citar.

IA

IA aplicada (RAG)

Recuperación sobre datos propios, con la fuente citada en cada respuesta.

Automatización

Automatización de procesos

CI/CD y despliegue serverless: menos intervención manual, menos error.