Dicen que si quieres mejorar tu eficiencia como compañía debes contratar vagos con imaginación porque estos serán los que optimizarán el esfuerzo a dedicar. Esta humilde servidora no sabe cuánto hay de realidad en esto, pero sí sabe que le da una rabia tremenda invertir tiempo y esfuerzo en hacer dos veces lo mismo. Por tanto, debe ser que encajo en esa categoría. Hoy os traigo cómo hice para ahorrarme el ir a hacer la compra.
Ir a la compra puede ser de lejos una de las tareas domésticas que más odio: agarras el coche, aparcas, vas a por el carro, te das media vuelta porque no llevas monedas, rebuscas en la guantera, encuentras una moneda, vuelves a por el carro. Y te sumerges de lleno en los lineales. Vas, paseas, compras cosas que no quieres, no compras cosas que sí quieres porque se te olvidan, peleas con alguna señora por las últimas cerezas, inviertes valiosos minutos en rebuscar exactamente el envase y marca que le gusta a tus hijos porque no se te ocurriría volver a casa sin ello. Finalmente, te enfrentas a la cola para pagar. Mientras esperas, coges algo de los lineales de alrededor -compra de impulso lo llaman-, que tampoco quieres pero es que te aburres mientras esperas. Pones todas tus cosas en la cinta donde la cajera las coge a la velocidad del rayo y, claro te las deja todas amontonadas detrás de la caja esperando a que las pongas en la bolsa reutilizable que no has traído pero con la misma velocidad. Todo, mientras pagas a la vez y soportas la mirada de odio del siguiente. Luego agarras tus 12 bolsas contaminantes, las transportas con el carro y las cargas en el coche. Ahora a devolver el carro. Recoges la moneda de emergencia que usaste y si tienes suerte la dejas en el mismo lugar donde la encontraste para la próxima vez. Y si no, te tocará suplicarle a alguien, y lo sabes.
El proceso ha ido mejorando con los años: desde que existe la posibilidad de hacer la compra on-line me ahorro un par de crisis pero sigo pasando demasiado tiempo rebuscando referencias en el catálogo de la web. Y ya no se me olvidan tantas cosas desde que tengo el “OK Google, añade tomates a la lista de la compra” a golpe de grito. Pero no es suficiente.
Bien. Pues ya me cansé. Estamos en el siglo XXI por favor. Esto lo puede hacer una máquina. Veamos, ¿qué tenemos? Tenemos una web para escoger referencias. Tenemos una lista de la compra también digital. Tenemos una experta en #webscraping (yo, para más señas, jeje) que domina #Selenium, #BeautifulSoup y #python.
Pues construyamos una compra automática:
Descargar la lista desde Google Shopping List e ir volcando al buscador de referencias del supermercado todas las cosas apuntadas fue muy sencillo. Unas cuantas líneas de python, un poco de ingenio para sortear la defensa anti-bots del supermercado y ya tengo hecho un robot que me va buscando automáticamente en el catálogo todas las cosas apuntadas en la lista de la compra. Pero hay un problema: hay decenas de referencias para cada ítem apuntado en la lista. Cuando busco tomates salen 29 referencias distintas. ¿Cómo hacer que mi robot seleccione exactamente lo que yo quiero?
Disminuyamos el número de referencias entre las que buscar:
La web de este supermercado guarda los pedidos anteriores con lo que mi robot no tiene por qué enfrentarse al catálogo entero, sino sólo a la lista de mis “referencias preferidas”. Pues pensado y hecho. Otro poco de Selenium, BeautifulSoup y python y ya tengo una lista mucho más acotada entre la que buscar. Pero siguen saliendo varias referencias para cada entrada. ¿Tiro de estadística y le hago recoger la más frecuente? Y aquí es donde se presenta el escollo final. La misma referencia no siempre está ni escrita, ni descrita, ni tarificada de la misma manera en el tiempo. ¡Cambian sutilmente pero de manera muy frecuente las malditas! Y aquí fue donde terminó mi cruzada automatiza-compra la última vez. Hasta que aparecieron los modelos LLM.
Usemos hashtag#InteligenciaArtificial para buscar la referencia más parecida:
Un rato peleando con el hashtag#prompt adecuado y los diferentes modelos de #OpenAI (#davinci, hashtag#ada, #gpt 3.5 turbo) y mi robot ya “sabe” cuál es la referencia más frecuente que me gusta comprar de cada entrada de la lista. Incluso es capaz de seleccionar la más parecida de entre todas las referencias del catálogo completo del supermercado. Es decir, ahora yo apunto “tomates” en mi Google Shopping List y mi robot me escoge la referencia correcta en la web del supermercado y la añade al carrito. Al botón de pagar mejor le doy yo después de revisar bien lo que ha metido en el carrito el bicho este.
Compra hecha. En menos de 4 minutos cada vez. Soy una vaga redomada. Pero ahora me tomo una cerveza en mi terraza con el tiempo que antes invertía en ir al super. Hala.
Y cuando tenga ganas, extenderé mi robot a las webs de otros supermercados para que sea capaz de comparar precios y hacer varios carritos óptimos en cuanto al coste. Y sólo será otro rato más de python.
Nunca subestimes a un vago.