Ir al contenido

Casos de uso y workflows

AgenteProductoStatusWorkflows típicos
SalesAgentemahealth.ioGAQ&A productos, capturar lead via tool, derivar a cal.com
SupportAgentemaclinicGAResumen clínico, verificar medicamentos, GES, búsqueda de pacientes, agenda, alertas
AnalyticsAgentemavaultGAMRR/EBITDA/runway, pipeline, horas equipo, obligaciones, editorial
LabAssistantAgentemalabalphaConversaciones contestadas con system prompt, sin tools (Wave 5+)
PathologyAgentemapathplannedWave 6: CAP synoptic + ICD-O-3
WellnessCoachemawellnot implementedRetorna 501 hasta Wave 5+

Workflow 1 — SalesAgent con captura de lead (Wave 3)

Sección titulada «Workflow 1 — SalesAgent con captura de lead (Wave 3)»

Wave 3 le dio al SalesAgent una tool: cuando un visitante deja su email en la conversación, el agente puede invocar create_or_update_lead que upsertea en emavault.leads.

No

Abrir bubble del chat

en emahealth.io

SalesAgent saluda

Conversación · Q&A productos

¿Visitante deja

su email?

Derivar a cal.com

30 min discovery

create_or_update_lead

emavault.leads

upsert por email

emavault.lead_activities

insert non-fatal

Respuesta + leadId

en agentResponse

Visitante decide

Comportamiento:

  • Match por contact_email case-sensitive (F010).
  • source default = emi_chat si no se especifica (F011).
  • lead_activities insert es non-fatal — si falla, el lead_id ya creado se devuelve (F012).
  • El leadId viaja en la respuesta del agente para que el widget pueda mostrar confirmación al visitante.

Workflow 2 — SupportAgent (asistente clínico)

Sección titulada «Workflow 2 — SupportAgent (asistente clínico)»

11 tools FHIR sobre Aidbox, scope-adas por tenant con credenciales encriptadas (Wave 3). Lo crítico es cómo el agente decide qué tool invocar y cómo se resuelve el tenant.

Buscar persona

Resumen clínico

Agenda

Alertas

Criterios GES

Otras 6 tools

Sí · max 5 iter

No

Abrir EmiDrawer

en emaclinic

Profesional escribe

pregunta operacional

Resolver credenciales

Aidbox del tenant

cache 5 min

¿Qué tool aplica?

search_patients

get_patient_summary

list_appointments

list_alerts

evaluate_ges

...

Aidbox

Organization id /fhir/...

Tool result

¿Necesita

más datos?

Respuesta al profesional

Workflow 3 — AnalyticsAgent (asistente operacional)

Sección titulada «Workflow 3 — AnalyticsAgent (asistente operacional)»

6 tools sobre Supabase emahub. Mismo patrón de tool loop.

AnalyticsAgentCFOSistemaTool
Pregunta
Pregunta
CFO
Abrir EmiDrawer en emavault
Abrir EmiDrawer en emavault
CFO
"¿Cómo va el MRR este mes?"
"¿Cómo va el MRR este mes?"
Tool selection
Tool selection
AnalyticsAgent
Agente elige tool
Agente elige tool
Tool
get_finance_summary
get_finance_summary
Datos
Datos
Sistema
Query Supabase emahub
Query Supabase emahub
Tool
MRR + tendencia + delta
MRR + tendencia + delta
Respuesta
Respuesta
AnalyticsAgent
Formato narrativo + cifras
Formato narrativo + cifras
CFO
CFO comparte con equipo
CFO comparte con equipo
CFO consulta operación

Workflow 4 — LabAssistant / Pathology / Wellness

Sección titulada «Workflow 4 — LabAssistant / Pathology / Wellness»

Estos agentes están instanciados pero sin tools (F013). Sus system prompts indican honestamente qué pueden y qué no:

AgentComportamiento actual
lab_assistantResponde como asistente conversacional sin acceso a datos. Avisa al profesional que las tools (validación Valab, abnormal explainer) llegan en Wave 5+.
pathology_assistantIgual, pero pone fecha objetivo en Wave 6.
wellness_coachEl endpoint retorna 501 Not Implemented antes de invocar Claude.

Esto permite que emalab y emapath ya tengan EmiDrawer integrado y una experiencia base, sin esperar a Wave 5+ para los tools.

Una request pasa por dos puertas antes de llegar al agente:

No

No

No

POST /api/chat

¿API key

válida?

401

¿tenant tiene row

en tenant_emi_access

activa?

403 · sin acceso

¿hoy <= límite

diario?

403 · rate limited

Audit pre-run

Invocar agente

tenant_emi_access la administra Vault (Wave 4 le agrega UI).

La selección no es manual — la determina la API key con la que el producto cliente firma la request. 6 API keys, 6 agentes, mapeo 1:1.

Authorization: Bearer EMAHEALTH_API_KEY → SalesAgent
Authorization: Bearer EMACLINIC_API_KEY → SupportAgent
Authorization: Bearer EMALAB_API_KEY → LabAssistantAgent
Authorization: Bearer EMAVAULT_API_KEY → AnalyticsAgent
Authorization: Bearer EMAPATH_API_KEY → PathologyAgent
Authorization: Bearer EMAWELL_API_KEY → WellnessCoach (501)

EMA Emi es stateless: el cliente envía el historial completo en cada request. La política recomendada es:

  • Sin límite hard de turns. El widget puede tener su propio límite visual.
  • Reset al cerrar. Si el usuario cierra el chat y lo vuelve a abrir, empieza una conversación nueva.

Cuando el modelo necesita información del lado del cliente que no llegó en la request, puede pedirlo explícitamente al usuario en lugar de asumir.