Full-stack · Calidad de datos En producción
Data Center
Una plataforma que revisa los datos de pedidos y envíos de un negocio online, encuentra los que están mal cargados y los convierte en tareas para que alguien los corrija, con responsable y fecha límite. Está hecha con Python y Next.js, y se puede probar sin crear una cuenta.
226 pruebas automatizadas 50+ funciones en su API 45 min de demo sin registrarse
Dashboard: KPIs de calidad calculados sobre filas
El problema
Un pedido con precio negativo, una dirección sin número o un peso imposible parecen detalles, hasta que frenan una entrega o un cobro. Si nadie los ve a tiempo y nadie queda a cargo de corregirlos, los errores se acumulan y no hay forma de saber si la situación mejora o empeora.
La solución
Cada archivo que se carga pasa por un control automático: se revisan las reglas del negocio, se marcan los valores que no tienen sentido y cada problema se convierte en una tarea con prioridad, responsable y plazo. Un panel muestra cómo evoluciona la calidad de los datos. Para probarla, la demo crea un espacio propio con datos de ejemplo que se borra solo al terminar.
- Datasets
- Carga de archivos CSV, control de que tengan las columnas esperadas, vista previa e historial de cada revisión.
- Calidad y anomalías
- Reglas por tipo de dato, cada una con su gravedad, más un detector de valores atípicos que marca los registros que casi seguro son un error de carga.
- Casos
- Cada problema se convierte en una tarea con estado, plazo, responsable, notas e historial, y se puede exportar.
- Acceso
- Inicio de sesión con usuario o con Google, roles y registro de lo que hace cada usuario. Quien entra a la demo trabaja en un espacio separado de los datos reales.
- Backend
- FastAPI · SQLAlchemy · Pydantic · Alembic · PostgreSQL 16 · pytest
- Frontend
- Next.js 16 · React 19 · TypeScript · Tailwind CSS · Recharts
- Infraestructura
- Cloudflare Worker (Next.js) → EC2 Ubuntu · Caddy → Docker Compose: FastAPI + PostgreSQL 16. La interfaz se sirve desde la red de Cloudflare y la API desde un servidor propio en AWS; los cambios de base de datos se aplican antes de aceptar tráfico y se respalda en cada despliegue.
Decisiones técnicas
Tres cambios para que lo que muestra el sistema sea confiable.
Números que se pueden comprobar
El panel mostraba un impacto en dólares y un puntaje de riesgo que salían de valores inventados: sobre un archivo casi limpio, el riesgo daba 100. Los reemplacé por conteos simples de filas con problemas. Ahora cada número del panel se puede verificar a mano contra el archivo.
calidad = % de filas sin ningún problema
Un detector que no se deja engañar
El detector de valores raros comparaba cada dato contra el promedio, y el promedio se deformaba justamente por los errores que tenía que encontrar: cuantos más errores había, menos detectaba. Lo cambié para que compare contra la mediana, que no se mueve por unos pocos valores extremos, y ahora sigue funcionando aunque una parte grande de los datos esté mal.
promedio → mediana: los errores ya no esconden a otros errores
Una demo pública que no puede tocar los datos reales
La demo usa la misma base que la aplicación real, así que el aislamiento no podía depender de acordarme de protegerlo en cada función nueva. La separación está en el propio modelo de datos y el acceso de la demo está denegado por defecto: si mañana agrego algo y me olvido de protegerlo, queda cerrado en vez de expuesto.
404, no 403: la respuesta no confirma ids ajenos