El encargo era de los que suenan a diez minutos: un CSV exportado del CRM, 1.200 clientes, y una pantallita interna que los mostrara en una tabla antes de importarlos. Nada de librerías, que el bundle ya iba justo. Split por saltos de línea, split por comas, listo.
La primera pasada dio 1.237 filas. Y unas cuantas con el nombre en la columna de la provincia.
Dónde estaba la trampa
En dos sitios, y los dos legítimos según el formato:
- Comas dentro de comillas. Direcciones del tipo "Calle Mayor, 14, 3º B". Partir por comas convertía una fila en cuatro columnas de más y desplazaba todo lo que venía detrás.
- Saltos de línea dentro de comillas. El campo de notas comerciales. Alguien había escrito su seguimiento en tres párrafos. Para mi split eso eran tres clientes distintos, dos de ellos con el nombre vacío.
Las 37 filas de más no eran clientes mal cargados: eran trozos de nota suelta haciéndose pasar por personas.
Cómo ayudó tener la IA al lado
Lo útil no fue pedir «hazme un parser de CSV». Eso te lo escribe cualquiera y luego no sabes qué cubre. Lo útil fue trabajar al revés:
Primero le pedí que me enumerara los casos raros del formato con un ejemplo mínimo de cada uno: comillas dentro de comillas (escapadas duplicándolas), campo que empieza por comilla pero no la cierra, salto CRLF frente a LF, última línea sin salto final, campo vacío entre dos separadores. Ocho casos, ocho cadenas de tres líneas. Eso se convirtió en mi tabla de pruebas antes de escribir el parser.
Después, el parser de verdad: un recorrido carácter a carácter con un flag de «estoy dentro de comillas». Diez veces más aburrido que el split y la única forma de que salga bien. Ahí la IA fue buena copiloto para la parte tediosa: el edge case de la comilla duplicada se me había colado mal y lo cazó el caso de prueba número cinco.
El parser correcto de CSV no es más listo que el ingenuo. Es que no se cree que un salto de línea signifique siempre lo mismo.
Y el detalle que hizo que esto se hiciera así
El fichero eran clientes reales: nombres, teléfonos, direcciones y notas comerciales que ponían cosas que nadie quiere ver fuera de la empresa. Pegar dos filas de muestra en un chat para «que entienda el formato» no era una opción, y pedir permiso para subirlo a ningún sitio tampoco.
Con el modelo corriendo en el navegador, el problema desaparece antes de plantearse: abro el CSV en el IDE, la IA lo lee donde está, y ni el fichero ni el prompt tocan una red. Las 1.237 filas volvieron a ser 1.200 sin que nadie tuviera que firmar nada.
Abre Elffuss Code y pégale tu CSV más feo: la IA corre dentro del navegador, sobre tu propia GPU, y ni el fichero ni el prompt salen de tu máquina.
Abrir Code →