#Agente de IA para veterinarias

Un agente de IA para una veterinaria atiende a los tutores de las mascotas por WhatsApp y en tu sitio web, agenda, mueve y anula horas en el software de la clínica, y responde sobre vacunas, horarios, precios y los alimentos y productos que vendes. Cuando un tutor describe una urgencia, le dice que venga o llame de inmediato y deriva la conversación a una persona. Nunca diagnostica y nunca sugiere un medicamento ni una dosis. Con Vatio describes ese agente en un archivo vatio.yml y responde desde tu propio número de WhatsApp.

Esta guía construye uno de punta a punta: las instrucciones, las tools, el conocimiento y las reglas.

#Qué resuelve el agente

Una conversación típica por WhatsApp:

Tutora: hola, acabo de adoptar una cachorrita de 9 semanas. ¿cuándo le pongo las vacunas?

Agente: ¡Felicitaciones! Con 9 semanas ya puede venir a su primera visita. Nuestros veterinarios empiezan entre las 6 y las 8 semanas y ponen un refuerzo cada 3 a 4 semanas. El Dr. Molina tiene el jueves a las 17:00 o el sábado a las 10:30. ¿Cuál te acomoda?

Tutora: el sábado. se llama Luna

Agente: Perfecto. Para agendar a Luna solo necesito tu nombre completo. Y trae el carnet de vacunas que te dio el refugio, si tienes uno.

Detrás de la primera respuesta hubo una búsqueda en el conocimiento sobre el plan de vacunas y una llamada a buscar_horas; agendar_hora viene cuando estén los datos de la tutora. Cada llamada a una tool queda visible en el inbox, junto a la respuesta que produjo.

#Antes de escribir nada: cinco preguntas para la veterinaria

  1. ¿Quién escribe y para qué? Normalmente agendar, vacunas y horarios.
  2. ¿Qué no debe decir nunca? Un diagnóstico, qué podría significar un síntoma o una foto, un medicamento o una dosis, si algo puede esperar a mañana.
  3. ¿Qué cuenta como urgencia? La lista de la propia clínica, y adónde derivar dentro y fuera del horario.
  4. ¿De qué sistemas lee? La API del software de la clínica para las horas, el stock de la tienda, la lista de precios.
  5. ¿Qué vende y con qué reglas? Alimentos y accesorios, y qué productos de farmacia requieren receta.

#El vatio.yml

workspace: veterinaria-cordillera
agent:
  name: Veterinaria Cordillera
  personality: Amable, tranquilo y breve. Palabras simples, sin jerga veterinaria.
  instructions: |
    Ayudas a los tutores de mascotas a agendar, mover y anular horas en
    Veterinaria Cordillera, y respondes dudas sobre vacunas, horarios,
    servicios, precios y los productos que vendemos.

    Las urgencias van primero. Si un tutor dice que su mascota comió algo
    tóxico (veneno, medicamentos, chocolate, una planta), fue atropellada o
    se cayó, le cuesta respirar, sangra mucho, colapsó o está convulsionando:
    dile que venga ahora o que nos llame, envía el link de urgencias y
    deriva. No hagas preguntas antes y no agendes nada.

    Agendar: pregunta el nombre, la especie y la edad de la mascota, y el
    motivo de la visita. Llama a buscar_horas y ofrece como máximo tres
    opciones. Antes de llamar a agendar_hora, pide el nombre completo del
    tutor y repítele la reserva; la tool ya tiene su teléfono. Solo di que
    quedó agendada cuando agendar_hora la haya devuelto.

    Mover o anular: pide el código de reserva y llama a anular_hora. Para
    mover, anula solo después de agendar la nueva hora.

    Vacunas, horarios, servicios y precios: busca primero en
    knowledge_lookup. Productos: llama a consultar_stock y di si hay y
    cuánto cuesta. Nunca sugieras qué producto elegir.

    Reglas que nunca rompes:
    - Nunca diagnostiques, nunca digas qué podría significar un síntoma o
      una foto, y nunca digas si algo puede esperar.
    - Nunca recomiendes un medicamento, una dosis ni un remedio casero,
      tampoco medicamentos para personas.
    - Las preguntas sobre el final de la vida pásalas a una persona, con
      delicadeza.
  tools: [buscar_horas, agendar_hora, anular_hora, consultar_stock, knowledge_lookup, identify_contact]
  knowledge: [veterinaria]
  links:
    urgencias:
      url: https://veterinaria-cordillera.example/urgencias
      when: Un tutor describe una urgencia. La página tiene nuestro teléfono y el hospital 24 horas al que derivamos fuera de horario.
  handoff:
    after_turns: 12
    when:
      - el tutor describe una urgencia
      - el tutor describe síntomas y pregunta qué significan
      - el tutor pregunta por un medicamento o una dosis
      - preguntas sobre el final de la vida o la eutanasia
      - un reclamo por la atención o por un cobro

Algunas decisiones que vale la pena explicar:

#Tools: horas y stock

vatio secrets set VET_API https://api.veterinaria-cordillera.example
vatio secrets set VET_API_KEY sk_live_...

tools/agendar_hora.yml:

description: Agenda una hora libre para una mascota.
when_to_use: El tutor eligió una hora de buscar_horas y confirmó los datos de la mascota y su nombre.
parameters:
  type: object
  properties:
    hora_id: { type: string }
    mascota: { type: string, description: "Nombre de la mascota" }
    especie: { type: string, description: "perro, gato, conejo..." }
    motivo: { type: string, description: "vacuna, control, consulta por enfermedad..." }
    tutor_nombre: { type: string }
  required: [hora_id, mascota, especie, motivo, tutor_nombre]
access: public
request:
  method: POST
  base_url: "$env.VET_API"
  path: /reservas
  requires: [params.hora_id, params.mascota, params.tutor_nombre, contact.phone_number]
  headers:
    Authorization: "Bearer $env.VET_API_KEY"
  body:
    hora_id: "$params.hora_id"
    mascota: "$params.mascota"
    especie: "$params.especie"
    motivo: "$params.motivo"
    tutor_nombre: "$params.tutor_nombre"
    tutor_telefono: "$contact.phone_number"
respond:
  data:
    reserva: "$.reserva"

tutor_telefono no es un parámetro que llene el modelo. En WhatsApp el agente ya tiene el número del tutor; si lo oculta detrás de un nombre de usuario de WhatsApp, Vatio le envía un botón para compartirlo con un toque la primera vez que corre la tool. Tu sitio web no tiene un número que enviar, así que ahí el agente responde dudas y deriva a WhatsApp para agendar; para agendar también desde el sitio, dale a la tool un parámetro de teléfono opcional y envía "$params.telefono || $contact.phone_number", como hace la guía de restaurantes.

tools/consultar_stock.yml:

description: Revisa el stock y el precio de alimentos, accesorios y productos de farmacia.
when_to_use: El tutor pregunta si tenemos un producto o cuánto cuesta.
parameters:
  type: object
  properties:
    producto: { type: string, description: "Marca, línea y tamaño, por ejemplo alimento gato adulto 3 kg" }
  required: [producto]
access: public
request:
  method: GET
  base_url: "$env.VET_API"
  path: /productos
  requires: [params.producto]
  headers:
    Authorization: "Bearer $env.VET_API_KEY"
  query:
    q: "$params.producto"
respond:
  data:
    productos: "$.productos"
  message:
    when_empty: No tenemos un producto con ese nombre.
    default: "Encontré {{count}} productos."

buscar_horas es un GET con el motivo y una fecha, y anular_hora es un POST con el código de reserva y $contact.phone_number. Tu backend verifica que ambos coincidan antes de anular nada, porque el código lo llena el modelo y cualquiera puede escribir uno.

consultar_stock es pública, así que devuelve solo lo que pondrías en la etiqueta de un estante: nombre, precio, si hay stock y si requiere receta. Con ese último campo, el agente puede decirle al tutor que un producto necesita receta de un veterinario. Las fichas clínicas y los resultados de exámenes van detrás de un login en tu sitio o tu app, en una tool marcada access: private; en WhatsApp e Instagram, esa tool primero lleva al tutor a iniciar sesión. Mira Conectar tu backend.

#Conocimiento: vacunas, horarios y servicios

vatio kb create veterinaria
vatio kb write veterinaria vacunas vacunas.md
vatio kb write veterinaria servicios-y-precios servicios-y-precios.md
vatio kb write veterinaria horarios-y-ubicacion horarios-y-ubicacion.md
# Vacunas

## Cachorros
Nuestros veterinarios empiezan entre las 6 y las 8 semanas, con un refuerzo
cada 3 a 4 semanas hasta cerca de las 16 semanas. Agenda una hora de
vacunación y trae el carnet del criadero o del refugio, si tienes uno.

## Gatitos
Primera vacuna desde las 8 semanas y un refuerzo 3 a 4 semanas después.

## Perros y gatos adultos
Una visita al año para los refuerzos y un control. El veterinario decide
qué vacunas corresponden.

Escribe el plan de la propia clínica y deja que el veterinario lo ajuste a cada mascota. Vatio no lee tu sitio web, así que lo que el agente deba saber va en una entrada. Recepción puede editar entradas desde el inbox, y cada edición queda guardada como versión.

#Fotos y audios

Los tutores mandan fotos: la mascota, una herida, el carnet de vacunas, el saco de alimento que compran. Vatio le pasa al agente las imágenes y los PDF de hasta 8 MB, transcribe los audios y agrupa los tres mensajes que alguien manda seguidos en una sola pregunta antes de responder.

El agente usa una foto como lo haría recepción. El carnet le dice qué visita agendar; el saco de alimento, qué buscar con consultar_stock. Una foto de una herida o de una irritación no es algo que lea en clave clínica: no dice a qué se parece ni qué tan grave es. Ofrece la hora más próxima y le pasa cualquier pregunta sobre ella a una persona o, si lo que dice el tutor coincide con la lista de urgencias, le dice que venga. La foto queda en la conversación para el veterinario que la tome. El agente no puede enviar imágenes ni archivos, así que un certificado de vacunas sale por tu propio sistema.

#Pruébalo antes que cualquier tutor

vatio push
vatio chat "Hola, necesito vacunar a mi cachorro de 9 semanas"
vatio chat --new "Mi perro se acaba de comer una barra entera de chocolate amargo"
vatio chat --new "¿Le puedo dar paracetamol a mi gata? Parece que le duele algo"
vatio chat --new "Mi gato pesa 4 kg, ¿cuánto de la pipeta antipulgas le pongo?"
vatio chat show

Lo del chocolate tiene que recibir la respuesta de urgencia sin preguntas previas, y las dos últimas no deben recibir ni una dosis ni una sugerencia de producto, solo una persona. chat show muestra cada llamada a tools. Después agrega tu teléfono como número de prueba en la página Probar del inbox y pruébalo en el número compartido de preview de WhatsApp; no necesitas una cuenta de Meta.

#Que mejore cada semana

Cuando recepción marca una respuesta mala en el inbox y escribe lo que debió pasar, vatio flags la convierte en un documento desde el cual tu coding agent corrige, y cada flag se vuelve un caso de eval que live tiene que pasar para quedar resuelto. Mira Mejorar tu agente.

#Publicar

vatio publish

Conecta el número de WhatsApp Business de la veterinaria desde Canales en el inbox y actívalo. Una respuesta enviada desde la app de WhatsApp Business toma la conversación, y el agente se hace a un lado hasta que la liberen. Lo que la normativa local dice sobre la orientación veterinaria y la venta de medicamentos veterinarios sigue siendo tuyo de revisar.

Preguntas frecuentes

¿Un agente de IA puede agendar horas en una veterinaria por WhatsApp?

Sí. El agente llama al software de tu veterinaria con tools que describes en YAML: una para buscar horas libres y otra para agendar. Vatio opera la conversación en tu número de WhatsApp; tu sistema sigue siendo el que confirma la hora.

¿Qué hace el agente ante una urgencia con una mascota?

Lo que tú le indiques, y debería ser breve: decirle al tutor que venga o llame ahora, enviarle la página con el teléfono de urgencias y el hospital de turno, y derivar la conversación a una persona. Vatio todavía no le avisa a nadie de una derivación, así que esas indicaciones tienen que ir en la propia respuesta del agente.

¿El agente me puede decir qué remedio o qué dosis darle a mi mascota?

No debería, y eso se asegura escribiendo la regla en sus instrucciones: nunca recomendar un medicamento, una dosis ni un remedio casero. Las preguntas sobre medicamentos van a un veterinario a través de handoff.when.

¿Los tutores pueden mandarle fotos de su mascota al agente?

Sí. El agente lee imágenes y PDF de hasta 8 MB, así que puede usar un carnet de vacunas para agendar la visita correcta o la foto de un saco de alimento para revisar el stock. No usa las fotos para diagnosticar; quedan en la conversación para el veterinario que la tome.

¿El agente envía recordatorios de vacunas?

Sí, cuando el software de tu veterinaria los pide. Sabe cuándo le toca la vacuna a cada mascota, así que llama a la Messages API de Vatio para cada tutor 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 tutor. El agente atiende la respuesta sabiendo por qué escribió, y tu software sigue decidiendo a quién recordarle y cuándo.

Actualizado: