Flows

Qué es un Flow

Un Flow es la definición de un tipo de documento: los campos que quieres extraer, las pistas que le dicen a la IA dónde encontrarlos y todo lo que se conecta después. Es el objeto de Tavnit que convierte un documento en datos; las Colecciones, los Subjects, los Splitters y los Cleaners existen para alimentar o refinar lo que produce un Flow.

No hay que dibujar plantillas ni mapear coordenadas. Describes los campos en lenguaje simple y el Flow funciona con distintos diseños, así que un solo Flow de Facturas de proveedores puede procesar veinte proveedores cuyas facturas no se parecen en nada. Por eso mismo, el esquema y sus pistas son donde se gana o se pierde casi toda la calidad de la extracción.

El esquema de datos de un Flow de Tavnit llamado Invoice Processor. Un panel de campos de metadatos lista nueve campos de valor único, como Invoice Number, Due Date y Total, con sus tipos de dato, junto a un panel de campos de tabla con Description, Quantity, Price y Amount. La barra lateral agrupa Runs recientes, disparador por email, Colecciones, Cleaner, Agente, plantillas de formulario, salida por email, webhook, exportación a Bucket, revisión humana e ID del Flow.
El esquema de datos de un Flow. Campos de metadatos a la izquierda, campos de tabla repetitivos a la derecha y todo lo que puedes asociar al Flow en la barra lateral.
Solo el esquema es obligatorio

Un Flow necesita al menos un campo. Todo lo demás en la barra lateral (Cleaner, Agente, webhook, correo, exportación a Bucket, revisión) es opcional y se puede agregar después sin reconstruir nada. Los Propietarios y Administradores pueden crear y editar Flows.

Crea un Flow

Haz clic en Crear Flow en la página Flows y Tavnit te pregunta “¿Cómo quieres empezar?”. Los tres caminos terminan en el mismo Flow editable, así que elige el que te dé un buen primer borrador más rápido.

OpciónQué haceConviene cuando
Desde plantillaAbre una galería con dos pestañas. Plantillas de Tavnit son Flows listos, con campos y pistas ya completados; en Mis Flows puedes usar Crear Copia sobre uno de tus propios Flows activos.Tu documento es de un tipo común o se parece a un Flow que ya tienes.
Sugerencia con IASube un PDF o una imagen de ejemplo. La IA lo lee, detecta los campos y arma un nombre, una descripción y un esquema con pistas. Desmarca lo que no necesites y edita cualquier campo antes de crear el Flow.Tu documento es propio de tu negocio y quieres una ventaja inicial.
Desde ceroUn esquema vacío. Defines cada campo tú mismo.Sabes exactamente lo que necesitas o estás reconstruyendo un proceso existente.

Las plantillas de Tavnit cubren facturas, órdenes de compra, recibos, estados de cuenta, guías de remisión, resultados de laboratorio, contratos, cotizaciones, notas de crédito, documentos de identidad y currículums. Si respondiste las preguntas de bienvenida al crear tu organización, las plantillas que coinciden con tus documentos aparecen primero, y la página de Flows vacía te ofrece crearlas todas en un clic con Crear estos flows.

Todos los caminos terminan con un nombre (al menos 3 caracteres) y una descripción (al menos 10 caracteres). El Flow se abre en el builder con una guía corta, “Configura tu flow”, y queda Activo desde el inicio; usa el interruptor de la barra superior para desactivarlo. Un Flow inactivo no se puede ejecutar.

La sugerencia con IA no crea un Run

Armar un Flow a partir de un documento de ejemplo no crea un Run. Toma el borrador como punto de partida: elimina lo que no vayas a usar, porque cada campo extra es más que revisar y más que puede fallar.

Campos de metadatos y campos de tabla

Cada campo es de uno de dos tipos, según si el valor aparece una vez por documento o una vez por línea. Es la decisión con más consecuencias del esquema: define la forma del payload de tu webhook, de las filas de tu Bucket, de tu CSV y de tu pantalla de revisión.

Campo de metadatosCampo de tabla
ApareceUna vez por documentoUna vez por fila de una tabla repetitiva
En una facturaNúmero de factura, fecha de emisión, proveedor, totalDescripción, cantidad, precio unitario, importe
En la salidaEl objeto metadataUna entrada por fila en rows
En un BucketSe repite en cada fila exportada de ese documentoUna fila de Bucket por cada una
Elegir mal el tipo es el error clásico

Si defines una columna de líneas como campo de metadatos, obtienes un solo valor de una tabla de veinte. Si defines el total de la factura como campo de tabla, el mismo número se repite en cada fila. Si dudas, pregúntate si podría aparecer una segunda copia del valor en el mismo documento.

Un Flow con solo campos de metadatos (un documento de identidad, un certificado, un formulario de una página) devuelve una sola fila por documento con esos valores, así que el resultado llega igual a tu vista de tabla, Bucket, webhook y correo, como cualquier otro Run.

Un Flow también puede agregar Columnas del Sistema a cada fila que produce: el ID del Flow, el nombre del Flow y el ID del Run. Actívalas cuando varios Flows escriben en un mismo Bucket y necesitas saber de qué documento viene cada fila.

Tipos de datos

Cada campo tiene un tipo. Los tipos no son decorativos: deciden si un valor se ordena, se suma, se compara en una regla de un Cleaner y se grafica correctamente. Definirlos bien en el Flow ahorra trabajo en cada etapa posterior.

El editor de campos muestra los nombres de los tipos en inglés, así que la tabla los cita tal como aparecen en pantalla.

TipoÚsalo paraNotas
TextNombres, direcciones, descripciones, códigos de referenciaLa opción segura por defecto.
NumberTotales, cantidades, precios, tasasNecesario si luego quieres sumar, comparar o graficar el valor.
DateFechas de emisión, de vencimiento, de entregaPasar a un formato de salida uniforme es trabajo de un Cleaner, no de la extracción.
Mixed/AlphanumericValores que mezclan letras y dígitos: números de parte, códigos de contenedor, identificaciones fiscalesÚsalo en lugar de Number cuando los ceros a la izquierda o las letras deben conservarse.
ImageFiguras impresas en el documento: fotos, logotipos, firmas, sellosSe extraen y se guardan de forma segura, y se entregan como un enlace temporal.
Extrae tal como está impreso y normaliza después

No uses el tipo para cambiar el formato. Extrae el valor como lo muestra el documento y deja que un Cleaner convierta monedas, reescriba fechas y corrija separadores decimales. Una extracción que además transforma es más difícil de depurar cuando un número sale mal.

Pistas de extracción

Las pistas te permiten desambiguar un campo sin escribir una plantilla. Importan sobre todo cuando un documento tiene varios valores parecidos: tres fechas, dos totales, un número de orden y un número de factura en el mismo encabezado.

En un campo de metadatos puedes combinar cualquiera de estas:

PistaQué le dice a la IAÚtil para
Valores de ejemploValores reales copiados de tus documentos.Casi todo. Es la pista más valiosa: muestra formato, longitud y forma a la vez.
Junto a una etiquetaLa etiqueta impresa junto a la que aparece el valor. Lista las variantes: Invoice Number, Invoice #, Inv No.Campos de encabezado que cada proveedor etiqueta distinto.
En una zona de la páginaUna de nueve zonas, de arriba a la izquierda a abajo a la derecha.Valores que siempre están en la misma esquina, como un número de documento arriba a la derecha.
Rango esperadoUn mínimo, un máximo o ambos. Funciona como guía, no como regla estricta.Detectar una coma decimal mal leída: un total de 27,030 cuando era 270.30.
Pistas adicionalesTexto libre para lo que no cubren las opciones anteriores.Reglas como “usa el monto neto, nunca el bruto”.

En un campo de tabla las pistas son distintas, porque la IA ubica una columna y no un punto de la página:

PistaQué le dice a la IA
Source TypeTable para datos en una tabla real con columnas; Free-form para valores con forma de lista dentro de texto no estructurado, como un contrato.
Column HeadersEl texto del encabezado tal como está impreso. Lista todas las variantes que usan tus proveedores para que un solo campo las reconozca todas.
Rango esperadoUn rango razonable para los números de esa columna.
Valores de ejemploValores reales de celdas de tus documentos.
Additional InfoLo que realmente representa la columna cuando el encabezado solo no basta: “precio unitario antes del descuento”.
Empieza sin pistas

Agrega los campos, procesa un documento real y agrega pistas solo donde el resultado salió mal. Poner pistas a todo desde el inicio consume tiempo en campos que nunca fueron ambiguos, y una pista demasiado específica puede empeorar la extracción al descartar un diseño que no anticipaste. Cuando el Flow tenga algunos Runs, Diagnosticar puede proponerte pistas.

Los valores de ejemplo no aplican a los campos Date ni Image, así que pon cualquier indicación sobre fechas en el cuadro de pistas adicionales.

Campos compuestos

Algunas columnas de tabla tienen varios valores en una sola celda, como un desglose de tallas y cantidades del tipo S:2 M:5 L:3 impreso en un mismo recuadro. Un campo compuesto divide esa celda en subcampos, así cada parte queda como un valor propio y no como un texto que tengas que procesar después.

  1. 1Agrega un campo de tabla y activa Composite Field.
  2. 2Define los subcampos que forman la celda, por ejemplo size como texto y quantity como número.
  3. 3Agrega valores de ejemplo que muestren cómo aparece la agrupación en tus documentos.

Los subcampos contienen valores individuales, así que pueden ser Text, Number, Date o Mixed/Alphanumeric, pero no Image. Los campos compuestos solo existen en los campos de tabla, porque su razón de ser es desarmar una celda que se repite.

Campos de metadatos con varios valores

El equivalente en metadatos es Accept multiple values. Actívalo cuando un mismo documento puede tener legítimamente varios elementos del mismo tipo (un conjunto de números de recibo, varias referencias de órdenes de compra) y el campo devolverá una lista en lugar de un solo valor. No está disponible en campos Image.

Extraer imágenes

Un campo Image extrae una figura del documento en lugar de texto: la foto de un producto, una firma, un sello, un logotipo. Un campo de imagen de metadatos guarda una imagen por documento; un campo de imagen de tabla le da a cada fila la imagen que le corresponde.

  • Las imágenes se guardan de forma privada, así que llegan como enlaces temporales y no como bytes
  • El mismo tipo de enlace aparece en el payload del webhook, en la salida por correo y en la celda del CSV; una exportación desde la página del Run genera enlaces nuevos
  • Los enlaces de las entregas son válidos por siete días: descarga la imagen en lugar de guardar el enlace
  • Los campos Image no pueden ser compuestos ni aceptar varios valores, y las pistas de valores de ejemplo no aplican

Construye el esquema

Construye primero los campos de metadatos, luego los de tabla y al final las pistas. Prueba pronto con un documento real: un esquema que se ve bien en papel y uno que resiste tus documentos reales son cosas distintas.

  1. 1Haz clic en Crear Flow y elige una plantilla, una sugerencia con IA o un Flow desde cero. Dale un nombre que describa el documento (Facturas de proveedores) y una descripción real: mejora la precisión de la extracción y es lo que una Colección usa después para enrutar.
  2. 2En Campos de Metadatos, haz clic en Agregar Campo por cada valor que aparece una vez por documento y define el tipo de dato a medida que avanzas.
  3. 3En Campos de Tabla, agrega un campo por cada columna de la tabla repetitiva de líneas.
  4. 4Agrega pistas de extracción solo a los campos que las necesitan.
  5. 5El Flow ya está Activo. Haz clic en Run, procesa un documento real y compara el resultado con el original.

Arrastra los campos por su asa para cambiar su orden.

Renombrar un campo cambia la clave en todo lo que lo consume: el payload del webhook, el mapeo de columnas del Bucket, el encabezado del CSV y cualquier Cleaner que lo lea. Revisa qué está conectado antes de renombrar un campo en un Flow que ya está en uso.

Qué archivos lee un Flow

Un Flow acepta PDF, imágenes y hojas de cálculo por cualquier vía: subida, correo y API. Tavnit decide cómo leer cada archivo, así que no tienes que configurar nada por formato.

ArchivoFormatosCómo se lee
PDFPDFLos PDF digitales se leen directamente. Los PDF escaneados se detectan automáticamente y se leen primero con OCR.
ImagenPNG, JPG, JPEG, JFIFSe leen como una página escaneada. JFIF es la variante de JPEG que algunos navegadores de Windows usan al guardar, y funciona como cualquier JPEG.
Hoja de cálculoXLSX, XLS, CSVSe lee la primera hoja visible. Las demás hojas y las ocultas se ignoran, así que pon los datos que quieres en la primera hoja.

Las hojas muy grandes se rechazan con un error claro. Para procesar cada hoja de un libro como un documento propio, envíalo a un Splitter.

Escaneo Deficiente: fuerza el OCR en archivos que se extraen mal

Los documentos escaneados ya pasan por OCR automáticamente. Algunos archivos parecen digitales pero traen una capa de texto dañada: un escaneo con una transcripción incrustada de mala calidad, un PDF exportado desde una herramienta rara. Para esos casos, abre Escaneo Deficiente en los ajustes del Flow y actívalo: cada archivo del Flow se lee primero con OCR y la extracción trabaja sobre el texto recuperado. Si el OCR no está disponible o falla, el Run vuelve automáticamente al proceso estándar.

Qué puedes asociar a un Flow

El esquema decide qué sale; el resto del Flow decide qué pasa con eso. Cada elemento es independiente: asocia solo lo que necesites, en cualquier orden y en cualquier momento.

EtapaElementoQué hace
EntradasDisparador por EmailLe da al Flow su propia dirección de bandeja para que los documentos reenviados (PDF, imagen u hoja de cálculo) se procesen automáticamente.
EntradasColeccionesLista las Colecciones que pueden enviar documentos a este Flow.
ProcesamientoCleanerHace una limpieza de las filas de cada Run: cambia formato, convierte, calcula, busca y dispara reglas.
ProcesamientoAgenteSe ejecuta después de la extracción, con los campos extraídos como entradas.
ProcesamientoPlantillas de FormularioRellena una plantilla PDF con los valores extraídos de un Run.
SalidasSalida por EmailEnvía los resultados por correo a una o más direcciones después de cada Run exitoso, con adjuntos opcionales en JSON, CSV, formularios completados y el documento original.
SalidasWebhookEnvía los resultados por POST a tu endpoint. Solo HTTPS.
SalidasExportar a BucketAgrega las filas de cada Run a una tabla estructurada, con los campos mapeados a columnas.
AjustesRevisión HumanaPausa los Runs para que un revisor los apruebe antes de entregar nada.
AjustesEscaneo DeficienteFuerza el OCR en todos los archivos del Flow (ver arriba).
AjustesID del FlowEl identificador que envías al llamar a la API.

Opciones del Disparador por Email. Con el disparador activado, el panel muestra la dirección de bandeja del Flow y dos ajustes. Remitentes Permitidos limita quién puede iniciar un Run por correo; deja la lista vacía para aceptar cualquier remitente. Procesar Cuerpo del Correo también extrae del texto del mensaje, ya sea Solo cuando no hay adjuntos (la opción por defecto, para que una nota de presentación nunca inicie un segundo Run) o Siempre. La dirección del remitente queda registrada en cada Run y se muestra en la página Runs. Integración por correo explica los detalles.

Diagnostica un Flow

Cuando un Flow ya procesó algunos documentos, el botón Diagnosticar de la barra superior del Flow abre el Doctor del flow. Estudia tus Runs completados recientes, encuentra los campos que salen vacíos o con el tipo equivocado una y otra vez, y propone correcciones.

  1. 1Abre el Flow y haz clic en Diagnosticar. El botón aparece para Propietarios y Administradores cuando el Flow tiene al menos un campo.
  2. 2Tavnit lee los Runs recientes, vuelve a leer algunos de los documentos donde fallaron campos y redacta correcciones. Tarda unos momentos.
  3. 3Revisa el resultado. Cada campo con problemas muestra con qué frecuencia salió vacío o con el tipo incorrecto, con su pista en dos versiones, Actual y Propuesto. También puede ofrecerte una Descripción sugerida.
  4. 4Conserva o edita las correcciones con las que estés de acuerdo y haz clic en Aplicar. Nada cambia hasta que aplicas; si cierras el panel, las propuestas se descartan.

Si todo está bien, verás “La extracción se ve saludable”. Diagnosticar solo se ejecuta cuando haces clic. Después de aplicar correcciones, vuelve a procesar un documento real para confirmar que ayudaron.

Runs: qué pasa cuando se procesa un documento

Cada documento se convierte en un Run, y cada Run sigue la misma secuencia. Conocer el orden te dice dónde buscar cuando algo llega tarde, llega mal o no llega.

  1. 1El documento se guarda y el Run queda en cola.
  2. 2La extracción lo lee y produce valores de metadatos y filas de tabla.
  3. 3Si hay un Cleaner asociado, hace la limpieza de esas filas: conversiones, columnas calculadas, búsquedas.
  4. 4Se disparan las reglas condicionales: se pueden descartar filas, enviar notificaciones o pedir revisión.
  5. 5Si se requiere revisión, el Run se pausa y no se entrega nada hasta que un revisor lo apruebe.
  6. 6Se ejecutan las salidas: correo, exportación a Bucket y webhook. Luego el Run se marca como completado y, si hay un Agente asociado, arranca.
Estado del RunSignificado
Pendiente (en cola)Guardado y esperando un worker.
ProcesandoSe está extrayendo, limpiando o entregando. La página del Run muestra la etapa actual.
ReintentandoUn intento anterior falló por un motivo temporal y el Run se volvió a encolar automáticamente (ver más abajo).
Esperando revisión HITLEn pausa para revisión humana. Todavía no se entregó nada.
CompletadoLa extracción terminó y se ejecutaron todas las salidas configuradas.
CanceladoAlguien canceló el Run mientras estaba en cola o procesándose, o un revisor lo rechazó. No se entrega nada más.
FallidoEl documento no se pudo procesar. El registro del Run explica por qué.

Trabajar con Runs

La página Runs lista todos los Runs de tu organización; cada Flow también tiene su pestaña Runs Recientes. Usa Filtrar para acotar por estado, rango de fechas, Flow, usuario, origen o un ID de Run pegado.

AcciónDóndeNotas
Ver DetallesMenú de acciones del Run, o clic en la filaLos datos extraídos junto al archivo original, la información del Run y el registro del procesamiento.
Descargar CSVMenú de acciones del RunSolo Runs completados. En la página del Run también están Exportar CSV y Exportar JSON.
Descargar ArchivoMenú de acciones del Run, o Descargar en la página del RunEl archivo original. Las hojas de cálculo no tienen vista previa, así que descárgalas para verlas.
Cancelar RunMenú de acciones del RunSolo para Runs en cola o en ejecución.

La columna Iniciado Por muestra quién inició el Run: el usuario en una subida, o la dirección del remitente en un Run que llegó por correo. La columna Origen indica cómo llegó: carga manual, API, correo, etc.

Runs fallidos y reintentos automáticos

La mayoría de los fallos son culpa del documento (un archivo ilegible o un tipo no soportado) y reintentar no ayudaría. Algunos no: un worker de procesamiento se reinicia a mitad del Run o un proveedor de IA tiene una caída temporal. Para esos casos, una organización puede hacer que Tavnit reintente por su cuenta.

  1. 1Ve a Configuración → Organización → Runs fallidos. Solo el Propietario ve esta pestaña.
  2. 2Activa Reintentar automáticamente los runs fallidos.
  3. 3Define Reintentos máximos por run en 1, 2 o 3.
  • Un Run reintentado conserva el mismo ID, así que las consultas a la API, los webhooks y los enlaces siguen funcionando.
  • Las salidas solo se disparan cuando un Run se completa, así que un reintento nunca entrega un documento dos veces.
  • Nunca se reintentan: archivos inválidos, tipos no soportados, Runs cancelados, Runs en pausa para revisión y Runs creados hace más de un día.
  • Un Run que se pierde por el reinicio de un worker se detecta automáticamente. Con el reintento automático activado vuelve a la cola; con él desactivado, se marca como Fallido.
  • La página del Run lista los Intentos anteriores, cada uno marcado como Worker perdido o Falló con su error, y la lista de Runs muestra una insignia de reintento.

Para enterarte de los Runs que terminan fallando, agrega direcciones en Notificaciones de Fallo de Run, en la misma pestaña.

Mejorar la calidad de la extracción

Cuando un campo sale mal, la solución casi siempre está en la definición del campo y no en el documento. Si el Flow ya tiene Runs, empieza con Diagnosticar; luego revisa estos casos en orden: los dos primeros resuelven la mayoría.

SíntomaCausa probableSolución
Sale el valor equivocado entre varios parecidosNada los distingue.Agrega la etiqueta junto a la que aparece el valor, o la zona de la página donde está.
Un campo sale vacíoEl nombre del campo no bastó para identificarlo.Agrega dos o tres valores de ejemplo reales; suele ser suficiente.
Solo una línea cuando hay muchasSe definió como campo de metadatos.Defínelo como campo de tabla.
El mismo valor repetido en cada filaUn valor del documento se definió como campo de tabla.Defínelo como campo de metadatos.
Números desfasados por un factor de cienLos separadores decimales y de miles se leyeron al revés.Define un rango esperado y normaliza el formato en un Cleaner.
Se pierden ceros a la izquierda o letrasEl campo tiene tipo Number.Cámbialo a Mixed/Alphanumeric.
Se confunden columnas entre síDos columnas tienen encabezados parecidos.Agrega los encabezados impresos en Column Headers y describe la columna en Additional Info.
Bien con algunos proveedores, mal con otrosLas pistas describen el diseño de un solo proveedor.Agrega al mismo campo las variantes de etiqueta y encabezado de los otros proveedores.
Texto ilegible de un archivo que parece digitalLa capa de texto incrustada del PDF está dañada.Activa Escaneo Deficiente para que el Flow lo lea con OCR.
Una hoja de cálculo sale vacía o incompletaLos datos no están en la primera hoja visible.Muévelos a la primera hoja, o usa un Splitter para libros con varias hojas.
Cambia una cosa a la vez

Vuelve a procesar el mismo documento después de cada cambio. Si editas cuatro pistas a la vez, sabrás que el resultado mejoró pero no cuál cambio lo logró, y alguno de los cuatro pudo haberlo empeorado.

Corrige los datos, no la extracción

Si el valor es correcto pero el formato no (fechas, monedas, unidades, mayúsculas), deja el Flow como está y agrega un Cleaner.