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.

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ón | Qué hace | Conviene cuando |
|---|---|---|
| Desde plantilla | Abre 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 IA | Sube 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 cero | Un 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.
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 metadatos | Campo de tabla | |
|---|---|---|
| Aparece | Una vez por documento | Una vez por fila de una tabla repetitiva |
| En una factura | Número de factura, fecha de emisión, proveedor, total | Descripción, cantidad, precio unitario, importe |
| En la salida | El objeto metadata | Una entrada por fila en rows |
| En un Bucket | Se repite en cada fila exportada de ese documento | Una fila de Bucket por cada una |
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 para | Notas |
|---|---|---|
| Text | Nombres, direcciones, descripciones, códigos de referencia | La opción segura por defecto. |
| Number | Totales, cantidades, precios, tasas | Necesario si luego quieres sumar, comparar o graficar el valor. |
| Date | Fechas de emisión, de vencimiento, de entrega | Pasar a un formato de salida uniforme es trabajo de un Cleaner, no de la extracción. |
| Mixed/Alphanumeric | Valores 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. |
| Image | Figuras impresas en el documento: fotos, logotipos, firmas, sellos | Se extraen y se guardan de forma segura, y se entregan como un enlace temporal. |
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:
| Pista | Qué le dice a la IA | Útil para |
|---|---|---|
| Valores de ejemplo | Valores reales copiados de tus documentos. | Casi todo. Es la pista más valiosa: muestra formato, longitud y forma a la vez. |
| Junto a una etiqueta | La 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ágina | Una 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 esperado | Un 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 adicionales | Texto 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:
| Pista | Qué le dice a la IA |
|---|---|
| Source Type | Table 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 Headers | El texto del encabezado tal como está impreso. Lista todas las variantes que usan tus proveedores para que un solo campo las reconozca todas. |
| Rango esperado | Un rango razonable para los números de esa columna. |
| Valores de ejemplo | Valores reales de celdas de tus documentos. |
| Additional Info | Lo que realmente representa la columna cuando el encabezado solo no basta: “precio unitario antes del descuento”. |
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.
- 1Agrega un campo de tabla y activa Composite Field.
- 2Define los subcampos que forman la celda, por ejemplo
sizecomo texto yquantitycomo número. - 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.
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.
- 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.
- 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.
- 3En Campos de Tabla, agrega un campo por cada columna de la tabla repetitiva de líneas.
- 4Agrega pistas de extracción solo a los campos que las necesitan.
- 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.
| Archivo | Formatos | Cómo se lee |
|---|---|---|
| Los PDF digitales se leen directamente. Los PDF escaneados se detectan automáticamente y se leen primero con OCR. | ||
| Imagen | PNG, JPG, JPEG, JFIF | Se 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álculo | XLSX, XLS, CSV | Se 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.
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.
| Etapa | Elemento | Qué hace |
|---|---|---|
| Entradas | Disparador por Email | Le 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. |
| Entradas | Colecciones | Lista las Colecciones que pueden enviar documentos a este Flow. |
| Procesamiento | Cleaner | Hace una limpieza de las filas de cada Run: cambia formato, convierte, calcula, busca y dispara reglas. |
| Procesamiento | Agente | Se ejecuta después de la extracción, con los campos extraídos como entradas. |
| Procesamiento | Plantillas de Formulario | Rellena una plantilla PDF con los valores extraídos de un Run. |
| Salidas | Salida por Email | Enví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. |
| Salidas | Webhook | Envía los resultados por POST a tu endpoint. Solo HTTPS. |
| Salidas | Exportar a Bucket | Agrega las filas de cada Run a una tabla estructurada, con los campos mapeados a columnas. |
| Ajustes | Revisión Humana | Pausa los Runs para que un revisor los apruebe antes de entregar nada. |
| Ajustes | Escaneo Deficiente | Fuerza el OCR en todos los archivos del Flow (ver arriba). |
| Ajustes | ID del Flow | El 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.
- 1Abre el Flow y haz clic en Diagnosticar. El botón aparece para Propietarios y Administradores cuando el Flow tiene al menos un campo.
- 2Tavnit lee los Runs recientes, vuelve a leer algunos de los documentos donde fallaron campos y redacta correcciones. Tarda unos momentos.
- 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.
- 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.
- 1El documento se guarda y el Run queda en cola.
- 2La extracción lo lee y produce valores de metadatos y filas de tabla.
- 3Si hay un Cleaner asociado, hace la limpieza de esas filas: conversiones, columnas calculadas, búsquedas.
- 4Se disparan las reglas condicionales: se pueden descartar filas, enviar notificaciones o pedir revisión.
- 5Si se requiere revisión, el Run se pausa y no se entrega nada hasta que un revisor lo apruebe.
- 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 Run | Significado |
|---|---|
| Pendiente (en cola) | Guardado y esperando un worker. |
| Procesando | Se está extrayendo, limpiando o entregando. La página del Run muestra la etapa actual. |
| Reintentando | Un intento anterior falló por un motivo temporal y el Run se volvió a encolar automáticamente (ver más abajo). |
| Esperando revisión HITL | En pausa para revisión humana. Todavía no se entregó nada. |
| Completado | La extracción terminó y se ejecutaron todas las salidas configuradas. |
| Cancelado | Alguien canceló el Run mientras estaba en cola o procesándose, o un revisor lo rechazó. No se entrega nada más. |
| Fallido | El 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ón | Dónde | Notas |
|---|---|---|
| Ver Detalles | Menú de acciones del Run, o clic en la fila | Los datos extraídos junto al archivo original, la información del Run y el registro del procesamiento. |
| Descargar CSV | Menú de acciones del Run | Solo Runs completados. En la página del Run también están Exportar CSV y Exportar JSON. |
| Descargar Archivo | Menú de acciones del Run, o Descargar en la página del Run | El archivo original. Las hojas de cálculo no tienen vista previa, así que descárgalas para verlas. |
| Cancelar Run | Menú de acciones del Run | Solo 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.
- 1Ve a Configuración → Organización → Runs fallidos. Solo el Propietario ve esta pestaña.
- 2Activa Reintentar automáticamente los runs fallidos.
- 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íntoma | Causa probable | Solución |
|---|---|---|
| Sale el valor equivocado entre varios parecidos | Nada 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ío | El nombre del campo no bastó para identificarlo. | Agrega dos o tres valores de ejemplo reales; suele ser suficiente. |
| Solo una línea cuando hay muchas | Se definió como campo de metadatos. | Defínelo como campo de tabla. |
| El mismo valor repetido en cada fila | Un valor del documento se definió como campo de tabla. | Defínelo como campo de metadatos. |
| Números desfasados por un factor de cien | Los 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 letras | El 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 otros | Las 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 digital | La 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 incompleta | Los datos no están en la primera hoja visible. | Muévelos a la primera hoja, o usa un Splitter para libros con varias hojas. |
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.
Si el valor es correcto pero el formato no (fechas, monedas, unidades, mayúsculas), deja el Flow como está y agrega un Cleaner.
