El problema de la vigilancia manual
Los portales inmobiliarios tienen sistemas de alerta rudimentarios. El correo llega tarde, muchas veces para anuncios irrelevantes, y de todas formas hay que abrir el sitio, hacer scroll, leer las descripciones para saber si vale la pena profundizar. El resultado es un ciclo frustrante: o revisas a menudo y pierdes tiempo, o revisas poco y te arriesgas a perder la ocasión.
El verdadero problema no es la velocidad — es el filtrado. El precio puede estar en los parámetros, pero la zona real no. El anuncio puede decir "cerca del centro" y estar a 12 km. Los filtros del portal no leen las descripciones: la IA sí.
La arquitectura en 5 componentes
PropertyFinder es un workflow de n8n con cinco componentes principales que se activan cada 6 horas:
- Scheduler: trigger de n8n cada 6 horas, todo el día
- HTTP Request: llama a las API de Subito.it con filtros preconfigurados (zona, precio mínimo/máximo, superficie)
- Gemini AI: lee la descripción completa de cada anuncio y responde "pertinente / no pertinente" con motivo
- Deduplication: Google Sheets como registro de los anuncios ya notificados en los últimos 30 días
- Telegram: notificación con enlace directo, precio, zona y resumen generado por Gemini
Los componentes 3 y 4 son los que marcan la diferencia respecto a cualquier alerta nativa del portal.
El papel de la IA en el filtrado
Esta es la parte que transforma el sistema de un simple scraper a algo realmente útil. El prompt a Gemini es simple y directo:
Eres un agente inmobiliario. Evalúa este anuncio según mis criterios: zona [X], máximo [Y] €, al menos [Z] m², no sótano, no planta baja si está en una calle con mucho tráfico. Responde solo "pertinente" o "no pertinente" con una línea de motivación.
El modelo lee la descripción completa del anuncio, no solo los metadatos. Distingue entre "barrio residencial tranquilo" y "junto a la circunvalación". Entiende cuándo un garaje está incluido en el precio o se vende aparte. Filtra los garajes presentados como apartamentos (sí, pasa).
Solo los anuncios clasificados como "pertinentes" llegan a Telegram. Ningún falso positivo, ningún ruido.
La deduplicación en Google Sheets
Cada anuncio de Subito tiene un ID único en la URL. Antes de enviar cualquier notificación, el workflow comprueba si ese ID ya está en la hoja de Google. Si está: se salta. Si no está: notifica + lo añade a la hoja con marca de tiempo.
La hoja funciona como una cola de ventana deslizante: cada mes limpio las filas con más de 30 días. Esto permite volver a notificar anuncios que mientras tanto se han actualizado con un precio distinto, sin seguir acumulando datos.
Google Sheets es la opción más pragmática aquí. Podría ser una base de datos SQLite, pero Sheets me permite mirar la lista de anuncios ya vistos desde el móvil, sin abrir ninguna otra herramienta.
Resultados tras 3 meses
La tasa de filtrado es de aproximadamente el 98%: de 2.400 anuncios procesados, solo 47 llegaron a Telegram. De esos, 11 valían una visita. Tiempo dedicado a la búsqueda cada semana: solo el que se tarda en leer las notificaciones cuando llegan.
Cómo replicarlo
El workflow en JSON está disponible en el repositorio público de GitHub. Los requisitos son: n8n autoalojado (también funciona en una Raspberry Pi), una clave de API de Gemini (el nivel gratuito cubre de sobra este volumen de peticiones) y acceso a la API de Google Sheets.
La configuración inicial lleva unas 2 horas, sobre todo para configurar los filtros de Subito y las credenciales de Google. Después el sistema funciona solo — el único mantenimiento recurrente es limpiar la hoja de Sheets una vez al mes.
La ventaja no es la velocidad — es la atención selectiva. Solo recibo lo que importa, cuando importa. La IA no encuentra la casa por ti: te ahorra el tiempo de buscarla en el sitio equivocado.