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.
Los Matchers están en beta. Están disponibles para todas las organizaciones y su funcionamiento todavía puede cambiar.
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.
| Ajuste | Qué es | Qué campos sirven |
|---|---|---|
| Campo identificador | Nombra 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 emparejamiento | El 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ón | El 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ón | Gana 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 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
| Modo | Cómo compara | Qué filas aparecen |
|---|---|---|
| Benchmark | Un 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. |
| Multilateral | Todos 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
- 1Ve a Matchers en el menú principal y haz clic en Nuevo Matcher.
- 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.
- 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.
- 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.
- 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. - 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
- 1Asegúrate de que los documentos se hayan procesado con el flow del matcher y que sus runs estén en Completado.
- 2En la página del matcher, haz clic en Ejecutar Match.
- 3Marca al menos dos runs completados del flow.
- 4En un matcher Benchmark, haz clic en la estrella de uno de los runs seleccionados para convertirlo en el Run benchmark.
- 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.
| Estado | Significado |
|---|---|
| En cola / En ejecución | El match espera un worker o está comparando filas entre runs. |
| Esperando documentos | Un match iniciado por correo espera a que sus documentos terminen de procesarse. |
| Esperando aprobación | La revisión humana está activa y un revisor debe aprobar el emparejamiento. |
| Completado | La tabla de comparación está lista y las salidas se enviaron. |
| Fallido | El match no pudo ejecutarse. El mensaje de error explica por qué. |
| Cancelado | Un 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.
| Item Description-ACME | Unit Price-ACME | Item Description-Globex | Unit Price-Globex | Campeón |
|---|---|---|---|---|
| Steel bolt M8 x 40 | 0.42 | Bolt M8x40 zinc | 0.39 | Globex |
| Hex nut M8 | 0.10 | Nut, hex, M8 | 0.10 | ACME, Globex |
| Washer 8 mm | 0.05 | ACME |
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.
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.
- 1Abre el match desde Revisión Humana (o haz clic en Revisar en la página del match).
- 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.
- 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.
- 4Haz clic en Aprobar o Rechazar.
| Decisión | Qué pasa |
|---|---|
| Aprobar | La tabla de comparación y la columna Campeón se reconstruyen a partir de tus enlaces corregidos y se envían las salidas. |
| Rechazar | El 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ásmatch_idymatcher_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.
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 losrun_ids. Omítelo en Multilateral.- La respuesta es
202conmatch_idystatus(queued). Un402significa que tu organización no puede iniciar trabajo nuevo en este momento; contacta al equipo de Tavnit. Un400explica 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
| Problema | Qué hacer |
|---|---|
| No hay opciones en Campo identificador o Campo de comparación | El 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 Match | Solo 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 run | Su 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 participante | Ambos 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 ítem | Agrega 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ón | Ningún participante de esa fila tiene un valor de comparación numérico. |
| Ejecutar desde un caso de Subject falla con un error de benchmark | El botón Run del caso no elige un run benchmark. Usa un matcher Multilateral con Subjects. |
| Nadie puede aprobar un match pausado | Solo los revisores elegidos en el matcher pueden aprobar. Agrega revisores en Revisión Humana. |
