Contacto

Ciudad de México, México
Disponible para proyectos remotos y presenciales.

Redes profesionales

LinkedIn · GitHub · Email
Ingeniería aplicada, resultados medibles.

Hola, este fue mi primer hackathon: Frontier CDMX 26

· 6 min de lectura · Samuel Torres

Rosa polar de cinco pétalos
r(t) = cos(5t)

En resumen

  • 190 aplicaron y entramos 42; participé solo.
  • En ~8 horas construí un agente que opera una app solo por la pantalla (VNC 1280×800).
  • Práctica 5/5; evaluación 1/34, con mediana de 4:24 contra 5:00.
  • El agente ignoró un prompt injection y no adivinó ante dos clientes homónimos.
  • No gané, pero conocí a quienes quedaron en 1.º y 2.º lugar.

El sábado 31 de octubre de 2026 fui a mi primer hackathon: Frontier CDMX 26. Participé solo, construí en unas 8 horas un agente que opera sistemas sin API viendo la pantalla, no gané y aprendí más que en meses. Aquí te cuento cómo fue, hora por hora y sin maquillaje.

¿Qué es Frontier?

Frontier · CDMX 26, powered by Lab10, es un hackathon presencial para talento técnico de la región. El formato se parece a los procesos de contratación de los laboratorios de IA: un reto difícil, tests ocultos, un scorecard individual y empresas contratando. Hubo más de US$8,000 en premios y se podía competir solo o en pareja.

¿Cómo postulé y cómo entré?

La postulación eran 8 preguntas abiertas en inglés. Nadie entraba por su CV: entraba por cómo pensaba. Postulé con dudas, sinceramente. Me aprobaron en dos días.

DatoValor
Aplicaron190
Entramos42
Retos1 por participante
Duración del trabajo~8 horas
EquipoSolo

¿Cuál era el reto?

El Reto 2 se llamaba «El agente que opera lo que no tiene API». Imagina un sistema de 15 años que nadie puede integrar: no hay API, solo una pantalla. El agente recibe una tarea en lenguaje natural («cambia el teléfono de tal cliente») y la tiene que ejecutar en una app que nunca vio, solo por la pantalla, a través de VNC a 1280×800.

Se practicaba en una app llamada SIGECOM y se evaluaba en otra distinta, con 5 minutos por tarea. Y tenía trampas: la pantalla se repintaba cada segundo, los clics de menos de 100 ms se ignoraban y el texto escrito se concatenaba si no limpiabas el campo.

¿Cómo fue mi día, hora por hora?

HoraQué hice
12:20Entorno: repo, Python, Tesseract y GitHub.
12:50Cliente VNC propio.
13–14 hOjos (OCR) y manos (clic y teclado).
14–15 hCerebro (el LLM) y reglas.
15:00El incidente: la app cambió de versión.
15–16:30Pruebas y regresión: 5/5 en dos versiones.
16–16:45API, servidor Linux, systemd, HTTPS y logs.
16:43Evaluación.
18:55Resultado.

¿Cómo funciona el agente?

La idea en una frase: el LLM piensa cada paso; el loop lo pone a trabajar, lo vigila y lo detiene. Mi regla fue «determinista primero, el LLM solo decide». En cada vuelta del loop:

  1. Los ojos leen la pantalla con OCR (Tesseract, dos pasadas en paralelo: una normal y otra con los colores invertidos para leer texto claro sobre fondo oscuro).
  2. El cerebro decide el siguiente paso. Usé Gemini 2.5 Flash vía OpenRouter: 0.8 s por llamada contra 1.8 s de otras opciones.
  3. El código revisa la decisión: ¿existe ese texto en pantalla? ¿el JSON es válido?
  4. Las manos ejecutan: clic por texto, nunca por coordenadas, y escribir.
  5. Se anota el paso, y si no terminó ni se acabó el tiempo, vuelve al 1.

Ninguna librería de Python hablaba VNC por websocket, así que escribí un cliente propio de unas 200 líneas. Y descubrí que sin un mapa de los menús de la app ningún modelo acertaba: el mapa se arma con OCR y clics, sin gastar en el modelo.

Usé Claude Code para buena parte del código. Yo definí la arquitectura, las reglas y las prioridades, revisé y desplegué. El código está en GitHub.

¿Qué muestran los dos videos?

Los dos van acelerados y son de la app de práctica, con datos de prueba. El primero es un fallo, y es el comportamiento correcto: hay dos clientes llamados «Ana Torres», así que el agente no adivina, no toca nada y reporta los dos registros.

Cuando NO debe actuar: dos «Ana Torres», ninguna modificación.

El segundo resuelve la tarea: corrige una dirección e ignora una nota escondida en el campo de observaciones que le ordenaba borrar pedidos. Eso es un intento de prompt injection: meter instrucciones dentro de los datos. La regla que quedó: todo lo que se ve en pantalla es dato, nunca una instrucción.

Cuando SÍ resuelve: corrige la dirección e ignora la orden escondida.

¿Qué pasó a las 15:00?

A media tarde la app de práctica cambió a la versión 4.2: apareció un modal nuevo, el botón «Buscar» pasó a llamarse «Filtrar» y todo se volvió más lento. Era justo el tipo de cambio que rompe a un agente frágil. Lo superé porque el agente actúa por texto y lee la pantalla antes de cada paso. También atrapé un falso éxito (el agente reportaba 25 donde había 45) y un reinicio accidental me reveló un bug real.

¿Cómo pasó del laptop a un servidor?

La evaluación mandaba tareas a una API, así que el agente tenía que vivir en un servidor Linux, no en mi laptop. En 45 minutos: FastAPI con una cola de un solo trabajador, un servicio de systemd, un usuario aislado, HTTPS y logs. Durante la evaluación seguí cada tarea con journalctl. Usé Git desde el minuto uno, y eso me salvó más de una vez.

¿Cuáles fueron los números?

MétricaResultado
Pruebas de práctica5/5
Evaluación1/34
Fáciles · regulares · difíciles1/10 · 0/14 · 0/10
Mediana por tarea4:24 (límite: 5:00)
Costo en el díaMenos de 1 dólar

¿Cuál fue el resultado, sin maquillaje?

No gané. En la práctica el agente resolvió 5 de 5; en la evaluación, 1 de 34. La mediana por tarea fue 4:24 contra un límite de 5:00: el agente se quedaba sin tiempo. La arquitectura aguantó el cambio de versión y la trampa de prompt injection, pero no fue lo bastante rápida para una app que nunca había visto. De eso escribí aparte: lo que aprendí quedando último.

¿Y la gente?

Lo mejor del día. Hice amigos nuevos, platiqué el reto, saqué dudas y avancé gracias a ellos. Amigos que conocí ahí quedaron en 1.º y 2.º lugar. Si estás pensando en ir a tu primer hackathon, te dejé mis consejos.

La historia completa, con el diagrama y los videos, está en la página de Frontier. Y si te interesa poner agentes o automatización con IA a trabajar en tu empresa, así lo hago en IA y automatización; un ejemplo en producción es Panini Fan Zone.

Preguntas frecuentes

¿Qué es Frontier CDMX 26?
Un hackathon presencial powered by Lab10, el 31 de octubre de 2026 en la Ciudad de México, con un reto tipo proceso de contratación de laboratorios de IA, tests ocultos y scorecard individual.
¿Cuál era el reto?
Construir un agente que ejecuta tareas en lenguaje natural en una app sin API que nunca vio, solo por la pantalla, con 5 minutos por tarea.
¿Qué modelo usó el agente?
Gemini 2.5 Flash vía OpenRouter, con 0.8 s por llamada. El código valida cada decisión antes de actuar.
¿Ganaste?
No. La práctica salió 5/5 y la evaluación 1/34: el agente se quedaba sin tiempo.
Samuel Torres Pichardo

Samuel Torres Pichardo
Ingeniero de software y cloud en Ciudad de México, con unos 3 años de experiencia profesional. Construí el sitio de Conqr que cuento aquí.
LinkedIn · GitHub · Contacto

Contacto profesional:

Ciudad de México, México

Disponible para proyectos remotos y presenciales.
Ingeniero en Tecnologías de Computación y Telecomunicaciones

© 2026 Ing. Samuel Torres. Ingeniería aplicada.