Este es el vigésimo post del blog. Parece el momento correcto para escribir algo diferente — no un análisis detallado de un feature, sino un reporte de estado honesto sobre dónde está el producto, qué se entregó, qué no, y hacia dónde estamos apuntando.
Lo que se entregó El importador con IA es el destacado. Reemplazó un importador rígido de solo-Excel que había estado en su lugar desde las versiones más tempranas de la plataforma. El importador viejo funcionaba solo si la hoja de cálculo del proveedor coincidía exactamente con el layout de columna esperado — cualquier desviación, cualquier columna extra, cualquier nombre de encabezado ligeramente diferente, y la importación fallaba con un error críptico. El importador con IA acepta PDF, XLSX, XLS y CSV, maneja cualquier layout que el proveedor use, y clasifica cada línea como coincidencia exacta, decisión de IA, o no encontrado. Las primeras importaciones de clientes reales validaron la apuesta central: que un pipeline aumentado por LLM podría manejar el desorden de los documentos de proveedor del mundo real sin exigir que el proveedor cambie su formato.
Junto con el importador, completamos la cobertura trilingüe de la UI para cada nueva superficie. La plataforma ahora sirve en-US, pt-BR y es-US en todas las páginas — no solo en los flujos principales de cotización e inventario, sino en cada pantalla de configuración, cada mensaje de error, cada diálogo de confirmación, y cada plantilla de email. El sistema de traducción corre como infraestructura de CI: un paso de build verifica que cada archivo de locale tenga cada clave presente en la base en-US, y las claves faltantes quiebran el build. Nunca más 'esta cadena solo está en inglés porque nos olvidamos de agregarla a los otros archivos.'
El ledger de movimiento de inventario se entregó como pieza fundamental del sistema de inventario. Cada cambio en el stock — reserve, release, ship, return, receive, adjustment — se registra como un movimiento tipado con delta con signo, FK del documento fuente, timestamp, y el usuario que lo inició. El ledger es append-only: las filas nunca se editan, nunca se eliminan. El caché guarda el saldo corriente; el ledger es el registro durable. Cualquier equipo puede auditar el historial completo de cualquier producto en cualquier ubicación sin pedirle a ingeniería que corra una consulta.
Tres documentos de fulfillment — DeliveryNote, ReturnNote y StockReceipt — ahora comparten un solo flujo de posting. Postear una entrega mueve stock de reservado a enviado. Postear una devolución lo mueve de enviado de vuelta a disponible. Postear una recepción registra inventario entrante de un proveedor. Los tres crean movimientos de inventario con el ID del documento en la FK fuente, los tres actualizan el mismo caché, y los tres respetan los mismos límites de permisos. El flujo compartido significa que los equipos de almacén aprenden un patrón, no tres.
La matriz de permisos aguantó el escrutinio. Cuatro grupos — admin, manager, commercial, warehouse — con una matriz documentada mostrando quién hace CRUD sobre qué. Sin overrides por tenant, sin ACL por usuario, sin clases de permiso personalizadas dispersas en las views. Los nuevos features empiezan agregando una fila a la matriz, después cableando el check. La simplicidad es el feature: cuando un cliente pregunta '¿quién puede aprobar una devolución?' la respuesta está en una sola tabla markdown, no dispersa en seis archivos.
El blog que estás leyendo se lanzó junto con el rediseño del sitio de marketing. Veinte posts cubriendo las decisiones técnicas detrás del producto — no copia de marketing, sino explicaciones honestas de por qué la plataforma funciona como funciona. El blog es tanto superficie de SEO como señal de credibilidad técnica: un cliente potencial que lee tres posts sabe más sobre cómo Quotery maneja el inventario de lo que aprendería en una docena de demos de competidores.
Lo que no se entregó Queríamos entregar un módulo de reportes — dashboards con tendencias de ventas, rotación de inventario, tasas de conversión de cotizaciones. No sucedió. El importador consumió más tiempo de ingeniería del planeado, e hicimos la elección deliberada de entregar una cosa bien en vez de dos cosas a medias. El modelo de datos de reportes está diseñado y las consultas están escritas; la pieza faltante es la superficie de frontend. Es la prioridad máxima para el próximo ciclo.
Las integraciones contables siguen en el roadmap. La plataforma puede exportar datos en formatos que las herramientas contables consumen, pero no hay integración directa de API con ningún paquete contable. Esto es en parte técnico — las APIs contables son notoriamente inconsistentes — y en parte una elección de secuenciación: integrarse con una herramienta que todavía no usás a diario es prematuro. Ahora que los flujos principales están sólidos y los clientes están en vivo, las integraciones se vuelven la siguiente capa natural.
La optimización mobile para flujos de almacén es parcial. La plataforma es responsiva y funciona en un teléfono, pero la experiencia de almacén — escanear, pickear, postear entregas — fue diseñada para un navegador de escritorio. Una vista mobile-first dedicada para almacén, optimizada para escaneo de código de barras y operación con una sola mano, es el tercer ítem principal en el roadmap.
Lo que sigue El módulo de reportes viene primero. El objetivo no es un dashboard genérico de analytics con una docena de widgets que nadie usa. Son tres vistas enfocadas: rendimiento de ventas (volumen de cotizaciones, tasa de conversión, ingreso por cliente y producto), salud del inventario (rotación, stock muerto, frecuencia de quiebre de stock), y actividad del equipo (cotizaciones creadas, entregas posteadas, devoluciones procesadas por usuario). Cada vista tiene un gráfico principal, una tabla de resumen, y un botón de exportar. El principio de diseño es el mismo que aplicamos al importador: responde la pregunta más importante primero, después quítate del camino.
Las integraciones contables siguen después. Estamos evaluando con qué paquete integrarnos primero basado en demanda de clientes y calidad de API. La integración será unidireccional al principio — Quotery empuja facturas y valoraciones de inventario al sistema contable, pero no jala datos de vuelta. La sincronización bidireccional es un problema más difícil (resolución de conflictos, propiedad de datos, reconciliación) y preferimos entregar una integración unidireccional confiable que una bidireccional no confiable.
La vista mobile de almacén es el tercer ítem principal. No es una app mobile — es una vista web responsiva optimizada para la ergonomía específica del trabajo de almacén. Objetivos táctiles grandes para manos con guantes, escaneo de código de barras por la cámara del dispositivo, navegación con un pulgar, y posting tolerante a offline (encola el post, sincroniza cuando vuelva la conectividad). La vista de escritorio del almacén se mantiene para trabajo de back-office; la vista mobile es para la gente de pie.
Más allá de los tres grandes, hay una cola larga de pulido. Restauración de posición de scroll en la navegación. Atajos de teclado para usuarios avanzados — cerrar cotización, postear entrega, aprobar devolución, todo desde el teclado. Mejores mensajes de error en casos borde que son difíciles de alcanzar pero confusos cuando suceden. Esqueletos de carga que coinciden con la forma del contenido que reemplazan. Estos no son ítems de roadmap con fecha límite; son trabajo continuo que sucede entre features. Los detalles silenciosos que separan el software que toleras del software en el que confías.
Lo que aprendimos La mayor lección del año: los features de IA triunfan o fracasan en su UX de revisión, no en la precisión del modelo. El LLM en nuestro importador es bueno — clasifica aproximadamente el 90% de las líneas que intenta correctamente. Pero si confirmar ese 90% se sintiera como trabajo, el feature habría fracasado. La UI de revisión — comparación inline, confirmación de un toque, jerarquía visual clara — es lo que vuelve la precisión usable. Un modelo 95% preciso con una mala experiencia de revisión es peor que un modelo 85% preciso con una buena, porque el usuario pasa más tiempo peleando con la UI que corrigiendo el modelo.
La segunda lección: los modelos de datos append-only valen la complejidad inicial. El ledger de movimiento de inventario tomó más tiempo para diseñar e implementar de lo que un enfoque simple de saldo corriente habría tomado. Pero cada pregunta de auditoría, cada investigación de discrepancia, cada '¿por qué este número era diferente el martes pasado?' se responde con una consulta en vez de una suposición. El ledger ya se pagó en sesiones de debugging evitadas y respuestas confiables a preguntas de clientes.
La tercera lección: el soporte trilingüe no es tres veces el trabajo. Una vez que la infraestructura de traducción está en su lugar — búsquedas por clave, enforcement en CI, formateo con locale para fechas y números — agregar un tercer idioma es mayormente trabajo de traducción, no de ingeniería. El primer idioma después del inglés requirió construir la infraestructura. El tercero requirió escribir cadenas en español. El costo marginal cae drásticamente.
Un gracias A los equipos tempranos que empujaron PDFs reales de proveedor por el importador y nos dijeron exactamente qué se rompió: gracias. Su disposición a probar una herramienta nueva con documentos reales — no datos de prueba, no muestras sanitizadas, sino los PDFs desordenados de verdad que sus proveedores envían — es lo que hizo bueno al importador. Cada caso borde que manejamos hoy (el PDF con contraseña, el escaneo de solo imagen, el proveedor que usa seis formatos de SKU distintos en la misma página) existe porque alguien se lo encontró y nos lo dijo.
A todos los que leyeron estos posts del blog y enviaron feedback: gracias. Escribir sobre decisiones técnicas en público es una función forzante para la claridad. Varios posts en esta serie empezaron como notas para mí mismo y se convirtieron en explicaciones que ahora usamos en conversaciones de venta y sesiones de onboarding. El blog se ha vuelto un activo que no anticipamos.
Hay mucho más por construir. El módulo de reportes, las integraciones contables, la vista mobile de almacén, y el pulido silencioso que hace que todo se sienta un poco más sólido. Pero la base es real: el importador funciona, el ledger es append-only, los permisos son simples, y las traducciones están completas. El año tres empieza desde un buen lugar.
