Clasificador B2BOX

Sugerencia de posición arancelaria y costo de importación — Argentina

Documentación interna: qué es el Clasificador, cómo funciona el circuito con los despachantes y qué hace cada parte. El modelo propone; el humano decide.

01Qué es

A partir de fotos y/o la descripción de un producto, sugiere su posición arancelaria (NCM) y calcula el costo de importarlo a la Argentina.

Combina visión (leer la foto y extraer atributos), búsqueda sobre el nomenclador oficial y un re-rank del modelo para elegir la hoja correcta. Los aranceles (DIE, IVA, ganancias, IIBB), las intervenciones (ANMAT, INAL, etc.) y el antidumping salen de las fuentes reales (ARCA / PCRAM / CNCE), no del modelo.

El valor no es solo la sugerencia: es el bucle. Cada corrección del despachante se convierte en regla y ejemplo para las próximas clasificaciones.

02Dos tipos de usuario

La misma herramienta, dos públicos que no se cruzan.

🧑‍✈️Despachantes B2BOX

Los nuestros. Hacen el circuito completo (admin → bandeja → admin) sobre las importaciones de B2BOX. Son los únicos que clasifican trabajo de B2BOX.

🏢Usuarios externos (SaaS)

Otros importadores a los que les damos la herramienta. Clasifican sus propios productos. No ven la bandeja de B2BOX ni clasifican nada de B2BOX.

Aislamiento de datos (pendiente para multi-cliente): la bandeja y el circuito admin son exclusivos de B2BOX; el clasificador es el producto compartido. El historial de cada cliente — y por lo tanto "ya clasificaste algo parecido" — tiene que quedar acotado a ese cliente.

03El circuito

El paso del despachante es humano a propósito: una propuesta del modelo no es un resultado hasta que una persona la mira.

Admin · b2b-flow-pro
Envía el producto
Desde la quote, "Enviar al despachante". Queda pendiente.
Clasificador · Bandeja
El despachante clasifica
El modelo propone NCM + aranceles. Corrige, escribe la regla, confirma.
Admin · b2b-flow-pro
Recibe el NCM
Recién al confirmar, el admin trae el código y los aranceles a la nacionalización.
Los productos de una misma quote se agrupan por un token opaco de envío: el despachante los ve juntos, pero nunca sabe a qué quote pertenecen.

04Cómo clasifica

De la foto (o el texto) a un NCM con su costo, en pasos verificables.

  1. Caché exacto — si el SKU/EAN ya tiene un NCM validado por un humano, se reusa. Costo cero.
  2. Visión → atributos — el modelo declara material, función, uso, medidas. Cada dato lleva su fuente (foto, PDF, formulario).
  3. Retrieval híbrido — BM25 (léxico) + embeddings Voyage (semántico) sobre el nomenclador, fusionados.
  4. Re-rank — el modelo elige la hoja entre los candidatos, aplicando RGI y las reglas aprendidas.
  5. Chequeo de cortes — en código se verifica que la hoja no contradiga un dato numérico (peso, pantalla, FOB).
  6. Enriquecido real — DIE, alícuotas PCRAM, intervenciones y antidumping desde la fuente, más el costo.
Confianza gateada: si la posición sale por debajo del umbral, o falta un dato que parte el corte, el sistema no costea y pide revisión. Un costo firme sobre una clasificación dudosa es peor que no darlo.

05El bucle humano

Lo que hace que el sistema mejore: el despachante revisa, corrige y enseña.

Confirmar o corregir

Cada clasificación se persiste con su rastro completo. El despachante confirma la #1 (nos da la razón) o la corrige. La distinción sostiene la métrica clave: tasa de corrección = corregidas / revisadas.

La regla enseña el patrón

Al corregir, el despachante escribe el criterio ("las botellas de aluminio para bebidas van a 7612.90, no a 8309"). Esa regla se le inyecta al modelo como restricción dura la próxima vez que clasifique algo del mismo capítulo.

06Features

Lo que hace la herramienta día a día. Marcadas Nuevo las de la última iteración.

🔔Campanita Nuevo

El tab Bandeja muestra, desde cualquier pantalla, cuántos pendientes hay sin ver. Abrir uno lo apaga.

📋Similar previo Nuevo

Al pasar un producto, si ya clasificaste uno parecido (embeddings) lo ofrece como opción con un click.

🖼️Miniatura en bandeja Nuevo

La foto de B2BOX se guarda como thumbnail al clasificar, así se reconoce el producto en el historial.

📄Fotos reales del PDF Nuevo

Packing list en PDF: la foto de cada renglón se recorta de verdad (poppler + visión), no solo se describe.

🔁Mismo producto

Copiar el NCM de otro producto ya clasificado del mismo envío, sin gastar una llamada al modelo.

Pregunta dirigida

Cuando un corte depende de un dato que falta (peso, FOB), pregunta una sola cosa en vez de adivinar.

🛡️Verificaciones

Intervenciones (ANMAT, INAL, SENASA…) y antidumping (CNCE) sobre el NCM elegido, desde la fuente.

💰Costos al centavo

Gasto real de Anthropic por clasificación y total. Panel solo para admin.

⚙️Editor de prompts

Editar los prompts de visión y re-rank desde la UI; persisten en Supabase. Gateado a dev.

07Lote / packing list

Un envío entero: una clasificación por producto, con su foto y su avance visible.

Se sube un Excel (fotos ancladas a las celdas) o un PDF. En ambos casos se reconstruye la tabla y se clasifica de a uno — no los 30 en un request: así cada resultado llega apenas está, el usuario ve el avance y puede frenar sin perder lo ya pagado.

Excel

Las fotos vienen ancladas a las celdas: se extraen y se muestran directo.

PDF

La página se renderiza, el modelo ubica la caja de cada foto, se recorta con pdftoppm y se liga al renglón por SKU/descripción. Un filtro de calidad descarta los recortes vacíos.

08Roles y acceso

Login con Supabase, separado del admin. El costeo y las pantallas de dev están gateados.

RolPuede
todos (logueados)Clasificar, ver la bandeja, revisar y corregir.
devLo anterior + costeo (modo completo del clasificador).
head_of_dev · adminTodo + las pantallas de gestión: Prompts, Inspector, Costos y esta Ayuda.

09Endpoints principales

Todos bajo sesión. El circuito con el admin entra por un endpoint externo con API key.

MétodoRutaQué hace
POST/api/clasificarClasifica un producto → NCM + aranceles + costo.
POST/api/clasificar/responderResponde una pregunta dirigida y fija la hoja sin re-clasificar.
GET/api/bandejaLista de solicitudes del despachante.
GET/api/bandeja/pendientesConteo + referencias de pendientes (la campanita).
GET/api/bandeja/:refDetalle + aranceles + similares previos.
POST/api/bandeja/:ref/clasificarCorre el modelo sobre lo que mandó el admin.
POST/api/bandeja/:ref/resolverConfirma o descarta; recién acá el admin recibe el NCM.
POST/api/lote/analizarPlanilla/PDF → tabla de productos (con fotos). No llama al modelo.
GET/api/metricasTasa de corrección y otros indicadores del bucle.

10Deploy

Coolify con Nixpacks (autodetect Node).

  • nixpacks.toml agrega poppler_utils al build (fotos del PDF). Sin él, cada renglón queda con su descripción de texto — no rompe.
  • Los datos del nomenclador y las alícuotas son generados, no versionados: se reconstruyen con los scripts de ingesta.
  • La base de clasificaciones (historial de correcciones) es la única irreemplazable: sobrevive a re-ingestas.