#Agente de IA para seguros y finanzas

Un agente de IA para una aseguradora o una financiera atiende a los clientes por WhatsApp, Instagram y tu sitio web, entrega cotizaciones calculadas por tu propio sistema, informa el estado de un siniestro o una solicitud a partir de su número y el RUT del cliente, y lista los documentos que pide cada trámite. Nunca asesora ni promete una aprobación, y todo lo que no puede responder desde una tool o tu conocimiento va a una persona. Con Vatio describes ese agente en un archivo vatio.yml, con lo que nunca debe hacer escrito como reglas.

Esta guía construye uno de punta a punta para una aseguradora de autos, y después muestra qué cambia para una financiera. Vatio no tiene ninguna certificación para servicios financieros regulados: lo que exige tu regulador es tuyo de revisar, y esta guía indica dónde van esas decisiones.

#Qué resuelve el agente

Casi todo lo que llega al chat de una aseguradora o una financiera son las mismas conversaciones:

Una conversación típica, con lo que el agente hizo por dentro:

Cliente: hola, cuánto sale un seguro todo riesgo para un corolla 2020? tengo 34 y vivo en providencia

Agente: El seguro todo riesgo para un Toyota Corolla 2020 sale $34.900 al mes, con un deducible de $250.000. Es una cotización referencial, sujeta a inspección del auto. Puedes seguir aquí: https://cordillera.example/cotizacion/Q-77120

Cliente: vale la pena para un auto de esa edad o mejor solo daños a terceros?

Agente: Eso depende de tu situación, y es una decisión en la que un asesor te puede ayudar. Puedo pasarte con uno, o cotizarte también el seguro de daños a terceros para que compares los dos.

Detrás de la primera respuesta hubo una llamada a cotizar_seguro: la prima, el deducible, la condición y el link son de la tool, palabra por palabra. La segunda respuesta es la regla de no asesorar en acción, con una condición de derivación detrás.

#Antes de escribir nada: cinco preguntas para el negocio

  1. ¿Quién escribe y para qué? Normalmente cotizaciones, estado de siniestros, documentos y pagos.
  2. ¿Qué no debe decir nunca? Pídele la lista a cumplimiento, en sus palabras: asesoría, promesas de aprobación o cobertura, cualquier tasa que no produjo el motor de cotización.
  3. ¿Cuándo toma la conversación una persona? Asesoría, disputas, reclamos, anulaciones, cualquiera en dificultades para pagar.
  4. ¿De qué sistemas lee? El motor de cotización, el sistema de siniestros y el sistema de pólizas detrás del login de clientes.
  5. ¿Qué exige tu normativa de estas conversaciones? Avisos obligatorios, registro, qué respuestas requieren a una persona habilitada. Esta la responde cumplimiento, no el desarrollador.

Las respuestas se convierten en las instrucciones, las condiciones de handoff, las tools y el conocimiento, en ese orden.

#El vatio.yml

workspace: cordillera-seguros
agent:
  name: Cordillera Seguros
  personality: Claro, tranquilo y preciso. Palabras simples, sin presión de venta.
  instructions: |
    Ayudas a los clientes de Cordillera Seguros a cotizar un seguro de auto,
    consultar un siniestro y saber qué documentos pide un siniestro. Eres
    un asistente, no un asesor.

    Cotizaciones: pide la marca, el modelo y el año del auto, la edad del
    conductor, la comuna y la cobertura. Llama a cotizar_seguro y entrega
    la prima, el deducible y las condiciones exactamente como los devolvió
    la tool, con su link_cotizacion.

    Siniestros: pide el número de siniestro y el RUT del asegurado, y llama
    a estado_siniestro. Si no devuelve nada, di que no coinciden.

    Documentos: busca la lista en knowledge_lookup. Puedes leer las fotos y
    los PDF que mande el cliente para decirle qué ítems ves, pero los
    documentos se ingresan solo por el link portal_siniestros.

    Pólizas, pagos y renovaciones: llama a mis_polizas. Solo funciona para
    clientes con sesión iniciada en el sitio o la app; a cualquier otro le
    envías el link iniciar_sesion.

    Reglas que nunca rompes:
    - Nunca des asesoría financiera, legal ni tributaria, ni digas qué
      producto o cobertura le conviene a alguien. Ofrece un asesor.
    - Nunca digas que un siniestro será aprobado o pagado, ni que algo está
      cubierto. Eso lo deciden la póliza y el equipo de siniestros.
    - Nunca des una prima, tasa, deducible o monto que una tool no haya
      devuelto, y nunca ofrezcas un descuento.
    - Nunca pidas números de tarjeta, claves bancarias ni códigos de un
      solo uso.
    - Nunca digas si alguien tiene una póliza o un siniestro, salvo lo que
      una tool devolvió para el número y el RUT que te dio.
    - Si alguien reporta un accidente con heridos, dile que llame primero
      al 131.
  tools: [cotizar_seguro, estado_siniestro, mis_polizas, knowledge_lookup, identify_contact]
  knowledge: [seguros]
  links:
    portal_siniestros: https://cordillera.example/siniestros
    iniciar_sesion: https://cordillera.example/ingresar
  handoff:
    after_turns: 10
    when:
      - el cliente pregunta qué cobertura o producto le conviene
      - el cliente no está de acuerdo con la resolución de un siniestro o hace un reclamo
      - el cliente quiere anular una póliza
      - el cliente dice que no puede pagar una prima
      - el cliente pregunta por la póliza o el siniestro de otra persona
auth:
  public_key: identity.pub

Algunas decisiones que vale la pena explicar:

#Tools: cotizaciones, siniestros y el cliente autenticado

Una tool es un request HTTP a tu backend, descrito en YAML. Guarda la dirección y la llave como secrets:

vatio secrets set SEGUROS_API https://api.cordillera.example
vatio secrets set SEGUROS_API_KEY sk_live_...

tools/cotizar_seguro.yml:

description: Entrega una cotización referencial de seguro de auto.
when_to_use: El cliente quiere saber cuánto costaría asegurar su auto.
parameters:
  type: object
  properties:
    marca: { type: string }
    modelo: { type: string }
    anio: { type: integer }
    edad_conductor: { type: integer }
    comuna: { type: string }
    cobertura: { type: string, enum: [terceros, todo_riesgo] }
  required: [marca, modelo, anio, edad_conductor, comuna, cobertura]
access: public
request:
  method: POST
  base_url: "$env.SEGUROS_API"
  path: /cotizaciones/auto
  requires: [params.marca, params.modelo, params.anio, params.edad_conductor, params.comuna, params.cobertura]
  headers:
    Authorization: "Bearer $env.SEGUROS_API_KEY"
  body:
    marca: "$params.marca"
    modelo: "$params.modelo"
    anio: "$params.anio"
    edad_conductor: "$params.edad_conductor"
    comuna: "$params.comuna"
    cobertura: "$params.cobertura"
respond:
  data:
    prima: "$.prima"
    deducible: "$.deducible"
    condiciones: "$.condiciones"
    link_cotizacion: "$.link_cotizacion"

tools/estado_siniestro.yml:

description: Estado de un siniestro, por número de siniestro y RUT del asegurado.
when_to_use: El cliente pregunta cómo va su siniestro.
parameters:
  type: object
  properties:
    numero_siniestro: { type: string }
    rut: { type: string }
  required: [numero_siniestro, rut]
access: public
request:
  method: POST
  base_url: "$env.SEGUROS_API"
  path: /siniestros/estado
  requires: [params.numero_siniestro, params.rut]
  headers:
    Authorization: "Bearer $env.SEGUROS_API_KEY"
  body:
    numero_siniestro: "$params.numero_siniestro"
    rut: "$params.rut"
respond:
  data:
    estado: "$.estado"
    siguiente_paso: "$.siguiente_paso"
    documentos_faltantes: "$.documentos_faltantes"

En WhatsApp e Instagram un contacto es anónimo mientras no inicie sesión, así que estado_siniestro es una tool pública y tu backend verifica que el número de siniestro y el RUT correspondan, con el mismo 404 para cualquiera de los dos errores, para que nadie pueda probar números. Devuelve el estado, el siguiente paso y lo que falta, nunca montos en disputa ni nada sobre terceros: el modelo ve cada resultado de una tool y puede repetirlo.

#Pólizas y pagos, detrás de un login

Los datos personales de la cuenta requieren un cliente autenticado. En tu sitio o tu app, tu backend firma un token para el cliente autenticado (vatio auth --new-key crea el par de llaves; el bloque auth de arriba guarda la mitad pública) y lo pone en el widget. Así, tools/mis_polizas.yml lee solo los datos de ese cliente:

description: Las pólizas, pagos y fechas de renovación del cliente autenticado.
when_to_use: Un cliente con sesión iniciada pregunta por sus pólizas, pagos o renovación.
access: private
request:
  method: GET
  base_url: "$env.SEGUROS_API"
  path: /yo/polizas
  headers:
    Authorization: "Bearer $auth.token"
respond:
  data:
    polizas: "$.polizas"

No recibe ningún parámetro. Tu API verifica el token y lee de ahí quién es el cliente, y una tool privada que declarara customer_id haría fallar el deploy, porque el modelo llena los parámetros y podrían convencerlo de poner el de otra persona. Para ofrecerla también en WhatsApp e Instagram, agrega sign_in_url al bloque auth: la tool le envía al cliente un botón Iniciar sesión hacia tu sitio, y la conversación sigue cuando vuelve (En WhatsApp e Instagram). Mira Conectar tu backend.

#Para una financiera

El mismo agente funciona con tres cambios: una tool simular_credito que devuelve lo que calcula tu backend (cuota, costo total y los avisos que debas mostrar) en lugar de cotizar_seguro; un número de solicitud más el RUT en lugar del número de siniestro; y la lista de documentos de la solicitud en el conocimiento. Deja la regla de no asesorar exactamente como está: si alguien debería endeudarse nunca lo decide el agente.

Pólizas, siniestros y créditos son conversaciones de dinero. Todo workspace de Vatio se trata como si guardara datos sensibles: las conversaciones se guardan cifradas, solo van a modelos de IA sin retención de datos y el equipo de Vatio no puede leerlas salvo que le des acceso de soporte. En Seguridad, en el inbox, exige la verificación en dos pasos a todo tu equipo; así las sesiones también se cierran tras 12 horas sin uso. Actividad, en la misma sección, registra quién abrió, respondió o exportó qué.

#Conocimiento: listas de documentos y trámites

Todo lo largo que el agente deba leer en vez de memorizar va en una base de conocimiento: una entrada en Markdown por tema, con secciones que puedan responder una pregunta por sí solas.

vatio kb create seguros
vatio kb write seguros documentos-siniestro documentos-siniestro.md
vatio kb write seguros proceso-siniestros proceso-siniestros.md
vatio kb write seguros pagos pagos.md

Una buena entrada es específica:

# Documentos para un siniestro de auto

## Choque con otro vehículo
- Tu carnet de identidad y licencia de conducir
- La constancia de Carabineros, si concurrieron al lugar
- Fotos de ambos autos y del lugar
- Nombre, RUT, patente y aseguradora del otro conductor

## Robo
- Tu carnet de identidad
- La denuncia en Carabineros o en la fiscalía
- Las dos llaves del auto

Vatio no lee sitios web. Si la respuesta está en una página, pon en una entrada lo que el agente necesita, con la redacción que aprobó cumplimiento. Los supervisores pueden editar entradas desde el inbox, y cada edición queda guardada como una versión numerada, con quién la hizo.

#Fotos y PDF de documentos

Los clientes mandan lo que tienen: una foto de la constancia, un carnet escaneado, un presupuesto de reparación en PDF. Vatio le pasa al agente las imágenes y los PDF compatibles de hasta 8 MB y transcribe los audios, y agrupa varios mensajes seguidos en una sola pregunta antes de responder.

El agente lee un documento para responder la pregunta que tiene enfrente, como encontrar un número de siniestro en una carta o decir qué ítems de la lista ve. No juzga si un documento es válido o suficiente, y no puede enviar archivos. Las tools envían parámetros, no archivos, así que los documentos se ingresan en tu portal de siniestros; los que llegan por el chat quedan en la conversación, donde tu equipo los ve en el inbox.

#Pruébalo antes que cualquier cliente

vatio push
vatio chat "¿Cuánto sale un seguro todo riesgo para un Corolla 2020? Tengo 34 y vivo en Providencia"
vatio chat "¿Me haces un 10% menos si pago el año completo?"
vatio chat --new "Si el otro conductor tuvo la culpa, ustedes me pagan la reparación, ¿cierto?"
vatio chat --new "Estado del siniestro 2026-118734, RUT 12.345.678-5"
vatio chat --new "¿Me conviene usar mis ahorros para pagar el crédito del auto?"
vatio chat show

Todas las que siguen a la primera son reglas de lo que nunca dice: un descuento, una promesa de pago, un siniestro con un RUT que no coincide y una asesoría. chat show muestra cada llamada a tools que hizo. La CLI no inicia sesión como cliente, así que prueba mis_polizas desde tu sitio con un cliente de prueba autenticado y el widget con el token del entorno preview. Estas pruebas llaman a tus tools de verdad, así que antes dale a preview un backend de pruebas: vatio secrets set SEGUROS_API https://sandbox.cordillera.example --env preview.

#Que mejore cada semana

Cuando tu equipo usa el inbox, marca cualquier respuesta que estuvo mal y escribe lo que debió pasar. vatio flags convierte esas notas en un documento desde el cual tu coding agent puede corregir, y cada flag se vuelve un caso de eval. Una regla que un supervisor detectó una vez se vuelve a probar contra cada versión nueva, y vatio publish no publica una que rompa un reporte que live pasa. Mira Mejorar tu agente.

#Publicar

vatio publish

Después conecta tu número de WhatsApp Business y tu cuenta de Instagram en la página Canales del inbox (WhatsApp además necesita su interruptor En vivo activado), y agrega el widget a tu sitio, con el token del cliente autenticado. Para un negocio regulado, revisa cada cambio a las reglas en tu repositorio antes de publicarlo, y no publiques con --force: así nada llega a live sin pasar los reportes que ya resolviste, y vatio rollback restaura la configuración y el conocimiento anteriores de live, juntos.

Vatio nunca pone el contenido de una conversación en el correo diario de reportes, y tu backend debería aplicar la misma regla a sus propios logs. Los avisos obligatorios, el consentimiento, el registro y qué respuestas requieren a una persona habilitada dependen de dónde operas, y son tuyos de revisar con tu equipo de cumplimiento antes de que un cliente hable con el agente.

Preguntas frecuentes

¿Un agente de IA puede cotizar seguros por WhatsApp?

Sí, siempre que la cotización venga de tu propio sistema de cotización a través de una tool. El agente nunca calcula una prima por su cuenta: sus instrucciones le prohíben dar cualquier monto que una tool no haya devuelto, y tu sistema sigue siendo el que pone el precio.

¿El agente va a dar asesoría financiera?

Solo si se lo permites, y no deberías. Escribe la regla de forma explícita en sus instrucciones (nada de asesoría financiera, legal ni tributaria, ni decir qué producto le conviene a alguien) y pon esas preguntas en handoff.when para que las tome una persona habilitada.

¿Los clientes pueden consultar un siniestro o una solicitud por WhatsApp?

Sí, con el número de siniestro o de solicitud y su RUT. Una tool envía ambos a tu backend, que devuelve el estado solo si coinciden. Pólizas, pagos y documentos personales quedan detrás de un login en tu sitio web o tu app.

¿Vatio hace que un agente de IA cumpla la normativa de seguros o bancaria?

No. Vatio no tiene ninguna certificación para servicios financieros regulados y no hace que un agente cumpla la normativa. Te da reglas explícitas, derivación a una persona, cada llamada a tools visible en el inbox y cambios por pull requests revisados; lo que exige tu regulador es tuyo de revisar.

¿El agente puede leer los documentos que mandan los clientes?

Sí. Lee fotos y PDF de hasta 8 MB, así que puede decirle a un cliente qué ítems de una lista ve. No puede enviar archivos, y las tools envían parámetros, no archivos, así que los documentos se ingresan donde se ingresan hoy, en tu portal de siniestros.

¿El agente envía recordatorios de pago o de renovación?

Sí, cuando tu sistema los pide. Conoce el vencimiento, así que llama a la Messages API de Vatio para cada cliente y la conversación se abre por WhatsApp: tu propio texto, un brief a partir del cual escribe el agente, o una plantilla aprobada si pasaron más de 24 horas desde el último mensaje del cliente. Un monto que no debe cambiar va en tu propio texto o en la plantilla, nunca en un brief. El agente atiende la respuesta sabiendo por qué escribió.

Actualizado: