Desde la voz del cliente hasta la respuesta del agente, en ~1.5 segundos.
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 2.5
Flash Lite"]
TTS["🔊 Flash v2.5
/ V3 Conversational"]
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
Desde Argentina hacia el worker. Desde ElevenLabs (US) es incluso más bajo.
4 agentes consumen RAG puro, 3 agentes hacen llamadas a APIs reales del backend.
| # | 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 | RAG | Warranty_TOYOTA10.md |
| 5 | TDB Case Status | API | /tools/salesforce/case_status |
| 6 | TASA Connected | RAG | Connected_Services_ARG.md |
| 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 RealtimeGemini 2.5 Flash Lite · temp 0.3 · tokens 180-260Flash v2.5 + voz MelanieV3 Conversational + voz FernandaHono 4X-PoC-Tokenintfloat/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