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

# Mejores prácticas

> Patrones que hacen que los flows sean confiables en producción

## Etiqueta como si escribieras descripciones de herramientas

Como las etiquetas de los bordes se convierten literalmente en descripciones de herramientas para el LLM, escríbelas como **condiciones desde la perspectiva de quien llama**:

* ✅ `caller confirms they are an existing customer`
* ✅ `caller wants to cancel or reschedule`
* ❌ `yes`, `path A`, `continue`

Haz que las etiquetas hermanas sean **mutuamente excluyentes** y cubran los casos realistas. Si dos etiquetas se superponen, el enrutamiento se convierte en un lanzamiento de moneda.

## Mantén los agentes pequeños y con un solo propósito

Un agente = una tarea (calificar, responder preguntas de facturación, reservar). Las instrucciones breves y enfocadas por agente superan a un mega-agente con un muro de texto. Los traspasos son baratos: úsalos.

## Valida los datos con nodos `collect`, no con prompts

Los correos electrónicos y números de teléfono transcritos a partir de voz son ruidosos. Los nodos `collect` confirman y validan ("¿Eso fue m-e-y-e-r?") y solo continúan si tienen éxito. Nombra siempre la **variable** con claridad (`callback_phone`, no `var1`): esos nombres aparecen en los webhooks y en los detalles de la llamada.

## Diseña las rutas de fallo

* Dale a los nodos `collect` un borde `failed` que lleve a algo sensato (una transferencia a una persona o una despedida cortés).
* Configura el `fallback` de la transferencia cálida de forma deliberada: `continue` para traspasos opcionales, `cold_transfer` cuando quien llama *debe* comunicarse con alguien.
* Termina cada rama con un nodo `end` con una despedida adecuada.

## Prueba con llamadas web y observa los eventos

Ejecuta [llamadas de prueba desde el navegador](/quickstart#2-test-it-with-a-web-call) después de cada cambio. En la vista de detalle de la llamada, el registro de eventos muestra las transiciones de nodos, las llamadas a herramientas, los resultados de recopilación y los resultados de las transferencias: léelo como un stack trace cuando el flow se comporte mal.

## Usa herramientas asíncronas para todo lo que tarde más de \~2 segundos

Las llamadas a herramientas síncronas congelan la conversación. Marca los webhooks lentos como `async` y configura frases de relleno; el asistente se mantiene receptivo mientras se ejecuta la solicitud. Consulta el [nodo de herramienta](/flow-builder/nodes#tool).

## Empieza por el prompt y evoluciona hacia el flow

Prototipa el comportamiento primero con un simple [prompt del sistema](/assistants/overview). Cuando la llamada desarrolle fases distintas o necesite una captura de datos garantizada, traslada esa estructura a un flow: los nodos de agente con instrucciones vacías heredan el prompt del sistema, así que la migración es incremental.
