Convertir anuncios dispersos en preguntas analizables
El mercado inmobiliario de Lima contiene información distribuida en anuncios públicos y formatos difíciles de analizar directamente. El proyecto busca construir un flujo completo —desde la extracción hasta la visualización— para responder preguntas sobre precios, distritos, tipos de propiedad y características de la oferta.
Usuarios y alcance
Está pensado como proyecto de portafolio y análisis: una persona técnica puede revisar el pipeline y una persona de negocio puede explorar resultados agregados mediante filtros y gráficos.
Del dato público al insight de negocio
Extracción
Obtención de información pública y parseo de estructuras embebidas para crear una capa de trabajo reproducible.
Transformación
Aplanamiento de estructuras, normalización de precios y características, y preparación de tablas analíticas.
Almacenamiento
PostgreSQL con dimensiones y hechos para consultar propiedades, ubicaciones, anunciantes y métricas.
Visualización
Dashboard Streamlit/Plotly con rankings, distribución, mapa, tipos de propiedad y filtros cruzados.
Un modelo dimensional para análisis reproducible
La separación de capas permite transformar y analizar sin distribuir los datos crudos ni acoplar el dashboard a una captura específica. El repositorio público conserva el código de transformación, el esquema, resultados agregados y el notebook de análisis.
public listings │ ▼ Python extraction / parsing │ ▼ transform + quality rules │ ├── valid rows / flagged outliers │ ▼ PostgreSQL Star Schema │ ▼ Streamlit + Plotly dashboard Published repository: aggregated data + ETL + schema + analysis
Marcar problemas sin borrar la historia
Una decisión importante fue no eliminar automáticamente los precios atípicos. El pipeline calcula límites mediante IQR, agrega una bandera de validez y hace que las consultas analíticas utilicen únicamente registros marcados como válidos. Así se conserva la trazabilidad de lo observado y se evita presentar errores de origen como conclusiones de mercado.
- La carga mediante UPSERT permite ejecutar el proceso más de una vez sin duplicar entidades.
- El modelo dimensional separa dimensiones de ubicación y anunciante de la tabla de hechos.
- El repositorio no incluye datos crudos ni el código de recolección automatizada completo; publica resultados agregados y capas de análisis.
Planificación técnica asistida por IA
Este repositorio contiene un prompt de planificación técnica versionado en `.github/prompts/plan-urbaniaDatos.prompt.md`. La IA se utilizó para estructurar el plan, explorar decisiones y acelerar documentación; la selección del modelo de datos, reglas de calidad y validación de resultados fueron revisadas manualmente.
Antes del código
La planificación ayudó a separar extracción, transformación, almacenamiento, análisis y publicación.
Después del código
Los resultados se validaron con consultas, métricas agregadas y revisión del comportamiento de filtros del dashboard.
Resultados visibles y estado de la demo
- El README documenta hallazgos agregados sobre precios, distritos, tipos de propiedad y distribución de características.
- El repositorio incluye `schema.sql`, `load_db.py`, `app.py`, notebook, CSV agregados y un GIF del dashboard.
- Existe un enlace a Streamlit, pero la disponibilidad pública debe verificarse antes de presentarlo como demo confiable.
- La documentación mantiene el alcance académico y evita publicar los datos crudos de la fuente original.
Hacer el pipeline más fácil de reproducir
La siguiente etapa es recuperar una demo estable, añadir validaciones automatizadas de esquema y calidad, documentar un dataset pequeño de prueba y separar con claridad el modo de análisis local del modo de visualización pública.