- Visión General del Proyecto
- Objetivo del Proyecto
- Problemática y Solución
- Ruta de Implementación
- Flujo de trabajo
- El equipo, dos roles, un solo objetivo
Este repositorio contiene mi trabajo en la capa de ingeniería de datos del proyecto Sustainable Growth Monitor (SGM), encargado de la preparación y estructuración de datos para su uso en análisis y visualización.
🌱 Proyecto: Análisis de Sustentabilidad & Negocios (No Country)
Una solución integral para la gestión de datos de sustentabilidad en PyMEs, combinando ingeniería de datos y visualización avanzada.
- 🚀 App en Producción: Sustentabilidad BI (Streamlit)
- 👥 Colaboración Grupal: GitHub No-Country Team
- 📺 Video Demo: Showcase No Country
En el entorno empresarial actual, las pequeñas y medianas empresas (PYMES) enfrentan el desafío de equilibrar la rentabilidad financiera con la responsabilidad ambiental y social. El Sustainable Growth Monitor es una infraestructura de datos diseñada para cerrar la brecha entre el rendimiento económico y los criterios ESG (Environmental, Social, and Governance). Como producto de datos, esta solución consolida métricas críticas en una "Fuente Única de Verdad" (Single Source of Truth) . Al integrar indicadores de sostenibilidad en un entorno unificado, transformamos la toma de decisiones: pasamos de un cumplimiento reactivo a una gestión proactiva. La sostenibilidad deja de ser un costo para convertirse en una palanca de eficiencia operativa.
Desarrollar un ecosistema de análisis que permita a las PYMES monitorear su desempeño integral. La premisa central es técnica y estratégica: la sostenibilidad y la rentabilidad están correlacionadas positivamente . El objetivo es demostrar que la eficiencia en recursos impacta directamente en el margen neto.
- Centralización de Datos : Unificar KPIs financieros y métricas ESG mediante una arquitectura de datos robusta y escalable.
- Gestión por Excepción : Implementar sistemas de alertas y umbrales dinámicos para identificar desviaciones críticas en tiempo real.
- Análisis de Correlación : Evidenciar el impacto de iniciativas "verdes" (ej. reducción de consumo energético sobre el estado de resultados).
Sector: Sostenibilidad Audiencia objetivo: PyMEs que buscan integrar la gestión de impacto ambiental con su rentabilidad operativa, sin necesidad de herramientas separadas o equipos especializados en ESG.
Históricamente, las PYMES operan con silos de información . Utilizan hojas de cálculo independientes para finanzas, consumo energético y recursos humanos, lo que impide visualizar cómo el ahorro de recursos optimiza los beneficios económicos.
Hemos diseñado un panel interactivo que actúa como un integrador inteligente de datos:
- Integración de Datos : Conexión de fuentes financieras, ambientales y sociales en un motor de procesamiento eficiente (DuckDB).
- Transparencia ESG : Proporciona trazabilidad real, permitiendo a las empresas transitar desde el greenwashing hacia una gestión basada en evidencias.
- Valor para Stakeholders : Facilita la generación de reportes para inversionistas y clientes que exigen altos estándares de responsabilidad corporativa.
S03-26-Equipo-47-Business-Intelligence/
│
├── database/
│ ├── schema.sql # DDL completo (tablas, FK, índices)
│ └── technova.duckdb # Base de datos analítica (DuckDB)
│
├── etl/
│ └── load.ipynb # Script de carga a DuckDB (full-refresh)
│
├── notebooks/
│ ├── 01_load_data.ipynb # Extracción desde GitHub
│ ├── 02_clean_data.ipynb # Limpieza y validación
│ └── 03_build_star_schema.ipynb # Construcción del modelo estrella
│
├── data/
│ ├── loaded/ # Datos raw (descargados)
│ ├── clean/ # Datos limpios
│ └── curated/ # Modelo estrella (CSV)
│
├── image/README/
| ├── modelo_datos.png
| ├── ruta_implementacion.png
| ├── mejoras_propuestas.png
| └── sostenibilidad_en_rentabilidad.png
|
├── .gitignore # Ignorar archivos sensibles o de gran tamaño
├── config.yaml
├── home.py
├── main.py
├── pyproyecto.toml
├── README.md # Este archivo
└── requirements.txt # Dependencias Python
El script etl/load.ipynb no reemplaza los notebooks, sino que los complementa:
| Notebook | Scripts |
|---|---|
| Genera los CSV | Carga los CSV a Duckdb |
| Transformación (T) | Carga (L) |
| Análisis exploratorio | Proceso automatizado y reproducible |
El flujo completo es:
GitHub (raw)
↓
01\_load\_data.ipynb → data/loaded/
↓
02\_clean\_data.ipynb → data/clean/
↓
03\_build\_star\_schema.ipynb → data/curated/
↓
etl/load.ipynb → database/technova.duckdb (modelo estrella)
La solución se sustenta en un diseño de Modelo Estrella (Star Schema) implementado en DuckDB. Esta elección técnica es fundamental para optimizar el rendimiento de las consultas OLAP y permitir el cross-functional slicing, facilitando que un Data Product Manager pueda analizar, por ejemplo, la huella de carbono segmentada por el área de producción o por proyectos de sostenibilidad específicos.
Orígen de datos: sintéticos simulados para reflejar tendencias realistas. Se generan mediante scripts de Python que modelan comportamientos típicos (crecimiento de ingresos, reducción de consumo energético, fluctuaciones en la huella de carbono).
Modelo de Entidades:
- fact_monitoreo (Tabla de Hechos): Almacena el historial de mediciones. Incluye el atributo calidad_dato (Validado / Estimado / Provisional), esencial para construir la confianza ejecutiva en los reportes.
- dim_tiempo: Dimensionamiento temporal para análisis de series de tiempo.
- dim_metrica: Catálogo maestro que normaliza las reglas de negocio.
- dim_area: Estructura organizacional para análisis departamental.
- dim_empleado / dim_proveedor: Dimensiones operativas que enriquecen el análisis de impacto social y gobernanza.
- dim_objetivo: Entidad para el seguimiento de metas anuales y retorno de inversión en iniciativas verdes.
- dim_categoria: Entidad de identificación de categoría de productos.
*Atributos Clave de dim_metrica Contiene metadatos críticos como id_metrica, nombre, categoría (Financiera, E, S, G), unidad, prioridad y la fórmula de cálculo. Esta estructura permite escalar el sistema añadiendo nuevos KPIs sin alterar la lógica de las consultas existentes.
Origen de datos: sintéticos simulados para reflejar tendencias realistas. Se generan mediante scripts de Python que modelan comportamientos típicos (crecimiento de ingresos, reducción de consumo energético, fluctuaciones en la huella de carbono).
El motor de confiabilidad del sistema es su pipeline de Extracción, Transformación y Carga (ETL). Implementar prácticas de idempotencia y logging estructurado garantiza que los procesos de carga puedan re-ejecutarse sin duplicar datos y manteniendo una traza de auditoría completa en la tabla metadata_carga.
Flujo de Trabajo Técnico
| Notebook | Fase | Función Principal |
|---|---|---|
| 01_load_data | 🚀 Extracción | Ingesta desde raw y normalización inicial de tipos. (ej. Kwh_totales) |
| 02_clean_data | 🧹 Limpieza | Aplicación de reglas de calidad (ej. salarios o consumo negativo => 0) |
| 03_build_star_schema | ⭐ Modelado | Agregación de métricas y construcción de dimensiones únicas para el esquema estrella. |
Robustez e Integridad de Datos El sistema garantiza la integridad referencial del ecosistema ESG mediante la resolución proactiva de errores técnicos:
- Manejo de ConstraintException: Uso de subconsultas para la asignación manual de IDs en tablas de auditoría.
- Orden de Carga: Se garantiza la carga de dimensiones antes que hechos para evitar violaciones de Foreign Key.
- Validación de Tipos: Conversión explícita de fechas (resolución de AttributeError: .dt accessor) para asegurar que la lógica temporal de negocio sea consistente en todos los niveles.
| Concepto | Descripción |
|---|---|
| Propósito | Descargar los archivos CSV originales desde el repositorio remoto y guardárlos localmente. |
| Entradas | URLs públicas en GitHub (rama development) |
| Salidas | Archivos raw.csv en data/loaded/ |
| Transformaciones aplicadas |
Conversión inicial de fechas a datetime, cálculo de kwh_totales y tasa_reciclaje, manejo de comillas en personal_nomina. |
| Cuando ejecutarlo | Siempre que se necesiten los datos originales frescos (por ejemplo, si el equipo actualizó los CSVs en GitHub). |
Archivos generados:
data/loaded/
├── compras_raw.csv
├── consumo_energetico_raw.csv
├── encuestas_raw.csv
├── eventos_rrhh_raw.csv
├── personal_nomina_raw.csv
├── residuos_raw.csv
└── ventas_raw.csv
| Concepto | Descripción |
|---|---|
| Propósito | Aplicar reglas de calidad de datos para obtener datasets consistentes y sin errores. |
| Entradas | Archivos _raw.csv generados en el paso anterior. |
| Salidas | Archivos _clean.csv en data/clean/ |
| Tansformaciones aplicadas |
Eliminación de duplicados, corrección de valores fuera de rango, manejo de nulos, normalización de unidades. |
| Cuando Ejecutarlo |
Después de cada extracción, o si se modifican las reglas de limpieza. |
Archivos generados:
data/clean/
├── compras_clean.csv
├── consumo_energetico_clean.csv
├── encuestas_clean.csv
├── eventos_rrhh_clean.csv
├── personal_nomina_clean.csv
├── residuos_clean.csv
└── ventas_clean.csv
| Concepto | Descripción |
|---|---|
| Propósito | Construir las tablas de dimensiones y la tabla de hechos que alimentaránn el dashboard. |
| Entrada | Archivos _clean.csv generados en el paso anterior. |
| Salidas | Archivos CSV en data/curated/ (modelo estrella) |
| Transformaciones aplicadas |
Creación de dimensiones únicas (tiempo, área, empleado, proveedores, métricas), agregación de métricas por periodo, construcción de dact_monitoreo. |
| Cuando ejecutarlo |
Cada vez que se modifiquen los datos limpios o se quiera regerar un modelo estrella. |
Archivos generados:
data/curated/
├── dim_area.csv
├── dim_categoria.csv
├── dim_empleado.csv
├── dim_metrica.csv
├── dim_objetivo.csv
├── dim_proveedor.csv
├── dim_tiempo.csv
└── fact_monitoreo.csv
Problema actual: Los datos están fijos (simulados). Para usar el dashboard en una empresa real, alguien tendría que reemplazar manualmente los archivos en data/raw/ y re‑ejecutar los notebooks.
Mejora propuesta: Incorporar en la propia app de Streamlit un formulario de carga de archivos que permita al usuario subir sus propios CSV (con el mismo esquema esperado). El sistema validaría el formato, limpiaría los datos y reconstruiría la base de datos DuckDB automáticamente.
Valor para la empresa:
- Autonomía total – El cliente puede actualizar sus datos sin depender del equipo técnico.
- Reproducibilidad – La app se convierte en un producto cerrado que cualquier PyME puede usar con sus propios datos.
- Onboarding sencillo – Solo necesita exportar sus CSV con las columnas esperadas.
- Viabilidad técnica (Streamlit + DuckDB):
Ejemplo conceptual dentro de app.py
uploaded_file = st.file_uploader("Sube tus ventas (CSV)", type="csv")
if uploaded_file:
df = pd.read_csv(uploaded_file)
# Validar columnas mínimas
# Guardar en data/raw/ o procesar directamente
# Reconstruir la base de datos DuckDB
# Mostrar preview y opción de "actualizar dashboard"
Tiempo estimado de desarrollo: 1‑2 días (dependiendo de la complejidad de la validación).
Problema actual: El dashboard muestra solo datos históricos. La empresa no puede anticipar tendencias futuras (ej: ¿cuándo alcanzaré la meta de reciclaje?).
Mejora propuesta: Añadir un módulo de proyecciones utilizando modelos simples de series temporales (por ejemplo, regresión lineal, suavizado exponencial o Prophet). El usuario podría elegir una métrica (ingresos, huella de carbono, etc.) y un horizonte de predicción (3, 6, 12 meses). El gráfico mostraría histórico + predicción con un intervalo de confianza.
Valor para la empresa:
- Anticipación – Permite ajustar la estrategia antes de llegar a un umbral crítico.
- Planificación – Ayuda a presupuestar iniciativas de sostenibilidad (inversión en energías renovables, formación, etc.).
- Demuestra madurez analítica – Diferencia al dashboard de un simple reporte.
- Viabilidad técnica (Streamlit + statsmodels / scikit‑learn):
from sklearn.linear_model import LinearRegression
# o usar Prophet (más potente pero más lento)
# Entrenar con datos históricos de fact_monitoreo
# Predecir siguientes períodos
# Mostrar en Plotly con línea de tendencia y banda de incertidumbre
Tiempo estimado de desarrollo: 1‑2 días (modelo básico) o 3‑4 días (modelo avanzado con estacionalidad).
Problema actual: La PyME solo ve sus propios datos. No sabe si su tasa de reciclaje o su consumo energético están por encima o por debajo de la media de su industria.
Solución propuesta: Incorporar un módulo de benchmarking que permita cargar (o suscribirse a) métricas agregadas anonimizadas del sector. El dashboard mostraría, por ejemplo: “Tu huella de carbono está un 12% por debajo del promedio de empresas de tu tamaño en el rubro retail”.
Valor para la empresa:
Contexto externo – Saber si estás realmente mejorando frente a tu competencia.
Ventaja competitiva – Puedes certificar que estás por encima del estándar ESG.
Atractivo comercial – Los informes de sostenibilidad con benchmarks son más valorados por inversores.
Viabilidad técnica:
- Requiere una base de datos de benchmarks (puede ser un CSV público o un servicio externo).
- La carga podría ser manual (el usuario sube un archivo de referencia) o conectarse a APIs de organismos sectoriales.
Esfuerzo estimado: 2‑3 días.
El Sustainable Growth Monitor demuestra que el éxito empresarial moderno es indisociable de la responsabilidad integral. A través de una arquitectura de datos escalable en DuckDB, una metodología de ingeniería rigurosa y un dashboard interactivo en Streamlit, este MVP profesional proporciona a las PyMEs la capacidad de competir en un mercado que exige transparencia y eficiencia.
La premisa fundamental del proyecto es que la sostenibilidad y la rentabilidad están correlacionadas positivamente. El dashboard incluye un módulo específico de análisis de correlaciones (pages/4_Correlaciones.py) que permite probar esta hipótesis con datos reales. Los análisis implementados permiten descubrir relaciones como:
- Consumo energético vs. Ingresos: Mide cómo la actividad económica impacta en el uso de recursos, y calcula la intensidad energética (kWh/ARS) para evaluar la eco-eficiencia.
- Tasa de reciclaje vs. Satisfacción laboral: Explora si las prácticas sostenibles mejoran el clima laboral y el orgullo de pertenencia.
- Capacitación vs. Ingresos: Evalúa el retorno de la inversión en desarrollo profesional.
- Análisis personalizado: El usuario puede seleccionar cualquier par de métricas para calcular su correlación de Pearson, obteniendo scatter plot con regresión lineal, coeficiente y nivel de significancia.
Estos análisis, acompañados de interpretaciones automáticas en lenguaje natural, transforman los datos en evidencia accionable: las iniciativas verdes no son un costo, sino una inversión con retorno medible.
| Hallazgo | Implicancia Estratégica |
|---|---|
| Mejora continua en eficiencia energética | La intensidad energética (kWh/ARS) muestra una tendencia decreciente, indicando que el crecimiento de ingresos no está atado linealmente al consumo de recursos. Oportunidad para certificaciones y ahorros. |
| Correlación positiva entre reciclaje y satisfacción laboral | Las prácticas ambientales fortalecen la cultura organizacional. Comunicar los logros ESG puede mejorar la retención del talento. |
| Impacto de la capacitación en ingresos | Existe una relación positiva (aunque no siempre lineal) entre horas de formación y resultados comerciales. Validación cuantitativa para justificar presupuestos de RRHH. |
| Alertas tempranas sobre desviaciones críticas | El sistema de semáforo (🔴🟡🟢) detecta automáticamente márgenes netos bajos (<5%), consumo energético excesivo (>150,000 kWh) o tasas de reciclaje insuficientes (<30%), permitiendo actuar antes de que se conviertan en problemas financieros o reputacionales. |
| Dimensión | Beneficio Concreto |
|---|---|
| Toma de decisiones basada en datos | Los KPIs financieros y ESG se integran en una única fuente de verdad, eliminando silos y contradicciones entre hojas de cálculo. |
| Gestión por excepción | Las alertas visuales y las recomendaciones dinámicas priorizan las acciones correctivas, ahorrando tiempo de análisis. |
| Transparencia y reporting | La trazabilidad desde los datos raw (CSV) hasta el dashboard permite generar reportes para inversores, clientes o reguladores con total confianza. |
| Ventaja competitiva | Demostrar desempeño ESG sólido es un diferenciador clave en mercados cada vez más exigentes. |
La "Sostenibilidad Rentable" se establece aquí como el nuevo estándar competitivo. Al monitorear eficazmente la huella de carbono y el consumo de recursos en paralelo con los resultados financieros, las empresas no solo optimizan su resiliencia ante riesgos climáticos o regulatorios, sino que fortalecen su estructura de costos y su propuesta de valor ante inversores y clientes.
Este proyecto demuestra que invertir en sostenibilidad es invertir en rentabilidad a largo plazo. El código, los datos simulados y el dashboard están diseñados para ser fácilmente adaptables a casos reales, proporcionando una herramienta valiosa para la gestión integral del desempeño empresarial.
"Lo que no se mide, no se mejora. Lo que se mejora, se rentabiliza."
El repositorio está listo para clonar y ejecutar. Sigue las instrucciones de configuración y en 10 minutos tendrás el dashboard funcionando con datos simulados. 🔗 Enlace al repositorio
Sigue estos pasos para ejecutar el proyecto en local.
- Python 3.12 o superior instalado.
- Git (opcional, para clonar el repositorio).
- Conexión a internet (para descargar dependencias y datos simulados desde GitHub).
git clone https://github.com/No-Country-simulation/S03-26-Equipo-47-Business-Intelligence.git
cd S03-26-Equipo-47-Business-Intelligence
Windows
python -m venv venv
venv\Scripts\activate
Linux/Mac
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt
Si no tienes el archivo requirements.txt, instala manualmente los paquetes principales:
pip install pandas duckdb streamlit plotly jupyter
Desde la raíz del proyecto, lanza Jupyter Lab o Notebook:
jupyter notebook
Abre y ejecuta en orden los siguientes notebooks (puedes usar Cell -> Run All en cada uno):
| Orden | Notebook | Función |
|---|---|---|
| 1 | notebooks/01_load_data.ipynb |
Descarga los datos raw desde GitHub |
| 2 | notebooks/02_clean_data.ipynb |
Limpia y valida los datos |
| 3 | notebooks/03_build_star_schema.ipynb |
Construye el modelo estrella (dimensiones y hechos) |
Ejecutar el script de carga (full-fresh)
python etl/load.ipynb
Este comando creará la base de datos database/technova.duckdb con todas las tablas listas para consumir.
streamlit run main.py
Nota: El archivo main.py será desarrollado por el BI Developer. Si aún no existe, puedes comenzar con un esqueleto básico que cargue la base de datos y muestre una tabla de ejemplo.
Puedes hacer consultas directas a DuckDB desde la terminal:
python -c "import duckdb; conn = duckdb.connect('database/technova.duckdb'); print(conn.execute('SHOW TABLES').fetchall())"
Proyecto realizado por Marely Cárcamo con repositorio espejo del Hackathon de No Country. Este repositorio es un MVP profesional que demuestra cómo la sostenibilidad puede ser un motor de rentabilidad para las PYMES. El código, los datos simulados y el dashboard están diseñados para ser fácilmente adaptables a casos reales, proporcionando una herramienta valiosa para la gestión integral del desempeño empresarial. Abril 2026.





