Chile 🇨🇱 fue el anfitrión de la primera hackathon oficial de OpenAI en Latinoamérica 💕, un evento que se realizó del 23 al 25 de agosto.
En este artículo, compartiré nuestra experiencia, lo que construimos y algunos aprendizajes 😃.
El evento
La hackathon se llevó a cabo de manera presencial en el edificio de la Cámara Chilena de la Construcción, en Las Condes, Santiago. Allí, 32 equipos, con más de 150 participantes, se reunieron para construir prototipos que usaran inteligencia artificial (IA) a través de las tecnologías de OpenAI.
Paralelamente a la competencia, se realizaron charlas sobre IA, que puedes ver en YouTube. En este artículo, me centraré en la hackathon, ya que no tuvimos la oportunidad de asistir a las charlas 😓.
Temáticas propuestas
El evento fue anunciado a principios de junio de este año. Para participar, debías elegir una categoría entre las siguientes:
- Mitigación y adaptación al cambio climático
- Reducción de impacto ambiental y huella de carbono
- Potencial humano
A continuación te contaré cómo fue postular y cuál elegimos nosotros 😊
La inscripción y nuestra elección de temática
Eran las 2AM. Yo le estaba leyendo la postulación de la hackathon a Eli antes de hacer click en “Enviar”. Estábamos agotados 😴, había sido un día largo y bastante movido (veníamos llegando de un tour en Lisboa).
No muy convencida, me dijo dale!, Así que envíe la postulación.
Estábamos como nómadas digitales en Europa (de hecho, daremos una charla en la 9punto5 sobre esto, guiño guiño 😉) por lo que, como puedes imaginar, dejamos la inscripción para último minuto.
Postulamos a la categoría de “Mitigación y adaptación al cambio climático” con un proyecto que ayuda a buscar vivienda considerando los efectos del cambio climático (nombre provisional: “Where to Live”).
La idea surgió después de una lluvia de ideas con Mauricio Chiong, experto en Climate Tech (lo invitamos a participar, pero quizás no estaría en Chile para la hackathon), y de una búsqueda en Reddit 😂 — r/climatechange/ es una mina de oro.
Nos habría encantado postular un proyecto en el área de salud, donde Eli y yo tenemos experiencia, pero supimos por una publicación en LinkedIn que Cambio Climático no estaba recibiendo muchas postulaciones, así que había más chances de quedar en ella.
Decidimos priorizar la temática sobre nuestras preferencias, ¡y funcionó! Porque quedamos seleccionados 😉.
Nuestro equipo
- Eliana Quijada (LinkedIn): Enfermera y Full-Stack Developer en Hospital Digital (MINSAL).
- Nicolás Gómez (LinkedIn): Software Engineer en Pauca Technologies LLC.
Nuestro equipo fue solo de dos personas. Más que por elección, fue por conveniencia. Como estábamos de viaje, nuestras mañanas eran para pasear y nuestras tardes/noches para trabajar, lo que hacía muy complicado coordinar una postulación con nuestros amigos en Chile.
Creo que fuimos el único equipo de solo dos personas, y no sé si eso fue bueno o malo 😂.
Nuestra solución
Inicialmente postulamos con la idea de “Where to Live”, una plataforma que ayudaría a las personas a buscar vivienda considerando los efectos del cambio climático.
Sin embargo, durante la hackathon, decidimos cambiar el enfoque y construir algo diferente: La Comarca Segura, una herramienta diseñada para ayudar a las comunidades a mitigar las consecuencias del cambio climático.
Este cambio de rumbo se debió a tres factores clave:
- “Where to live” era una propuesta más individualista, y la hackathon enfatizaba mucho el sentido de comunidad.
- Los datos que teníamos estaban mayormente a nivel comunal o regional, mientras que “Where to Live” requería información más geolocalizada.
- Además, el “impacto de la solución” era parte de la pauta de evaluación. Consideramos que una propuesta enfocada en las comunidades tendría un mayor impacto.
Estas cosas las pensamos también por el feedback que nos dieron los mentores.
Pensamos en La Comarca Segura como una plataforma que ofrezca recomendaciones específicas y adaptadas a cada comuna, según los riesgos particulares que enfrentan, como inundaciones o incendios.
Dado que solo teníamos dos días y éramos solo dos personas, decidimos acotar el proyecto y centrarnos en las inundaciones, ya que representan el 25% de los eventos climáticos en Chile y tienen graves consecuencias económicas y de salud, mucho más allá de que se te moje la casa (algo que mucha gente desconoce 🙄).
A futuro, la plataforma podría expandirse para cubrir otros eventos climáticos como incendios y terremotos, entre otros.
El nombre La Comarca Segura fue idea de ChatGPT. Nos gustó porque transmite la seguridad de una comunidad unida, especialmente con el 18 de septiembre a la vuelta de la esquina, cuando en Chile nos sentimos como hobbits comiendo y celebrando. Aunque nos dio un poco de cringe, encajaba 😅.
Tour por La Comarca Segura
La plataforma te pregunta por una Región y Comuna:
Luego lo primero que te muestra es un análisis de Amenaza, Exposición y Riesgo:
Junto a recomendaciones comunales:
Y finalmente un pronóstico de Precipitaciones:
Junto a consejos para los vecinos:
Aquí un pequeño video (no tiene audio):
Programación
Esta sección es un poquito más técnica 🤓, el repositorio es público y lo puedes ver en GitHub: codeness-io/la-comarca-segura (está igual a como lo presentamos).
Stack tecnológico
- Next 14
- El AI SDK de Vercel para integrarnos con OpenAI
- MUI como librería de diseño
Nos fuimos por lo seguro: con Eli tenemos experiencia en React, y como era una aplicación más “full-stack”, decidimos irnos por el framework Next, que lo es.
API de datos
Utilizamos los mapas de riesgo climáticos para Chile, que son parte de un proyecto del Ministerio del Medio Ambiente del Gobierno de Chile.
En particular, usamos los datos de Inundaciones.
Cómo usamos OpenAI
El prototipo lo armamos de forma incremental:
- Mostrar una descripción sencilla del riesgo de una comuna en base a sus indicadores
- Mostrar recomendaciones a nivel comunal
- Mostrar recomendaciones a nivel personal
Para la primera etapa, utilizamos los datos de inundación, que consisten en 80 columnas (la mayoría son indicadores) y 346 filas (una para cada comuna). No tiene sentido entregarle todo el Excel a OpenAI, esto es derrochar créditos, así que escribimos el siguiente Prompt:
Eres un asesor de gobierno sobre riesgo y mitigación de consecuencias del cambio climático en Chile.
Tu objetivo es explicar de manera simple (ELI5) los principales riesgos que vez en una comuna específica.
Para esto, te entregaremos indicadores sobre inundaciones de la comuna a analizar.
Los indicadores que te entregaremos son los siguientes (CSV):
${attributesText}
Tu misión es explicar de manera simple los riesgos que ves en la comuna a analizar.
La parte que dice ${attributesText}
se reemplaza por la descripción de las 80 columnas pero en formato CSV (que usa menos tokens que JSON).
Luego, cuando una persona consulta en la página por una comuna específica, buscamos los datos de la comuna, y junto al prompt anterior, agregamos la consulta específica:
La comuna a analizar es: ${floodData.properties.NOM_COMUNA}
Los indicadores para esta comuna son: ${JSON.stringify(floodData.properties, null, 2)}
Para responder, hazlo en formato markdown, es español, y no incluyas los valores de los indicadores. Puedes marcar con negrita los puntos más importantes.
La estructura que debes seguir es la siguiente estructura JSON:
{
"risk": "(Amenaza de inundaciones)",
"exposition": "(Cuántas personas están en riesgo)",
"risk_vs_exposition": "(Riesgo - amenaza vs exposición)",
"improvements": ["Sugerencia de mejora 1", ..., "Sugerencia N"]}
}
Le pedimos un objeto JSON como respuesta, lo bueno es que con el SDK de AI de Vercel esto es muy fácil de hacer:
// Primero defines el objeto
const expected = z.object({
risk: z.string(),
exposition: z.string(),
risk_vs_exposition: z.string(),
improvements: z.array(z.string())
})
// Luego lo pides
const { object } = await generateObject({
model: openai('gpt-4o'),
schema: expected,
// ⬇️ es el primer prompt (el que tiene la definición de indicadores)
system: getFloodSystemPrompt(),
// ⬇️ es el segundo prompt, que tiene la comuna en particular
prompt: await getFloodUserPrompt(commune),
});
Todas las piezas juntas
Dada una comuna, conseguimos sus indicadores (consultando ARCLIM) y le pedimos a OpenAI que haga una explicación en fácil, y también le pedimos recomendaciones.
Luego, usamos la API de Open Meteo para datos de precipitaciones de los próximos 15 días. Ejecutamos un algoritmo sencillo para saber si estas precipitaciones serán extremas, para así mostrar las recomendaciones vecinales ante el frente meteorológico.
A continuación puedes ver un diagrama que resume todo lo anterior:
Diseño
Pasamos del mock-up que hizo Eli en un cuaderno (17:00 hrs del sábado):
A una primera versión (9PM del sábado):
Al reporte propiamente tal (12:00PM Domingo)
También hicimos una Landing Page, para presentar directamente desde el prototipo y no de una diapositiva:
Aquí nos gustaría agradecer a Valentina Reyes (mentora en UX, aquí su LinkedIn) que nos dio consejos súper buenos para mejorar la presentación de nuestra solución 💕
Resultados de la competencia
La evaluación fue en dos partes:
- Clasificación a la final: los 32 equipos debían presentar su solución en 5 minutos, poniendo énfasis en el impacto y en lo avanzado durante la hackathon.
- La final: 12 equipos seleccionados presentaban ante los jueces y el “mundo entero” su solución, también en 5 minutos.
Si bien no quedamos en la final, nos fuimos satisfechos con nuestra participación. Logramos tener un producto completo que funciona, a pesar de que nos costó decidir qué construir. Además, Eli se lució en la presentación.
Obviamente, íbamos con la intención de ganar y quedar en la final, pero hay hartas cosas que nos perjudicaron y que quedan como aprendizajes a futuro.
Aprendizajes para el futuro
Siendo bien honesto, nuestra solución no nos convencía a nosotros mismos de su utilidad e impacto 😂. No porque no lo viéramos como algo importante, sino que por falta de conocimiento del tema, nos costaba imaginarnos su aplicación en el mundo real. Por este mismo punto, no sabíamos muy bien qué otros datos útiles podríamos obtener para así hacer más dinámico el reporte.
El feedback que recibimos es que si bien la presentación estuvo bien, hubo un vacío entre la información mostrada y el impacto para las personas que la recibían, ya que estos eran un poco genéricos.
No sé si mejorar eso nos hubiese hecho quedar en la final, pero fue algo que teníamos en el radar y que no alcanzamos a implementar. Quizás en vez de invertir tiempo en una “landing page”, podríamos haber hecho que los consejos fueran más específicos, y además, en preparar una presentación (”PPT”) como el resto de los grupos, para vender mejor la solución y su desarrollo a futuro, así dejar claro que no era solo inundaciones, sino que también podríamos incluir más riesgos.
Entonces, resumiendo estos aprendizajes:
- Ojalá tener a alguien que sepa mucho de la temática en el equipo
- Presentar con slides 😂
- SIEMPRE pensar en lo que construyes en la hackathon como si fuera un producto que vas a vender
Feedback de la hackathon
Lo Bueno
- Participar fue ganar por todos lados: muy buena comida, los créditos de OpenAI quedaron para el equipo (200 USD 🎉).
- La comida fue genial, tanto en sabor como en abundancia 🐷 (esto es algo que los eventos suelen fallar, pero aquí no!)
- El diseño del evento quedó genial, las instalaciones se sentían como si estuviéramos en una sede de OpenAI.
- Había muchos mentores, los que nos asignaron eran muy buenos, nos dieron tips útiles, sobre todo en cómo orientar la solución.
- Las instalaciones de la Cámara Chilena de la Construcción fueron muy buenas, harto espacio, sillas cómodas para trabajar.
Lo no tan bueno
Con Eli somos muy estructurados y nos gusta tener pautas para este tipo de actividades, aquí hubo una, pero no sentimos que fuera tan clara.
¿Teníamos que vender un producto o no?
Mencionaron varias veces que era una hackathon más “hacker” que una donde se venda un producto propiamente tal. De hecho, en algún momento los organizadores mencionaron que no perdieran el tiempo haciendo muchas diapositivas, porque lo importante era tener algo corriendo en nuestros computadores.
Nosotros tomamos esto como un “no hagan diapos”. Pero, algo entendimos mal, ya que muchos grupos sí lo hicieron. Hace todo el sentido del mundo, ya que es un súper buen apoyo en el caso de quedar en la final.
¿Y qué pasó con el Cambio climático?
En la inauguración, se mencionó que trabajaríamos en problemas importantes como el “Cambio Climático”, pero si viste la final, solo un grupo era relacionado con esta temática.
Sé que no tuvo muchas postulaciones, y creo que eso da cuenta de la dificultad de hacer un proyecto en ese ámbito. ¿Pero de verdad no había más material para la final?
Palabras finales
La “AI Hackathon” fue una experiencia inmersiva, donde todos los participantes estaban de cabeza construyendo sus proyectos, según nos contaron, varios pasaron de largo sin dormir (¿o será la juventud? 😂)
La organización estuvo excelente. Se cumplieron los tiempos, lograron que muchas personas estuvieran trabajando un sábado y un domingo, por muchas horas.
Felicidades al grupo ganador de “Justa”, su presentación transmitió mucha pasión, motivación, y cumplieron con los tiempos a la perfección. Hubo muchos grupos trabajando cosas muy interesantes y entretenidas, en la final estábamos con Eli creyéndonos jurado debatiendo qué grupo debía ganar en cada categoría 🤭.
Me voy con una experiencia muy positiva, a pesar de las cosas que comenté en la sección anterior.
Si bien no quedamos en la final, me pareció muy entretenido trabajar codo a codo con mi compañera y esposa Eli 💕
P.D: si quieres saber más sobre cómo fue el evento, te recomiendo leer el artículo de Fintual: “Por qué el evento oficial de OpenAI en Chile fue tan importante: la AI Hackathon”, escrito por Omar Larré.