La aplicación que mapea el impacto de las viviendas vacacionales en Las Palmas de Gran Canaria
Éxodo Vecinal es una herramienta interactiva que visualiza cómo las viviendas vacacionales (Airbnb, alquiler turístico) están transformando los barrios de Las Palmas de Gran Canaria.
Combina un mapa interactivo con datos geolocalizados de cada vivienda turística, un chatbot con RAG que responde preguntas usando datos reales, y una sección de noticias con artículos actualizados sobre el tema.
Ejemplo: "¿Cuántas viviendas turísticas hay en Vegueta?"
El modelo sentence-transformers convierte la pregunta en un vector de 384 números. Se ejecuta 100% local — los datos no salen del servidor.
El vector se envía a Pinecone (base de datos vectorial) que busca los 5 fragmentos de texto más relevantes sobre el barrio preguntado.
Los fragmentos + la pregunta se envían a Groq (Llama 3.3), que genera una respuesta en español canario basada en los datos reales.
El usuario recibe la respuesta junto con las fuentes (barrio, tipo de dato, años) y los datos se muestran en el mapa.
Instituto Canario de Estadística. Ocupación de viviendas vacacionales por mes (2019–2025).
Local5,144 viviendas turísticas registradas en LPGC con coordenadas GPS.
LocalInstituto Nacional de Estadística. Población por municipio (2015–2024).
LocalCoordenadas de anuncios de Airbnb en toda la isla de Gran Canaria.
LocalArtículos de prensa sobre vivienda vacacional en Canarias. Actualizado diariamente.
ExternoLímites geográficos de los barrios de LPGC en formato GeoJSON.
Local| Capa | Tecnología |
|---|---|
| Backend | Python 3.11 + FastAPI + Uvicorn |
| Embeddings | sentence-transformers (all-MiniLM-L6-v2) |
| Vector DB | Pinecone (free tier, 32 vectores) |
| LLM | Groq — Llama 3.3 70B (free tier) |
| Frontend | HTML + CSS + JS vanilla + Leaflet.js |
| Mapa | Leaflet.js + OpenStreetMap tiles |
| Servidor | OVH VPS (Debian 12, 2GB RAM) |
| SSL | Let's Encrypt (certbot) |
| Noticias | Google News RSS + feedparser |
Navegador web
SSL + reverse proxy
/opt/exodovecinal — Python 3.11
Leaflet.js + Chat UI
/query /map-data /news
sentence-transformers (local)
Vector DB (USA)
Llama 3.3 (LLM)
El sistema RAG funciona con fragmentos de texto (chunks) que contienen información estructurada sobre cada barrio. Cada chunk es como una "ficha" con datos:
{
"id": "turismo_vegueta",
"text": "En el barrio de Vegueta, según datos del Registro
de Turismo de Canarias, hay 187 viviendas turísticas
registradas, representando el 3.6% del total...",
"metadata": {
"source": "Registro de Turismo",
"barrio": "Vegueta",
"tipo": "viviendas_turisticas",
"viviendas": 187
}
}
Hay 32 chunks en total: 5 de contexto general (ISTAC, datos globales) y 27 por barrio individual (con datos de ISTAC, turismo y Doorstep).
Las 5,144 viviendas del Registro de Turismo tenían coordenadas GPS pero sin barrio asignado. Se hizo reverse geocoding cruzando las coordenadas con los polígonos GeoJSON de los barrios.
Resultado: 90.7% de cobertura (4,665 de 5,144 viviendas asignadas a un barrio). Las que no se pudieron asignar están en zonas limítrofes o sin polígono definido.
⚠️ Aviso de escalabilidad. Los servicios gratuitos (Pinecone, Groq) tienen límites de uso. No podemos predecir cómo escalarán los costos si entra mucha gente a la vez. Si la aplicación va lenta, no responde, o directamente deja de funcionar, probablemente es porque se han agotado las cuotas gratuitas. Lo sentimos — es un proyecto hecho con recursos mínimos. Si quieres ayudar a mantenerlo vivo, el código es abierto y puedes desplegar tu propia copia.
Un scraper automático ejecuta búsquedas en Google News RSS cada día a las 6:00 AM. Busca por 6 queries diferentes ("vivienda vacacional Las Palmas", "turistificación Canarias", etc.) y filtra artículos relevantes.
Los artículos se guardan en data/raw/news_articles.json y la API los sirve
directamente. No necesita reiniciar el servicio — lee el archivo en cada petición.
El proyecto es código abierto en GitHub: github.com/imaginabit/gc-housing-rag