La conversación con CFOs de pymes latinoamericanas casi siempre llega al mismo punto: tienen tantos sistemas que ya nadie sabe cuál tiene la verdad. El ERP dice 100, el CRM dice 87, el Excel del director comercial dice 112, y el balance del contador externo dice algo distinto. Cuando te llegan los reportes mensuales, los números son promedios de promedios. Cuando los datos se unifican, los problemas se anuncian solos.
Un data lake en capas no es un proyecto de infraestructura, es una decisión de negocio: dejar de operar con datos viejos y desconectados. Esta guía cubre la arquitectura que usamos en Catalizadora para empresas de 20 a 300 empleados en LATAM, con stack abierto y costos predecibles.
Las tres capas, en palabras llanas
Bronze es el raw. Llega un evento del POS, lo escribes tal cual. Llega un registro del ERP, lo escribes tal cual. Nada se transforma. La regla: si tu fuente original desaparece mañana, Bronze es tu seguro.
Silver es la normalización. Tipos de dato consistentes (fecha siempre es timestamp, no string), nombres de columna unificados, duplicados eliminados, foreign keys resueltos. Es donde "Cliente_Nombre" del ERP y "nombre_cliente" del CRM se vuelven customer_full_name.
Gold es donde el negocio vive. Materialized views que el dashboard consulta en milisegundos. Métricas de negocio: ingresos_diarios_por_sucursal, clientes_morosos_60_dias, inventario_negativo_anomalia. Si tu CEO mira un número en tiempo real, está mirando Gold.
Stack que recomendamos (sin Snowflake)
| Capa | Tecnología | Por qué |
|---|---|---|
| Ingesta | Python workers con psycopg2 + PyArrow |
Control total, sin licencias |
| Bronze (estructurado) | PostgreSQL (Supabase) en tablas bronze_* |
RLS nativo, snapshot fácil |
| Bronze (raw masivo) | GCS o S3 en parquet | $0.02/GB/mes, infinito |
| Silver | PostgreSQL con vistas materializadas | Refresh incremental |
| Gold | PostgreSQL + dbt models | Versionado, tests, lineage |
| OCR (si aplica) | Tesseract local o Google Vision API | Costo por página, no por usuario |
| Dashboards | Metabase open source o React custom | Sin licencias por usuario |
| Orquestación | cron + scripts, o Airflow si escala | Empieza simple |
El caso real: distribuidora de servicios en Guatemala
Una empresa con 10 años de operación, 197 tablas en SQL Server 2019, datos legacy desordenados, 13 millones de filas históricas. Migración a la arquitectura Bronze/Silver/Gold sobre Supabase + dbt en 12 semanas:
- 3.6M filas migradas en 48 horas con chunking paralelo por PK range
- 1.17 TB en GCS como bronze parquet raw, costo mensual: 25 USD
- 197 snapshots → 825 vistas Silver → 75 tablas Gold materializadas
- Verificación fila-a-fila: source = bronze = silver = gold, contadores y hashes
- 57 RLS policies + 17 roles RBAC para multi-tenant (100 franquicias en la misma base)
Al cuarto mes el equipo del cliente operaba el sistema sin nuestra intervención. El costo operativo mensual quedó en menos de 200 USD (Supabase Pro + GCS + Google Vision API esporádico).
Las 5 decisiones que te ahorrarán meses
1. Bronze no se toca, jamás
Si un equipo intenta "limpiar" la capa Bronze porque "los datos están sucios", detén el proyecto. Bronze existe precisamente porque los datos están sucios y necesitas auditarlo. La limpieza va en Silver, donde puedes versionar la lógica y rehacerla cuando descubras un edge case.
2. Identifica un PK confiable por entidad desde la semana 1
El error más caro es asumir que el sistema fuente tiene una llave primaria estable. En 4 de cada 5 ERPs legacy LATAM hay tablas donde el "id" se recicla, o donde existen registros sin id que el sistema sólo identifica por (sucursal, fecha, secuencia). Resolverlo en semana 1 te ahorra rehacer Silver en semana 8.
3. Snapshots diarios completos, no diferenciales
Para tablas de menos de 50 millones de filas, snapshot completo diario es más barato (en tiempo de ingeniero) que cualquier sistema CDC. Storage es ridículo. Sólo cuando llegas a tablas grandes (más de 500M filas) o latencia menor a 5 minutos, invierte en debezium o equivalente.
4. Materializa Gold con refresh nocturno + on-demand
REFRESH MATERIALIZED VIEW CONCURRENTLY a las 3am para todo, más endpoints que disparan refresh on-demand cuando un usuario hace una acción específica (ej: cerrar un período contable). El CEO ve datos de menos de 24 horas, el área financiera ve datos del minuto cuando los necesita.
5. Cada Gold tiene un test dbt
Antes de mostrar un número en un dashboard, hay un test que valida invariantes: ingresos_diarios >= 0, count(clientes_activos) <= count(clientes_total), sum(deuda_pendiente) == sum(facturas_no_pagadas). Sin tests, tu dashboard miente con confianza y nadie se entera hasta que el auditor pregunta.
Lo que rara vez te dicen sobre data lakes
Costo real no es la infraestructura. En el proyecto guatemalteco, la infra Supabase + GCS sumó menos de 3,000 USD al año. El costo real fue las horas humanas para entender qué significaba cada tabla legacy, qué reglas no documentadas tenían los procesos, y qué iba a romper si cambiábamos algo. Presupuesta 70% del proyecto en discovery + ingeniería, no en cloud.
Los hallazgos invisibles aparecen solos. En las primeras 6 semanas, los tres descubrimientos que más impactaron al cliente no fueron parte del scope:
- Inventario con cantidades negativas en 12 sucursales (problema de proceso)
- Servicios prestados pero nunca facturados (fuga de ingresos calculable)
- Archivos bancarios editados manualmente en formato proprietary (riesgo de integridad)
Ningún reporte mensual los había revelado. El data lake los expuso en consultas SQL simples.
Capacita por departamento, no por usuario. Una sesión de 90 minutos por departamento, grabada, con los dashboards específicos de ese rol. No intentes capacitar transversalmente — nadie se acuerda.
Próximos pasos
Si tu empresa tiene 4 o más sistemas desconectados y al menos un evento mensual donde el CEO pregunta "¿pero cuál número es el correcto?", un data lake en capas paga su costo en menos de 6 meses. La arquitectura abierta descrita aquí evita lock-in con cloud vendors y deja el código + datos a tu nombre.
En MAGIA Core entregamos esta arquitectura completa en 12 semanas, incluyendo discovery, modelos dbt, dashboards por rol y capacitación departamental. Sin retainers, sin licencias atadas, código transferido a tu equipo en la semana 12.