De la voz del cliente a la respuesta del agente, en ~3 segundos. Stack 100% managed en ElevenAgents + Cloudflare Workers.
Todo el procesamiento de voz vive en ElevenAgents. Los tools (verde) llaman al backend propio hosteado en Cloudflare Workers. Las consultas a documentos (azul) usan el RAG nativo de ElevenLabs con embeddings multilingual.
flowchart TD
Cliente["🧑 Cliente
voz · es-AR / pt-BR"]
Widget["🌐 Widget web
Cloudflare Pages"]
EL["🤖 ElevenAgents
servidor US"]
ASR["📝 Scribe v2
Realtime ASR"]
LLM["🧠 Gemini 3 Flash
+ cascade 2.0/2.5 · Haiku 4.5"]
TTS["🔊 Flash v2.5 · es-AR
V3 Conversational · pt-BR"]
Worker["⚡ Cloudflare Worker
poc-toyota-tools"]
Data[("💾 JSONs bundleados
Salesforce · TPA · Kinto")]
KB[("📚 Knowledge Base
multilingual e5-large")]
Cliente <--> Widget
Widget <--> EL
EL --> ASR
ASR --> LLM
LLM --> TTS
TTS --> EL
LLM -.->|tool call
<200 ms| Worker
Worker --> Data
LLM -.->|RAG retrieval| KB
classDef voice fill:#fce8ea,stroke:#EB0A1E,color:#000
classDef agent fill:#e4f0ff,stroke:#0b5ed7,color:#000
classDef tool fill:#e9f7e9,stroke:#22803b,color:#000
classDef data fill:#fff8e1,stroke:#b36b0a,color:#000
class Cliente,Widget,ASR,TTS voice
class EL,LLM agent
class Worker tool
class Data,KB data
Números medidos en conversaciones reales del PoC (ES-AR y PT-BR). Worker en Cloudflare edge. LLM primary: gemini-3-flash-preview con cascade a gemini-2.0-flash → gemini-2.5-flash → claude-haiku-4-5 (cascade timeout 5 s). TTS eleven_flash_v2_5 en es-AR · eleven_v3_conversational en pt-BR.
Dónde se va el tiempo en un turn con tool: ASR (~200–400 ms) + LLM generation (~2–4 s) + tool execution (~150 ms) + TTS TTFB (~75 ms). El LLM domina el presupuesto — optimizaciones futuras apuntan ahí (prompt más corto, modelo más rápido, o RAG para reducir contexto).
2 agentes consumen RAG puro, 2 combinan RAG + API, 3 son transaccionales (API pura). 7 endpoints expuestos.
| # | Agente | Fuente de datos | Endpoint / KB |
|---|---|---|---|
| 1 | TASA Service 90k | RAG | Service_Plan_ARG.md |
| 2 | TASA Kinto Rental | API | /tools/kinto/availability |
| 3 | TASA TPA Voucher | API · 2 | /tools/tpa/account + send_voucher |
| 4 | TDB Warranty T10 | RAGAPI | Warranty_TOYOTA10.md + /tools/warranty/by_vin |
| 5 | TDB Case Status | API | /tools/salesforce/case_status |
| 6 | TASA Connected | RAGAPI | Connected_Services_ARG.md + /tools/connected/lookup_vehicle_by_plate |
| 7 | TDB Manual Lexus | RAG grande | PDF UX300h MY25 · 500+ págs |
Ejemplo del agente más complejo del PoC — TPA Voucher — con 2 tools encadenadas y lógica de branching según situación del plan.
sequenceDiagram
participant C as Cliente
participant E as ElevenAgents
participant W as CF Worker
participant D as Data JSON
C->>E: "Necesito cupón, DNI 24916694"
E->>W: POST /tools/tpa/account
{ dni: "24916694" }
W->>D: lookup
D-->>W: Gabriel Romay · NORMAL-PRENDARIO · Yaris
W-->>E: { recomendacion: "emitir_cupon", email }
alt recomendacion = emitir_cupon
E->>C: "Confirme email XXXX@PRUEBA.COM.AR"
C->>E: "Sí, correcto"
E->>W: POST /tools/tpa/send_voucher
{ grupo, orden, email }
W-->>E: { sent: true }
E->>C: "Cupón enviado. Medios: PMC, Link, Mercado Pago..."
else recomendacion = derivar_autogestion
E->>C: "Cuenta con 4+ cuotas en mora. Use Portal de Autogestión..."
else recomendacion = derivar_humano
E->>C: "Cuenta en situación CANCELADOS. Le transfiero a un operador."
end
Scribe v2 Realtime (quality high, keywords por agente)gemini-3-flash-preview · temp 0.3 · max 400 tokens · thinking 0gemini-2.0-flash → gemini-2.5-flash → claude-haiku-4-5 · cascade timeout 5 seleven_flash_v2_5 + voz Melanie · speed 1.1 · stability 0.5eleven_v3_conversational + voz Fernandaoptimize_streaming_latency=3eager + speculative_turn ON en los 7 agentesHono 4X-PoC-Token en tools · rutas públicas /, /health, /warmupconnected/lookup_vehicle_by_plateGET /warmup despacha in-process los 5 tools con payload válidointfloat/multilingual-e5-large-instructpoc-toyota-demo.pages.dev@elevenlabs/convai-widget-embed
flowchart LR
subgraph Ingesta["📥 Ingesta (offline)"]
XLS[".xlsx
Salesforce"]
CSV[".csv"]
PDF[".pdf
Manual Lexus"]
DOC[".docx
Scripts"]
end
subgraph Procesamiento["🔧 Procesamiento"]
PY["Python
openpyxl + csv"]
MD["Markdown
normalizado"]
JSON["JSON
slim"]
end
subgraph Runtime["🚀 Runtime"]
KB["ElevenLabs KB
Multilingual"]
WRKR["Worker
bundleado"]
end
XLS --> PY --> JSON --> WRKR
CSV --> PY
PDF --> KB
DOC --> MD --> KB
gemini-3-flash-preview (preview, más rápido); si falla en 5 s cae a gemini-2.0-flash → gemini-2.5-flash → claude-haiku-4-5. Elimina outliers de latencia sin perder speed típica.