Migrador de datos
Tu Excel desordenado se convierte en una lista limpia, lista para pasar a tu sistema.
En vivo. Corre en tu navegador.
Como lo ve tu cliente
- El problema que resuelve
- Pasar clientes o pedidos de una hoja de cálculo a un sistema nuevo suele ser trabajo a mano: fechas escritas de mil formas, teléfonos sin indicativo, correos con errores y filas repetidas.
- Un ejemplo de la vida real
- Imagina una ferretería que cambia de programa de facturación. Exporta su lista de clientes, la pasa por el migrador y recibe una lista limpia para importar y otra con las filas que hay que revisar.
- Lo que vas a ver
- Subes un archivo, o usas el de ejemplo, y enseguida ves qué se corrigió, cuántas filas quedaron bien y qué falta revisar en cada una, con un antes y un después.
Por dentro
Qué hace, en términos técnicos
Sube un CSV o un Excel desordenado y mira cómo se detectan columnas, se normalizan fechas, teléfonos y correos, y se separan las filas válidas de las que tienen errores.
- Tecnologías
- TypeScript
- PapaParse
- Zod
- Python
- FastAPI
- python-calamine
- charset-normalizer
- Respaldado por
Arquitectura
1.Tu navegador (TypeScript)
PapaParse lee el CSV, se detecta el tipo de cada columna, se normaliza valor por valor y Zod valida cada fila. Por defecto el archivo no sale de tu equipo.
2.Motor en Python (FastAPI en Render)
Opcional: lee Excel (.xlsx y .xls), detecta la codificación y acepta archivos más grandes. Procesa en memoria y no guarda nada.
3.Un solo contrato
La forma del resultado se define en Zod, se exporta a JSON Schema y las pruebas de Python validan cada respuesta contra él.
4.Prueba de paridad
En cada cambio compara la salida de Python con la del navegador sobre los mismos archivos.
En cifras
- motores con las mismas reglas, en el navegador y en Python
- 2
- por archivo, como máximo, en el motor de Python
- 10 MB
- filas por archivo, como máximo, en el motor de Python
- 50.000
El código
Decisiones
- DEC-022: Migrador de datos en Python (FastAPI) en Render (se abre en otra pestaña)
- DEC-028: Orden de las fechas con números (se abre en otra pestaña)
Registradas en docs/DECISIONES.md, con su contexto y las alternativas descartadas.
Pruébalo con una lista de clientes
- Sube tu archivo. en curso.
- Se ordena solo. pendiente.
- Revisa el resultado. pendiente.
- Descarga tu lista limpia. pendiente.
Un CSV o un Excel con tus datos, o prueba con el archivo de ejemplo.
Arrastra aquí tu lista de clientes
Un CSV exportado de tu programa actual o de tu hoja de cálculo. Se ordena aquí mismo: tu archivo no sale de tu equipo.
clientes-ejemplo.csv: 37 filas, como salen de un sistema viejo.
Sube tu archivo
Hasta 5 MB y 20.000 filas, separado por comas o punto y coma, con los nombres de las columnas en la primera fila.
Ver cómo viene el archivo de ejemplo
Nombre completo ;Correo Electrónico;Teléfono;Fecha de registro;Monto (COP);Ciudad ana maría GÓMEZ ;[email protected] ;300 555 0101;03/04/2024;$1.200.000,50;bogotá CARLOS andrés ruiz;[email protected];+57 (310) 555-0102;2024-04-05;1200000.5;Medellín luisa fernanda díaz; [email protected];3125550103;3 de abril de 2024;850.000;cali josé del carmen pérez;[email protected];(+57) 315 555 0104;15/01/2023;$ 2.500.000;SANTA MARTA María de los Ángeles Torres;[email protected];320-555-0105;7 abr 2024;350000;Barranquilla pedro salazar;pedro.salazar@example;301 555 0106;12/05/2024;$780.000;Pereira ana maría gómez;[email protected];+57 300 555 0101;2024-04-03;1200000.5;Bogotá marta ríos;marta.rios.example.com;311 555 0107;20/06/2024;95.000;Bucaramanga Jorge Iván Restrepo;[email protected];555 0108;01/07/2024;1.500.000;Manizales ;;;;; Sofía Martínez;[email protected];3165550109;31/02/2024;420000;Cartagena andrés felipe castro;[email protected];3175550110;04/13/2024;$ 1.050.000;Cúcuta Valentina Rojas;[email protected];318 555 0111;2024-08-19;mil doscientos;Ibagué CARLOS andrés ruiz;[email protected];+57 (310) 555-0102;2024-04-05;1200000.5;Medellín daniela herrera;[email protected];+57 300 555 01;10/09/2024;640.000,00;Villavicencio Camilo Andrés Vargas;camilo [email protected];3195550113;5 de octubre de 2024;2.000.000;Neiva ; ; ;;; natalia gómez;[email protected];3205550114;23/10/2024;$3.450.000;Pasto luis eduardo moreno;[email protected];300 555 0115;2024/11/02;150000.75;tunja paula andrea suárez;[email protected];3015550116;8 de noviembre de 2024;$ 980.500;Armenia luisa fernanda díaz;[email protected];+573125550103;03/04/2024;850000;Cali Ricardo Peña;[email protected];+1 (415) 555-0117;12/12/2024;USD 1,250.00;Miami Gabriela Ortiz;[email protected];+57 601 555 0118;14/02/2025;275.000;bogotá d.c. Esteban Quintero;[email protected];3105550119;;;Popayán martín alonso lópez;[email protected];3115550120;2 de enero de 2025;$1.2.3;Montería Laura Jiménez;laura.jimenez@exa mple.com;31255501;17/03/2025;560.000;Sincelejo Diego Fernando Ruiz;[email protected];3135550122;miércoles 9 de abril de 2025;1.000.000;Valledupar Isabella Cárdenas;[email protected];314 555 0123;22-04-2025;720000;Riohacha Mateo Sánchez;[email protected];315 555 0124;30/04/2025;$ 1.800.000,00;Quibdó Mariana Pineda;[email protected];3165550125;5/5/25;99.900;Florencia Sebastián Giraldo;[email protected];3175550126;2025-05-12;2.300.000;Yopal;VIP camila andrea mejía;[email protected];3185550127;3 jun 2025;$450.000;Leticia JUAN PABLO OSORIO;[email protected];319 555 0128;15.06.2025;1250000;Mocoa Lucía Fernández;[email protected];+57 320 555 0129;julio 1, 2025;$ 600.000;San Andrés Tomás Herrera;[email protected];0057 300 555 0130;20/07/2025;3.100.000,25;Arauca samuel ospina;[email protected];301-555-0131;2025-08-01;875000;Puerto Carreño
Qué va a pasar con tu archivo
Son cinco pasos, en este orden. Sube un archivo o prueba con el de ejemplo para ver qué hizo cada uno.
Paso 1: Leer el archivo
PapaParse lee el CSV, detecta si el separador es coma o punto y coma y toma la primera fila como encabezados.
Paso 2: Detectar columnas
Pasa los encabezados a nombres sin tildes ni espacios y revisa hasta 200 valores por columna para saber si cada una tiene correos, teléfonos, fechas, montos o texto. En las fechas con números (03/04/2024) decide si va primero el día o el mes.
Paso 3: Normalizar
Quita espacios de más, escribe los nombres en formato título y los correos en minúscula, pasa los teléfonos a formato internacional (+57 si son 10 dígitos que empiezan por 3), las fechas a año-mes-día (con el día o el mes primero, según la columna) y los montos a número.
Paso 4: Validar
Arma un esquema de Zod con los tipos detectados y revisa cada fila: correo válido, teléfono internacional, fecha que exista y monto numérico. Las celdas vacías se permiten.
Paso 5: Resultado
Separa las filas válidas de las que tienen errores y cuenta los duplicados y las filas vacías que quedaron por fuera.
¿Lo quieres para tu negocio?
Esto es parte de lo que construyo en el servicio de automatizaciones. Mira qué incluye o calcula un presupuesto de referencia para tu caso.
¿Te interesa cómo está hecho? Míralo por dentro
Cómo funciona
Tiene dos motores con las mismas reglas. Por defecto todo ocurre en tu navegador (TypeScript): el archivo no sale de tu dispositivo. Si eliges el servidor, una API en Python con FastAPI recibe el archivo, lo procesa en memoria sin guardarlo y devuelve el mismo resultado; además lee Excel (.xlsx y .xls), detecta la codificación de los CSV exportados en español y acepta archivos más grandes. Una prueba automática compara los dos motores con los mismos archivos en cada cambio.