# Pipelines del Workbench

> Automatice el procesamiento de datos en varios pasos dentro del workbench de preparación. Encadene extracción con IA, enriquecimiento en cascada, fórmulas y ramificaciones en pipelines reutilizables.

Source: https://docs.graph8.com/es/data/staging-pipelines/

Los Pipelines del Workbench permiten encadenar pasos de enriquecimiento en flujos de trabajo automatizados que se ejecutan cada vez que llegan nuevos datos. En lugar de activar manualmente la extracción con IA, el enriquecimiento en cascada y las columnas de fórmulas una por una, defina el pipeline una sola vez y deje que procese cada fila entrante de forma automática.

Los pipelines se configuran por tabla del workbench y se activan ante eventos de ingesta específicos: cargas de PDF por correo, payloads de webhook, resultados de bots de scraping o importaciones manuales.

## Cómo funciona

1. Abra una tabla del workbench y haga clic en la pestaña **Pipeline**
2. Haga clic en **New Pipeline** o elija una plantilla prediseñada
3. Configure el **evento de inicio**: lo que activa el pipeline (PDF por correo, webhook, bot de scraping o importación)
4. Agregue pasos al pipeline: extracción con IA, enriquecimiento en cascada, evaluación de fórmulas, ramificación o exportación a lista
5. Arrastre los pasos para reordenarlos o agregue condiciones de ramificación para dirigir los datos por rutas distintas
6. Haga clic en **Save**: el pipeline se ejecuta automáticamente cada vez que llegan datos coincidentes

## Constructor de pipelines

El constructor visual de pipelines muestra el flujo de trabajo como una cadena de pasos conectados. Cada tarjeta de paso muestra su tipo, nombre y un resumen de su configuración.

### Eventos de inicio

Todo pipeline comienza con un evento de inicio que determina cuándo se activa:

| Tipo de inicio | Cuándo se activa | Caso de uso |
|----------------|-----------------|-------------|
| **Email PDF** | Se recibe un PDF mediante ingesta por correo | Procesamiento de currículums, facturas o documentos entrantes |
| **Webhook** | Los datos llegan a través del endpoint webhook de la tabla | Integración con herramientas externas o APIs |
| **Scraper Bot** | Un bot de scraping entrega resultados | Procesamiento de datos de empresas o contactos obtenidos por scraping web |
| **Import** | Se agregan filas mediante CSV, pegado, importación desde CRM o búsqueda | Enriquecimiento automático de lotes recién importados |

Para los eventos de inicio de Email PDF y webhook, puede configurar los tipos de fuente y los campos esperados, de modo que el pipeline sepa qué datos extraer.

### Tipos de pasos

Agregue pasos en cualquier orden. Cada paso se ejecuta una vez que el anterior ha finalizado.

| Paso | Qué hace | Configuración |
|------|----------|---------------|
| **AI Group** | Ejecuta extracción con IA usando un grupo de columnas guardado | Seleccione un grupo de columnas de IA existente o cree uno en el momento |
| **Waterfall** | Ejecuta enriquecimiento en cascada sobre una columna | Seleccione una columna configurada con cascada |
| **Formula** | Evalúa una expresión de fórmula y escribe el resultado | Utiliza el motor de expresiones G8X. Consulte la [sintaxis de fórmulas](#formula-expressions) |
| **Branch** | Dirige las filas por rutas distintas según una condición | Configure el campo, el operador y el valor. Las filas siguen la ruta "if true" o "else" |
| **Export to List** | Envía la fila a una lista de contactos o empresas | Elija la lista de destino y mapee los campos |

### Ramificación

Los pasos de ramificación dividen el pipeline en dos rutas según una condición. Configure la condición con un nombre de campo, un operador y un valor:

| Operador | Ejemplo |
|----------|---------|
| Equals | `status` equals `qualified` |
| Not equals | `tier` not equals `disqualified` |
| Contains | `title` contains `VP` |
| Greater than | `score` greater than `70` |
| Less than | `score` less than `30` |
| Is empty | `email` is empty |
| Is not empty | `phone` is not empty |

Las filas que cumplen la condición siguen la ruta "if true". Las demás siguen la ruta "else". Cada ruta puede tener sus propios pasos.

> **Caution:**
> Solo se permite un paso de ramificación por pipeline. Las ramificaciones anidadas no están soportadas.

## Plantillas

El constructor de pipelines incluye plantillas prediseñadas para comenzar rápidamente:

| Plantilla | Pasos | Caso de uso |
|-----------|-------|-------------|
| **Email PDF Extraction** | Extracción con IA, puntuación por fórmula, exportación | Procesamiento de currículums o documentos entrantes |
| **Webhook Routing** | Clasificación con IA, ramificación, exportación | Enrutamiento de datos de webhook según el contenido |
| **Import Classification** | Análisis con IA, etiquetado por fórmula, exportación | Categorización de contactos recién importados |
| **SDR Candidate Grading** | Extracción de currículum, detección de ubicación, puntuación, mapeo de nivel, narrativa, exportación | Pipeline completo de evaluación de candidatos |

Haga clic en una plantilla para estructurar el pipeline con pasos preconfigurados. Después puede personalizar la configuración de cada paso.

## Expresiones de fórmulas

Los pasos de fórmulas en los pipelines utilizan el motor de expresiones G8X, un lenguaje de fórmulas seguro y determinístico. Las fórmulas pueden hacer referencia a cualquier campo de la fila mediante notación de puntos.

### Funciones comunes

| Categoría | Funciones |
|-----------|----------|
| **String** | `UPPER`, `LOWER`, `TRIM`, `CONCAT`, `SPLIT`, `JOIN`, `REPLACE`, `SUBSTRING`, `LEFT`, `RIGHT` |
| **Math** | `ADD`, `SUB`, `MUL`, `DIV`, `MOD`, `MIN`, `MAX`, `FLOOR`, `CEIL`, `ROUND`, `ABS` |
| **Logic** | `IF`, `AND`, `OR`, `NOT`, `EQ`, `GT`, `GTE`, `LT`, `LTE` |
| **Type** | `TO_NUMBER`, `TO_STRING`, `IS_EMPTY`, `COALESCE`, `DEFAULT` |
| **JSON** | `GET`, `KEYS`, `VALUES`, `LENGTH`, `INCLUDES`, `FIND` |

### Ejemplos

Puntuación de un contacto según cargo y ubicación:
```
IF(INCLUDES(LOWER(title), "vp"), 90, IF(INCLUDES(LOWER(title), "director"), 70, 50))
```

Clasificación de una fila por fuente:
```
IF(IS_EMPTY(email), "no-email", IF(INCLUDES(email, "@company.com"), "internal", "external"))
```

Combinación de nombre y apellido:
```
CONCAT(TRIM(first_name), " ", TRIM(last_name))
```

> **Tip:**
> Las fórmulas se ejecutan en un entorno aislado, sin acceso a datos externos ni APIs. Solo pueden leer campos de la fila actual y llamar a funciones permitidas.

## Procesamiento asíncrono

Los pipelines procesan los datos de forma asíncrona. Cuando llegan filas, graph8 evalúa qué pipelines coinciden con el evento de inicio y encola cada paso para su procesamiento en segundo plano. Esto implica:

- **Sin tiempos de espera**: los lotes grandes se procesan de forma confiable sin bloquear la interfaz
- **Reintento ante fallos**: los pasos fallidos se reintentan automáticamente con retroceso exponencial
- **Seguimiento del progreso**: la cuadrícula se actualiza en tiempo real a medida que cada paso se completa

Los pasos de IA y cascada se distribuyen entre varios workers para un mayor rendimiento. Los pasos de fórmulas se ejecutan de inmediato, ya que no requieren llamadas externas.

## Relacionados

- [Staging Workbench →](https://docs.graph8.com/data/staging-workbench/): importe y prepare los datos antes de que ingresen a sus listas
- [Enrichment & Formulas →](https://docs.graph8.com/data/enrichment/): enriquezca contactos que ya se encuentran en una lista
- [Managing Lists →](https://docs.graph8.com/data/managing-lists/): organice y filtre sus listas
