Es un proyecto paralelo de una sola persona que hice porque me daba coraje que el precio de la gasolina bajara justo al día siguiente de cargar.
Con los datos públicos de Opinet se puede saber "dónde está barato hoy", pero no "si conviene cargar hoy o esperar". Por eso tomé los precios diarios de 11,500 gasolineras de todo el país desde 2022, les agregué variables como el precio internacional del petróleo (WTI y Dubái), el tipo de cambio y el impuesto a los combustibles, e hice un modelo que predice los cambios de precio a 7 días. Cada mañana lo muestro con un semáforo. No dice "¿parece que va a subir?", sino montos como "si esperas, ahorrarías unos 40 wones por litro".
El diseño clave no es el modelo, sino esto: si un servicio de predicción no puede responder "¿por qué debería creerle?", se acabó. Por eso, cada día califico automáticamente la predicción de ayer y publico tal cual la libreta de resultados dentro de la app. Más de 30,000 evaluaciones acumuladas, 99% de acierto en predicciones de "no sube" y hasta el porcentaje de veces que las recomendaciones de "aquí está barato" realmente fueron baratas. Si se equivoca, los usuarios ven cómo bajan los números, y gracias a eso yo tampoco puedo hacer el modelo a la ligera.
La arquitectura es simple, bajo el principio de 0 wones de costo fijo:
CSV diario de Opinet → DuckDB (series temporales de 4.6 GB, local) → features → predicción → evaluación → snapshot de serving, totalmente automatizado todos los días a las 07:30 con launchd
El serving usa FastAPI + HTML único con JS vanilla (90 KB); solo usuarios y snapshots en Supabase; hosting en el plan gratis de Render (evitando el sleep con pings de UptimeRobot)
6,473 gasolineras afiliadas a moneda local se conectaron con datos públicos de la Korea Minting and Security Printing Corporation mediante matching por coordenadas a 150 m + nombre comercial
Una sola metida de pata: un día el 57% de las gasolineras quedó marcado como "en espera". Investigué dos días y resultó que el "corte de 40 wones de cambio previsto" que había puesto como puerta para outliers era el p75 de la distribución real. Estaba tratando 1 de cada 4 casos como outlier. Lo subí a p99.5 y se resolvió. Aprendí en carne propia que los umbrales deben definirse por cuantiles, no por intuición. (Relato detallado del desarrollo: enlace de velog)
La semana pasada publiqué un post en una comunidad de ahorro y en dos días pasaron 730 personas; el 82% de quienes se registraron eran commuters de entre 30 y 40 años. Todas las funciones se pueden usar sin registrarse y todo es gratis.
Estoy pensando en varias mejoras, como predicción para diésel (por ahora solo ofrece consulta) y unidades geográficas más finas que ciudad/distrito/condado. Si lo prueban y me dan feedback tipo "la predicción de mi barrio se ve rara", lo corregiré validándolo con la libreta de resultados.
Aún no hay comentarios.