> ## Documentation Index
> Fetch the complete documentation index at: https://docs.getsupervisor.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Variables de entrada y salida: lo que le contamos al agente y lo que nos cuenta de vuelta

> El concepto que destraba todo lo que viene después: campañas, integraciones, reportes… Todo pasa por aquí.

<div
  style={{
position: 'relative',
marginTop: '-0.5rem',
marginBottom: '2.5rem',
borderRadius: '1rem',
overflow: 'hidden',
paddingTop: '45%',
boxShadow: '0 4px 20px rgba(0,0,0,0.12)',
}}
>
  <img
    src="https://mintcdn.com/supervisorai/aFOceNtmZJygjrCt/images/blog/variables-entrada-y-salida.jpg?fit=max&auto=format&n=aFOceNtmZJygjrCt&q=85&s=90efdfa79a8f9e2c5a2cf2108bb65765"
    alt="Ilustración abstracta de flujo bidireccional de datos"
    style={{
  position: 'absolute',
  top: 0,
  left: 0,
  width: '100%',
  height: '100%',
  display: 'block',
  objectFit: 'cover',
  objectPosition: 'center',
}}
    width="1424"
    height="752"
    data-path="images/blog/variables-entrada-y-salida.jpg"
  />

  <div
    style={{
  position: 'absolute',
  inset: 0,
  display: 'flex',
  alignItems: 'flex-end',
  padding: '2rem',
  background:
    'linear-gradient(to top, rgba(0,0,0,0.75), rgba(0,0,0,0.1) 55%, transparent)',
}}
  >
    <div style={{ color: 'white', fontSize: '0.9rem', lineHeight: 1.4 }}>
      <div style={{ fontWeight: 600, marginBottom: '0.25rem' }}>
        Lizbeth Suarez · Support Manager @ Leracom
      </div>

      <div style={{ opacity: 0.85 }}>
        17 de febrero, 2026 · 7 min de lectura
      </div>
    </div>
  </div>
</div>

<div style={{marginTop: "2rem", marginBottom: "3rem", padding: "1.25rem 1.5rem", background: "rgba(14, 165, 233, 0.06)", borderRadius: "0.75rem", borderLeft: "3px solid #0ea5e9"}}>
  **En este post**

  * [Variables de entrada: lo que el agente necesita saber ANTES de llamar](#variables-de-entrada-lo-que-el-agente-necesita-saber-antes-de-llamar)
  * [Variables de salida: lo que el agente te entrega DESPUÉS de la llamada](#variables-de-salida-lo-que-el-agente-te-entrega-después-de-la-llamada)
  * [Mi regla personal para no fallar](#mi-regla-personal-para-no-fallar)
  * [Errores que he visto (y cometido) más veces de lo que me gustaría](#errores-que-he-visto-y-cometido-más-veces-de-lo-que-me-gustaría)
</div>

<div
  style={{
position: 'relative',
paddingTop: '56.25%',
marginBottom: '2.5rem',
borderRadius: '0.75rem',
overflow: 'hidden',
boxShadow: '0 4px 20px rgba(0,0,0,0.12)',
}}
>
  <iframe
    src="https://www.youtube.com/embed/6JWy8FISvpw"
    title="Variables de entrada y salida — Agents Studio"
    frameBorder="0"
    allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share"
    allowFullScreen
    style={{
  position: 'absolute',
  top: 0,
  left: 0,
  width: '100%',
  height: '100%',
  border: 0,
}}
  />
</div>

***

Llevo años explicando este tema y me he rendido: la única manera que he encontrado de que alguien entienda las variables a la primera es con la analogía de **la hoja de tareas del repartidor**.

Imagina que eres el jefe de una empresa de mensajería. Cada mañana, le das al repartidor una hoja con las direcciones del día, el nombre de quien recibe y el producto que lleva. Esa hoja son las **variables de entrada**.

Al final del día, el repartidor te devuelve la misma hoja, pero con anotaciones: "recibió OK", "no había nadie", "el cliente pidió reprogramar". Esas anotaciones son las **variables de salida**.

Eso es todo. En Agents Studio funciona exactamente así, pero con llamadas en vez de paquetes.

## Variables de entrada: lo que el agente necesita saber ANTES de llamar

En el manual se llaman *variables dinámicas*. Son los datos que le pasas al agente por cada contacto para que pueda personalizar la conversación.

Las escribes entre **llaves dobles**: `{{nombre_cliente}}`, `{{saldo_pendiente}}`, `{{fecha_vencimiento}}`.

### ¿Dónde aparecen?

En cualquier lugar donde escribas texto para el agente:

* En el saludo inicial: *"Hola *`{{nombre_cliente}}`*"*
* En las reglas críticas: *"Nunca menciones que *`{{nombre_empresa}}`* tuvo problemas"*
* En las instrucciones: *"Si el *`{{saldo_pendiente}}`* es menor a 500 pesos, ofrece pago inmediato"*
* En la descripción del objetivo principal

<Frame caption="Las variables entre llaves dobles se rellenan automáticamente con los datos de cada contacto.">
  <img src="https://mintcdn.com/supervisorai/aFOceNtmZJygjrCt/images/blog/variables/01-entrada-en-saludo.png?fit=max&auto=format&n=aFOceNtmZJygjrCt&q=85&s=9d501f0da4ba044f6b622bb371832d85" alt="Saludo inicial con variables `{{nombre_cliente}}` y `{{nombre_empresa}}`" width="1440" height="900" data-path="images/blog/variables/01-entrada-en-saludo.png" />
</Frame>

### ¿De dónde las saca el agente?

Depende de cómo esté llamando:

* **En una llamada de prueba**: tú las tecleas a mano antes de marcar. Cada una en su campito. Simple.
* **En una campaña masiva**: vienen en el archivo CSV que subes (cada fila del CSV es un contacto, cada columna es una variable).
* **En llamadas entrantes**: puedes pasarlas al momento de disparar la conversación desde tu sistema.

### Un ejemplo real

Digamos que tienes un agente de cobranza. Las variables que necesita son:

```
{{nombre_cliente}}       → Ana García
{{nombre_empresa}}       → Bonsaif
{{saldo_pendiente}}      → 1,200 pesos
{{fecha_vencimiento}}    → 2026-03-25
{{reference_id}}         → CTE-00124
```

Con esto, el agente puede decir cosas como:

> "Hola Ana, le habla Daniela de Bonsaif. Le llamo porque detectamos un saldo pendiente de 1,200 pesos con fecha de vencimiento del 25 de marzo…"

Sin variables, tendrías que hacer un agente distinto por cada cliente. Con variables, **un solo agente sirve para millones de llamadas personalizadas**.

## Variables de salida: lo que el agente te entrega DESPUÉS de la llamada

Aquí es donde muchos se pierden, y es la parte más valiosa. Las variables de salida son los datos que el agente **extrae automáticamente** de la conversación para entregarte un resumen estructurado.

No son un transcript. No es "grábame la llamada y ya veré después". Es: **yo le pregunto algo específico al agente, y el agente me contesta con un campo lleno**.

<Frame caption="Panel de Variables de Salida de un agente en producción: cada etiqueta marca el tipo (T texto, S selector, B booleano).">
  <img src="https://mintcdn.com/supervisorai/aFOceNtmZJygjrCt/images/blog/variables/02-lista-salida.png?fit=max&auto=format&n=aFOceNtmZJygjrCt&q=85&s=fad0620bc0d8d5c043f30bcd32a1a064" alt="Lista de variables de salida configuradas junto al editor del agente" width="1440" height="900" data-path="images/blog/variables/02-lista-salida.png" />
</Frame>

### ¿Cómo se configuran?

Cada variable de salida tiene:

* **Nombre**: el identificador. Ejemplo: `resultado_llamada`, `promesa_pago`, `monto_acordado`.
* **Descripción**: qué dato debe capturar el agente y en qué momento.
* **Tipo de dato**: define el formato del valor.
* **Obligatoria**: si debe recolectarlo sí o sí antes de colgar.

<Frame caption="El formulario de una variable `Selector`: nombre, switch de requerido, descripción (que es la guía de la IA) y las opciones cerradas.">
  <img src="https://mintcdn.com/supervisorai/aFOceNtmZJygjrCt/images/blog/variables/03-crear-variable.png?fit=max&auto=format&n=aFOceNtmZJygjrCt&q=85&s=f1c93395bb0cf522d7c88b8ff33d1556" alt="Formulario Agregar Variable de Salida tipo Selector con nombre, descripción y opciones" width="1440" height="900" data-path="images/blog/variables/03-crear-variable.png" />
</Frame>

### Los 5 tipos de dato

| Tipo        | Para qué sirve          | Ejemplo                                           |
| ----------- | ----------------------- | ------------------------------------------------- |
| **String**  | Texto corto             | Nombre del cliente                                |
| **Text**    | Texto largo             | Resumen de la conversación                        |
| **Enum**    | Opción de lista cerrada | "interesado" / "no interesado" / "llamar después" |
| **Boolean** | Sí o no                 | ¿El cliente aceptó la propuesta?                  |
| **Number**  | Un número               | Monto ofrecido, edad                              |

<Frame caption="Al dar clic en Agregar Variable, eliges el tipo: Texto/Cadena, Selector (Enum), Booleano o Número.">
  <img src="https://mintcdn.com/supervisorai/aFOceNtmZJygjrCt/images/blog/variables/04-tipos-dato.png?fit=max&auto=format&n=aFOceNtmZJygjrCt&q=85&s=a0d7fbf9412cc570063a430f8e90a65f" alt="Menú desplegable con los tipos de variable disponibles" width="1440" height="900" data-path="images/blog/variables/04-tipos-dato.png" />
</Frame>

### Ejemplo real para un agente de cobranza

```
resultado_llamada       Enum     pagó / prometió pagar / no contestó / rechazó
fecha_promesa_pago      String   Fecha en que el cliente prometió pagar
monto_acordado          Number   Monto que el cliente acordó pagar
requiere_seguimiento    Boolean  ¿Se debe volver a llamar?
notas_adicionales       Text     Resumen libre de la conversación
```

Cuando la llamada termina, llega a tu sistema un evento (call.callAnalyzed) con algo así:

```json theme={null}
{
  "outputVariables": {
    "resultado_llamada": "prometió pagar",
    "fecha_promesa_pago": "2026-04-25",
    "monto_acordado": 1200,
    "requiere_seguimiento": true,
    "notas_adicionales": "Cliente aceptó pagar el viernes. Pidió recordatorio por SMS."
  }
}
```

Eso, amigo/a, es **oro molido**. Es el pegamento entre tu llamada y tu CRM, tu sistema de cobranza, tu dashboard de ventas. Sin esto, sólo tienes audios que nadie escucha.

## Mi regla personal para no fallar

Antes de armar el agente, me siento 20 minutos con un papel y contesto:

1. **¿Qué datos necesito del cliente para personalizar la llamada?** → Esas son las de entrada.
2. **¿Qué necesito que pase a mi sistema cuando la llamada termine?** → Esas son las de salida.

Si haces esto bien, el 80% del trabajo ya está hecho. La implementación en la plataforma es la parte fácil.

## Errores que he visto (y cometido) más veces de lo que me gustaría

**1. Variables con nombres vagos como `dato_1` o `info_cliente`.**
Cuando llegas al tercer mes y tienes 40 agentes, ya nadie sabe qué es `dato_3`. Usa nombres descriptivos: `monto_acordado` es mejor que `cantidad`.

**2. Pedir demasiadas variables de salida.**
Si el agente tiene que extraer 18 datos, la llamada se vuelve un interrogatorio. Prioriza. Menos es más.

**3. Olvidar marcar las obligatorias como obligatorias.**
Si el dato es crítico para tu negocio, márcalo como obligatorio. Si no, el agente puede colgar antes de preguntarlo.

**4. Usar `String` cuando necesitas `Enum`.**
Si dejas "tipo texto" para un resultado, vas a tener 300 variantes de "interesado", "interesada", "sí le interesa", "INTERESADO"… Limpiar eso después es una pesadilla. Usa `Enum` con opciones cerradas.

<Tip>
  **Tu turno**

  1. Toma 10 minutos con papel y contesta: ¿qué datos necesita tu agente *antes* de llamar (entrada)? ¿qué quieres que te devuelva al colgar (salida)?
  2. Entra al agente que creaste y agrega 3 variables de entrada en el saludo o las reglas, con el formato `{{nombre_variable}}`.
  3. Crea 3 variables de salida: una `Selector` (Enum) para el resultado, una `Booleano` para un sí/no, y una `Texto` libre para el resumen.
</Tip>

<div style={{marginTop: "2rem", padding: "1.5rem", background: "rgba(14, 165, 233, 0.06)", borderRadius: "0.75rem", borderLeft: "3px solid #0ea5e9"}}>
  **¿Te quedaste con dudas?** Escríbenos a [contacto@leracom.ai](mailto:contacto@leracom.ai).
</div>

***

*Con esto dominado, el siguiente paso lógico es acelerar la creación del agente. En el próximo post te cuento cómo usar [Copilot](/blog/crear-agente-con-copilot), que es básicamente tener un asistente armando tu agente mientras tú lo supervisas.*

<div style={{marginTop: "5rem", paddingTop: "3rem", borderTop: "1px solid rgba(128, 128, 128, 0.15)"}}>
  ## Leer más del blog

  <Columns cols={3}>
    <Card title="Tu primer agente en 15 minutos" icon="user-plus" href="/blog/crear-agente-desde-cero" img="/images/blog/desde-cero/01-lista-agentes.png">
      **8 min · Julio Barrera**

      10 feb 2026
    </Card>

    <Card title="Copilot al rescate" icon="wand-magic-sparkles" href="/blog/crear-agente-con-copilot" img="/images/blog/copilot/01-panel-general.png">
      **7 min · Erika Barrera**

      24 feb 2026
    </Card>

    <Card title="Publicar tu primer agente" icon="circle-play" href="/blog/publicar-tu-primer-agente" img="/images/blog/publicar/02-versiones.png">
      **7 min · Madai Garcia**

      03 mar 2026
    </Card>
  </Columns>
</div>
