

Hice un comparador de vehiculos usados con histórico diario de precio y km,(solo de Córdoba por ahora).
Buenas. Vengo trabajando hace unos meses en esto y lo comparto más que nada para que me den feedback/recomendaciones. (Ya consulte con los mods antes de postear).
La app junta las publicaciones de las concesionarias y guarda un snapshot diario de cada auto. El listado en sí no tiene mucha gracia, eso ya existe. Lo que no encontré en ningún lado tan directo es el histórico, ver si a un auto le bajaron el precio, si le tocaron el kilometraje, o hace cuánto que está publicado sin venderse.
ej: https://precioautos.com/vehiculo/1bb74f5d4a1e2dde
otro ej: https://precioautos.com/vehiculo/5684418bccb9c8f0
Hoy son 22 concesionarias y todas de Córdoba, simplemente porque soy de acá y a varias ya las tenía vista de cuando estaba buscando auto. La idea es expandirlo al resto del país, sumar reseñas de las concesionarias y recomendaciones con LLM según lo que estés buscando. Y en algún momento abrir el repo, para que cualquiera pueda sumar la concesionaria de su provincia. Sumar una es fácil (una entrada en un registro, mas un prompt si el sitio no tiene API) pero después viene la parte manual, que es comparar a mano lo que bajo el scraper contra el sitio hasta que los datos quedan bien parseados.
Lo tecnico, resumido
El scraper... La ultima vez que habia hecho scraping en serio, hace unos 6 años, era Selenium + el binario del browser + rezar, y si el sitio tocaba una clase de css/html se te rompia todo. Hoy uso crawl4ai (Playwright abajo) + un LLM para extraer, y para este caso te cambia la vida, cada concesionaria tiene su propio diseño, así que en vez de 20 parsers con selectores escribo un prompt por sitio y el modelo devuelve JSON con el schema que le pido. Si cambian el markup, el prompt sigue andando.
Lo que no me esperaba: un monton de concesionarias sirven el catálogo desde APIs publicas sin auth. De las 22 (a la fecha), 13 salen por API y sólo 9 por LLM.
API de OpenAI vs modelo propio en una EC2. Fui por la API (gpt-4.1-mini).
Se corren todas las concesionarias en paralelo, y con modelo propio tenía que resolver batching, colas y una instancia con GPU prendida, me era mas caro y mucho mas para mantener. La corrida diaria termina saliendo centavos.
Hay una vista materializada en SUPEBASE que se refresca una vez por día con el historico, mas el cache de HTML en el edge de Cloudflare. Sin esas dos cositas cada request tardaba un montón en renderizar.
El scraper corre una vez por día de lunes a viernes, salteando feriados y fines de semana. Lo dispara un cron de EventBridge que prende una EC2, scrapea, pushea y se apaga sola.
El repo todavía está privado así que no lo puedo linkear, pero pregunten lo que quieran del codigo o de las decisiones y me explayo. Cualquier cosa que les cargue lento o se vea mal en mobile tambien me sirve.