Matchers

¿Qué es un Matcher?

Un Matcher compara lado a lado las líneas de varios documentos. Empareja las filas que describen el mismo ítem, aunque cada documento lo escriba distinto, pone sus precios o cantidades en una sola tabla y marca al ganador de cada fila.

Un Matcher trabaja sobre un flow. El flow hace la extracción; el Matcher lee los resultados de dos o más runs completados de ese flow y arma una sola comparación. Cada ejecución se llama Match. Por ejemplo, tres cotizaciones de proveedores para el mismo pedido se convierten en una tabla con una columna de precio por proveedor y una columna Campeón que indica el proveedor más barato en cada línea.

Beta

Los Matchers están en beta. Están disponibles para todas las organizaciones y su funcionamiento todavía puede cambiar.

Pruébalo sin cuenta

Las herramientas Comparar factura con orden de compra y Comparar cotizaciones de Tavnit Lite funcionan con Matchers.

Cuándo usar un Matcher

  • Comparar cotizaciones de varios proveedores para la misma lista de ítems y elegir la más barata por línea
  • Revisar una factura contra su orden de compra, línea por línea, para detectar diferencias de precio
  • Comparar ofertas nuevas contra una lista de precios de referencia o un pedido anterior
  • Encontrar el valor más alto por ítem entre documentos, como el mejor descuento o la mayor cantidad

Si necesitas reglas de aprobado o rechazado entre distintos tipos de documentos (fechas, totales, referencias) en lugar de una tabla de precios línea por línea, usa un Inspector.

Roles de campo

Un Matcher se define por el rol que cumple cada campo de su flow. Las opciones salen del flow que eliges, filtradas según lo que acepta cada rol.

AjusteQué esQué campos sirven
Campo identificadorNombra a cada participante, por ejemplo Proveedor. Cada run se convierte en un participante. Si un run tiene varios valores, se usa el primero.Solo campos de metadata
Campo de emparejamientoEl texto que se empareja entre runs, por ejemplo Descripción del Ítem. El emparejamiento es por significado, no por texto exacto.Campos de tabla
Campo de comparaciónEl número que evalúa la regla del campeón, por ejemplo Precio Unitario.Campos de tabla numéricos
Campos de contexto (opcional)Columnas extra, como unidad de medida o empaque, que ve la IA para no mezclar ítems distintos.Cualquier campo restante
Regla del campeónGana el más bajo o Gana el más alto. Elige al ganador de cada fila emparejada. Si hay empate, aparecen todos los ganadores.—
El flow necesita los campos correctos

El identificador debe ser un campo de metadata y el campo de comparación, un campo de tabla numérico. Si el flow no tiene ninguno de los dos, el builder te lo avisa. Agrega primero los campos al flow (por ejemplo un campo de metadata Proveedor y una columna numérica Precio Unitario). Los campos compuestos no se pueden usar.

Modos Benchmark y Multilateral

ModoCómo comparaQué filas aparecen
BenchmarkUn run es el benchmark y todos los demás se comparan contra él. Eliges el run benchmark cada vez que ejecutas un match.Una fila por cada ítem del benchmark. Para cada otro participante, el ítem que mejor coincide llena sus columnas. Los ítems que no coinciden con nada del benchmark quedan fuera.
MultilateralTodos los runs se comparan entre sí y ganan las mejores combinaciones.Aparecen todos los ítems. Los que se encuentran en varios runs comparten fila; un ítem sin pareja tiene su propia fila.

Usa Benchmark cuando un documento es la referencia (una orden de compra, tu lista de precios, el contrato del año pasado). Usa Multilateral cuando los documentos son pares, como cotizaciones de proveedores que compiten entre sí.

Crear un Matcher

  1. 1Ve a Matchers en el menú principal y haz clic en Nuevo Matcher.
  2. 2Responde “¿Qué flow vas a comparar?”: Desde un flow (elige el flow y un nombre, y haz clic en Siguiente), Desde un matcher existente (duplica su configuración con Crear copia) o Desde cero.
  3. 3En Información del Matcher, revisa el nombre (al menos 3 caracteres), agrega una descripción opcional y confirma el Flow. Todos los runs comparados deben pertenecer a este flow.
  4. 4En Campos, elige el Modo, el Campo identificador, el Campo de emparejamiento, el Campo de comparación, la Regla del campeón y los Campos de contexto que necesites.
  5. 5Si quieres, completa Salida por Email y Webhook (la URL debe comenzar con https://), y activa Revisión Humana si cada match debe esperar a un revisor.
  6. 6Haz clic en Crear Matcher. Llegas a la página del matcher, donde puedes elegir revisores y ejecutar tu primer match.

En la página del matcher, Configuración te deja editar después el modo y los roles de campo, Historial de Matches lista cada match que ha ejecutado e ID del Matcher muestra el identificador que necesitas para la API. Cada match guarda una copia de la configuración con la que corrió, así que editar el matcher no cambia los resultados anteriores.

Ejecutar un Match

  1. 1Asegúrate de que los documentos se hayan procesado con el flow del matcher y que sus runs estén en Completado.
  2. 2En la página del matcher, haz clic en Ejecutar Match.
  3. 3Marca al menos dos runs completados del flow.
  4. 4En un matcher Benchmark, haz clic en la estrella de uno de los runs seleccionados para convertirlo en el Run benchmark.
  5. 5Haz clic en Iniciar Match. El match entra en cola y se abre su página, que muestra el progreso hasta que la tabla de comparación está lista.

También puedes iniciar matches de otras formas:

  • Por correo. En Disparador por Email, activa el disparador y copia la Dirección de Bandeja. Envía dos o más documentos (PDF o imágenes) a esa dirección: cada adjunto se convierte en un run del flow y el match comienza cuando todos terminan. Los resultados llegan como respuesta en el mismo hilo, con la tabla adjunta en CSV y un reporte en PDF. Los matches iniciados por correo siempre corren en modo Multilateral. Usa Remitentes Permitidos para limitar quién puede dispararlo.
  • Desde un caso de Subject. Cuando un matcher está vinculado a un Subject, la página del caso lo muestra en Checks con un botón Run que usa los runs completados del caso que pertenecen al flow del matcher.
  • En un Pipeline, como un nodo que recibe los runs de los flows anteriores. Consulta Pipelines.
  • Por API, como se explica más abajo.
EstadoSignificado
En cola / En ejecuciónEl match espera un worker o está comparando filas entre runs.
Esperando documentosUn match iniciado por correo espera a que sus documentos terminen de procesarse.
Esperando aprobaciónLa revisión humana está activa y un revisor debe aprobar el emparejamiento.
CompletadoLa tabla de comparación está lista y las salidas se enviaron.
FallidoEl match no pudo ejecutarse. El mensaje de error explica por qué.
CanceladoUn revisor rechazó el match.

Leer el resultado

Un match completado muestra una Tabla de Comparación con dos columnas por participante y una columna Campeón al final.

Las columnas de cada participante llevan el nombre de los campos y el valor del identificador: con un campo de emparejamiento Item Description, un campo de comparación Unit Price y un proveedor llamado ACME, obtienes Item Description-ACME y Unit Price-ACME. Un par vacío significa que ese participante no tenía un ítem equivalente en esa fila. Las columnas del participante ganador se resaltan. En CSV, JSON y la API, la columna del campeón se llama Champion.

Un resultado Multilateral de ejemplo con la regla Gana el más bajo. Las filas empatadas muestran a todos los ganadores.
Item Description-ACMEUnit Price-ACMEItem Description-GlobexUnit Price-GlobexCampeón
Steel bolt M8 x 400.42Bolt M8x40 zinc0.39Globex
Hex nut M80.10Nut, hex, M80.10ACME, Globex
Washer 8 mm0.05ACME

Encima de la tabla encontrarás:

  • Filas y Celdas: el tamaño del resultado.
  • Advertencias: por ejemplo, un run excluido porque su campo identificador estaba vacío, dos runs combinados porque comparten identificador o un valor de comparación que no es numérico y quedó fuera de la competencia.
  • Información del Match: matcher, modo, runs, fecha de creación y, en los matches por correo, el remitente.
  • Exportaciones: Exportar a Bucket, CSV, JSON y un reporte en PDF.
Cómo se emparejan las filas

Tavnit compara el campo de emparejamiento (más los campos de contexto) por significado. Las parejas claras se aceptan automáticamente; las dudosas las revisa un modelo de IA que considera importantes las diferencias de tamaño, unidad y empaque: un paquete de 12 no es el mismo ítem que una unidad suelta. Ante la duda, los ítems quedan separados. Si dos filas del mismo participante terminan en un mismo grupo, se usa la primera.

Revisión humana de matches

Activa Revisión Humana en el matcher y elige a los revisores. Desde entonces cada match se pausa en Esperando aprobación antes de liberar sus resultados, y los revisores reciben un aviso por correo. Solo los revisores que elijas pueden aprobar o rechazar.

  1. 1Abre el match desde Revisión Humana (o haz clic en Revisar en la página del match).
  2. 2El tablero Revisión de Match muestra una columna por participante, con los emparejamientos de la IA dibujados como líneas y los documentos originales al lado.
  3. 3Haz clic en una tarjeta y luego en una tarjeta de otra columna para conectarlas. Haz clic en una línea para romper un enlace. Usa la X para excluir una fila de los resultados por completo.
  4. 4Haz clic en Aprobar o Rechazar.
DecisiónQué pasa
AprobarLa tabla de comparación y la columna Campeón se reconstruyen a partir de tus enlaces corregidos y se envían las salidas.
RechazarEl match se cancela con tu motivo. No se envían salidas.

Los miembros con el rol Solo HITL pueden revisar, pero no crear matchers ni ejecutar matches. Consulta Revisión Humana.

Salidas

  • Notificación en la app para quien inició el match.
  • Salida por Email: la dirección recibe un correo cuando un match se completa, con la tabla de comparación adjunta en CSV.
  • Webhook: un POST con la tabla en JSON (columns, rows, row_warnings, warnings) más match_id y matcher_id. Consulta Webhooks.

Con la revisión humana activa, las salidas se envían solo después de aprobar.

API

Inicia un match desde tu propio sistema con tu API key. Copia el ID desde ID del Matcher en la página del matcher.

bash
curl -X POST https://run.tavnit.io/api/matchers/<matcher_id>/run \
  -H "X-API-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"run_ids": ["<run_a>", "<run_b>", "<run_c>"], "benchmark_run_id": "<run_a>"}'
  • run_ids: dos o más runs completados del flow del matcher.
  • benchmark_run_id: obligatorio en matchers Benchmark, y debe ser uno de los run_ids. Omítelo en Multilateral.
  • La respuesta es 202 con match_id y status (queued). Un 402 significa que tu organización no puede iniciar trabajo nuevo en este momento; contacta al equipo de Tavnit. Un 400 explica qué está mal en la solicitud.
  • Configura un Webhook en el matcher para recibir la tabla de comparación cuando el match se complete.

La autenticación y los demás endpoints están en API.

Límites y permisos

  • De 2 a 10 runs por match, todos completados y del flow del matcher.
  • Hasta 5,000 filas de resultado por run.
  • Disparador por correo: al menos dos adjuntos legibles y no más de 10.
  • Todos los miembros, excepto Solo HITL, pueden crear, editar y eliminar matchers y ejecutar matches.

Solución de problemas

ProblemaQué hacer
No hay opciones en Campo identificador o Campo de comparaciónEl flow no tiene un campo de metadata o una columna numérica. Agrégalo al flow y vuelve.
Falta un run en la lista de Ejecutar MatchSolo se listan los runs completados del flow del matcher. Espera a que termine o verifica que se procesó con el mismo flow.
Advertencia: se excluyó un runSu campo identificador estaba vacío. Corrige el valor en el run o haz más confiable el campo identificador en el flow.
Dos proveedores se combinaron en un solo participanteAmbos runs extrajeron el mismo valor de identificador. Sus filas se combinan y, si hay conflicto, gana la primera fila.
Se emparejaron ítems distintos, o no se emparejó el mismo ítemAgrega campos de contexto como unidad de medida o empaque, o activa la revisión humana para corregir los emparejamientos antes de liberar el resultado.
Una fila no tiene campeónNingún participante de esa fila tiene un valor de comparación numérico.
Ejecutar desde un caso de Subject falla con un error de benchmarkEl botón Run del caso no elige un run benchmark. Usa un matcher Multilateral con Subjects.
Nadie puede aprobar un match pausadoSolo los revisores elegidos en el matcher pueden aprobar. Agrega revisores en Revisión Humana.