Hay una angustia muy particular al abrir una exportación de clientes de hace cinco años. La mitad de los números de teléfono tienen el prefijo +386 y la otra mitad no. Una columna llamada “Notas” mezcla tres tipos distintos de información, según quién estuviera apurado ese día. El nombre de la empresa de alguien está escrito de dos formas distintas en dos filas distintas, y realmente no sabes si es el mismo cliente.
¿No sería genial poder subir el desorden tal cual es, sin una limpieza previa, sin reformatear nada, y que el sistema te diga honestamente qué encontró, qué supuso y qué no pudo completar? Ahora puedes. Construimos Craft11 para que se adapte a cómo las empresas reales llevan realmente sus registros, no al revés.
Cómo funciona realmente
Cuando subes un archivo (CSV, Excel, PDF, incluso una lista de precios escaneada), va a parar a Neo, la parte de Craft11 que lee documentos. Neo no intenta encajar tu hoja de cálculo en un esquema rígido. Lee el contenido real y propone registros estructurados: esto parece un nombre, esto parece un correo electrónico, esto parece un rubro o categoría. Cada propuesta lleva un nivel de confianza (alto, medio, bajo), así que nunca te quedas adivinando qué campos son seguros y cuáles son una estimación razonable.
Todavía no se crea nada. Primero ves una tabla de revisión. Puntos de confianza junto a cada fila, edición en línea si algo está mal, un conteo claro de lo que está completo y lo que no. Apruebas lo que está bien. Puedes corregir una errata ahí mismo si quieres, o simplemente dejarla y corregirla después. Ambas opciones están bien.
Esta es la parte que sorprende a la gente: nunca te bloquea por datos imperfectos. Si a 47 de tus 300 contactos les falta el número de teléfono, los otros 253 igual se importan limpiamente, y obtienes una lista honesta y concreta de esos 47, no una advertencia vaga tipo “algunos registros pueden estar incompletos”, sino un conteo real que no desaparece hasta que realmente se resuelve. Stark puede ayudarte a rastrearlos conversacionalmente cuando tengas unos minutos. La brecha es informativa, no una barrera.
El problema de los duplicados que nadie menciona
Hay algo que no aparece en la mayoría de las presentaciones de herramientas de importación: ¿qué pasa cuando subes la misma lista dos veces? ¿O cuando un compañero ya cargó a medias un cliente manualmente, y ahora la importación masiva está a punto de crear una segunda copia de la misma persona con una ortografía ligeramente distinta?
Manejamos esto con una regla deliberadamente simple, aplicada automáticamente antes de que veas siquiera la pantalla de revisión. Para importaciones de clientes, es una coincidencia de correo electrónico sin distinguir mayúsculas y minúsculas con tus registros existentes. Para un catálogo de recursos, es una coincidencia de nombre sin distinguir mayúsculas y minúsculas. Cualquier fila que parezca un duplicado probable se marca y queda desmarcada por defecto en la tabla de revisión: no bloqueada, no fusionada automáticamente, simplemente desmarcada. Aún puedes marcar la casilla e importarla igual si realmente esa era tu intención. El sistema no puede decidir eso por ti. Solo se asegura de que un descuido no pase desapercibido.
Lo probamos directamente: subimos un archivo que contenía un contacto cuyo correo electrónico coincidía exactamente con un cliente existente, junto a uno genuinamente nuevo. El duplicado se marcó y quedó desmarcado. El nuevo contacto se importó limpiamente. Volver a ejecutar el mismo archivo una segunda vez no creó nada adicional. Ese es el punto central: volver a subir un archivo no debería ser algo con lo que tengas que tener cuidado.
Un bug real, encontrado de forma honesta
Quiero contarte algo que realmente salió mal mientras construíamos esto, porque la alternativa, fingir que salió perfecto desde el principio, sería exactamente el tipo de deshonestidad de marketing que intentamos evitar.
El importador del catálogo de recursos tiene un campo de tasa de IVA. Nuestra base de datos lo exige. Su valor por defecto es 25%, la tasa estándar, así que un recurso sin una tasa explícita debería recurrir automáticamente a ese valor por defecto. Excepto que no lo hacía. Si subías una lista de precios sin ninguna columna de IVA (algo extremadamente común, muchas listas de precios simplemente no la tienen), la importación fallaba con un error de servidor sin procesar en el momento en que intentabas activarla.
La razón era sutil: el valor por defecto de la propia base de datos solo se activa cuando un campo se omite por completo de la inserción. Nuestro código escribía explícitamente null en ese campo en lugar de dejarlo fuera, lo que significaba que la red de seguridad de la base de datos nunca tuvo oportunidad de detectarlo. Solo lo descubrimos porque ejecutamos una prueba real de extremo a extremo, con un archivo realista que genuinamente no tenía columna de IVA (no una hipótesis, una subida real), y vimos cómo fallaba. La corrección fue una sola línea: valor por defecto de 25% en el código, el mismo número que la propia base de datos documenta como estándar, aplicado solo cuando el archivo de origen realmente no dice nada al respecto.
Te cuento esto no porque sea una historia halagadora, sino porque es la textura real de construir algo así con honestidad. El instinto de encontrar ese bug probando de verdad un archivo real y desordenado, en lugar de asumir el camino ideal, es el mismo instinto detrás de toda la función. Un software que está seguro de datos que en realidad nunca ha visto es exactamente el tipo de software que intentamos no construir.
Probamos todo esto en una empresa que aún no existe
Antes de que esto saliera, ejecutamos un mes completo simulado de uso para un equipo de consultoría de cuatro personas: consultas reales que llegan, conversaciones reales con clientes, importaciones reales de catálogo, contra un tenant de prueba dedicado, usando un modelo de IA real todo el tiempo, no un script. Pudimos hacerlo con este nivel de detalle porque ya habíamos sembrado desde el primer día una gran porción de datos realistas y construido Velvet, nuestro propio simulador de pruebas, precisamente para no estar limitados a revisar un caso límite a la vez. Varios escenarios desordenados corrieron juntos en el mismo mes: un CSV con un contacto que ya existía mezclado con otros genuinamente nuevos, junto con todo lo demás que ese mes le lanzó al sistema.
El costo total de IA para ese mes simulado completo, para cuatro personas, fue de menos de un dólar. Lo mencionamos porque las herramientas de importación “impulsadas por IA” tienen fama, a veces merecida, de convertirse en una costosa suscripción-detrás-de-la-suscripción. A esta escala, ese miedo simplemente no se sostiene.
Lo que esto no hace
En el espíritu de no exagerar: no es magia OCR para escaneos genuinamente ilegibles, y no adivinará un campo que nunca estuvo en el archivo de origen. Los PDF estructurados y las hojas de cálculo limpias funcionan bien; una factura fotografiada y escrita a mano de 2019 necesita más revisión humana, y el sistema lo dice honestamente en lugar de inventar una suposición.
Tampoco fusiona duplicados automáticamente, y eso es a propósito. Esa sigue siendo decisión de una persona, no del software. Marcar claramente y dejar por defecto “no importar esto dos veces” es exactamente la cantidad correcta de ayuda.
Si en este momento estás mirando tu propia exportación desordenada
La respuesta honesta a “cuánto tardará esto” es: probablemente una tarde, no una semana. Sube el archivo. Revisa lo que encontró Neo. Aprueba lo que está bien, corrige lo que no, deja las brechas para después si quieres. Seguirán ahí, claramente contadas, siempre que estés listo. El objetivo nunca fue hacer que tus datos fueran perfectos antes de empezar. Fue evitar que unos datos perfectos fueran el precio de entrada.
El Migration Engine de Craft11 gestiona tanto las importaciones de Clientes como de Recursos con la misma arquitectura descrita arriba: extracción con puntuación de confianza, detección de duplicados y seguimiento honesto de brechas. Míralo en el recorrido del producto →