Resumen
En el episodio 196, Mati hace una sesión de "vibecoding" en vivo con Codex (en PowerShell y Visual Studio Code) de un proyecto de ciencia de datos en dos horas. El problema es encontrar el "mejor departamento para comprar" con datos scrapeados de Portal Inmobiliario (SQLite, unas 3.900 publicaciones de Providencia y Ñuñoa). Mati insiste en que lo más importante es definir bien el problema antes de programar, y para eso explora los datos con la IA, conversa con ChatGPT como "segunda cabeza" y elige un enfoque de comparables locales con score de oportunidad. Luego implementa el plan en modo plan de Codex, revisa a mano algunos resultados y pide un dashboard HTML para ver contra qué comparables se evalúa cada publicación. Detecta problemas, como no ajustar por estacionamiento, bodega ni antigüedad, y la IA propone un precio ajustado por comparables, auditable y sin filtros duros. Se discuten buenas prácticas: control de versiones desde el inicio, AGENTS.md, no dejar que la IA haga commits y hooks. La conclusión es que "mejor oportunidad" depende del usuario, que conviene iterar pocas veces más y que el sesgo de precios de oferta es un límite conocido.
Capítulos
- 00:00IntroPresentación de la live demo: vibecodear un proyecto de Mati con menos de 2 horas, con ideas del chat. Mati cuenta una anécdota de un examen en que respondió "no" demasiado rápido, y comentan que Codex ya tiene skills nativas y que Mati usó mucho Claude el último mes.
- 07:30SetupMati abre Codex en PowerShell sobre Windows y revisa su porcentaje de uso (99%). Plantea el problema: encontrar el mejor departamento para comprar. Primero prepara el repositorio, se equivoca al inicializar git en la carpeta incorrecta y arma el .gitignore (excluyendo la carpeta de configuración de Codex) para poder deshacer cambios.
- 16:43Exploración de datosMati le pide a Codex un resumen ejecutivo de la base SQLite en `resumen_data.md`: 1.965 publicaciones de Providencia y 1.937 de Ñuñoa, cobertura del 15 al 19 de mayo, tablas principales (listing, listing_observation, extraction_run y una vista de oportunidades), monedas UF y CLP mezcladas, outliers y datos incompletos. Consulta a ChatGPT tres ideas de enfoque: precio esperado, comparables locales y score compuesto. Elige comparables locales con distancia y superficie, y comentan el sesgo del superviviente de usar precios de oferta y no de cierre.
- 51:10Arreglar formatoMati pide a Codex que corrija errores de sintaxis del Markdown de la definición del problema (tipo LaTeX mal formateado), reconociendo que es una maña personal. Cris sugiere usar "pregúntame sin parar" para que la IA haga muchas preguntas de contexto.
- 58:33AGENTS.mdExplican que AGENTS.md es el equivalente de CLAUDE.md: instrucciones generales del repositorio (estructura, estilo, tests, commits). Mati cuenta que le prohíbe hacer commit salvo petición explícita y quitar la coautoría. Prefiere que lo actualice la propia IA.
- 01:01:20Implementación del planEn modo plan, Codex hace preguntas y propone un plan con salida en CSV y Markdown ejecutivo. Mati pide poca sobreingeniería, código modularizado y ejecución con `uv run python`. Se aclara qué son los hooks (como pre-commit) y el agente crea un entorno virtual y termina con unas 800 oportunidades.
- 01:15:00Revisando el resultado de la implementaciónSe revisa lo creado (carpetas, scoring, tests, AGENTS.md actualizado). Mati sospecha de las 800 oportunidades, hace un commit de la versión inicial en tono de broma y pide mejorar el mensaje.
- 01:20:05MemesRevisan memes de la comunidad sobre vibe coding y sobre el modelo Fable, entre otros.
- 01:23:22Continuamos revisando el resultado de la implementaciónMati revisa a mano oportunidades concretas contra el portal: una publicación pausada o vendida y otra en Inés de Suárez. Decide pedir un dashboard para ver visualmente contra qué comparables se evalúa cada publicación, siguiendo la idea de Cris de analizar un ID específico.
- 01:27:40Creación de dashboardCodex conserva los comparables en el scoring y genera un dashboard HTML autocontenido. Mientras espera, conversan sobre la baja temporal de Fable, el registro de identidad en Anthropic y la brecha tecnológica entre países. Cris explica el caché de uv frente a `--frozen`.
- 01:36:31Revisión de dashboardRevisan un departamento en Campo Oriente que parece barato, pero tiene 50 años de antigüedad. Descubren que 91,5 es el UF por m² de los comparables, no los metros cuadrados. Concluyen que el resultado es bueno para dos horas de trabajo.
- 01:48:30Ajuste de prioridades al compararMati nota que faltan estacionamiento, bodega y antigüedad en la comparación, y que hay demasiadas oportunidades. Pide un plan en Markdown. Codex propone no filtrar, sino conservar los comparables y ajustar el precio con valores empíricos de estacionamiento y bodega y un ajuste simple por antigüedad, con un indicador de confianza. Se discute que la mejor oportunidad es subjetiva y depende del usuario.
- 02:04:08CierreMati propone implementar el plan, iterar tres o cuatro veces más y luego considerar datos externos como precios de cierre reales, cercanía a metros y otros datos geográficos. Responden que no hay planes de un stream sobre Databricks. Mati gastó cerca del 30% de su sesión de 5 horas en unos cinco prompts.