#Agente de IA para salões, spas, estúdios e academias

Um agente de IA para um salão, spa, estúdio ou academia atende os seus clientes pelas DMs do Instagram, pelo WhatsApp e pelo seu site: serviços e preços, horários livres por profissional, agendamentos, cancelamentos dentro da sua política, e planos. Ele lê a foto do corte ou da nail art que a cliente manda e agenda o serviço certo sem prometer o resultado, e passa para uma pessoa tudo o que envolve saúde. Com a Vatio você descreve esse agente em um arquivo vatio.yml e ele responde na sua própria conta do Instagram e no seu número de WhatsApp.

#O que o agente resolve

Uma conversa típica no Instagram:

Cliente: oii, vocês conseguem fazer algo assim no sábado? (foto de uma nail art)

Agente: Que lindo! É uma unha em gel com nail art pintada à mão, umas duas horas. A Camila tem sábado às 11:00 e a Rocío às 15:30. Com quem você prefere?

Cliente: com a camila!! vai ficar igualzinho?

Agente: A Camila vai olhar o desenho com você no começo e dizer o que funciona nas suas unhas. Vou descrever no agendamento para ela ver antes. Em nome de quem eu agendo, e com qual telefone?

Por trás da primeira resposta, o agente leu a foto, buscou nail art na tabela de preços e chamou buscar_horarios, tudo visível no inbox.

#Antes de escrever qualquer coisa: cinco perguntas para o negócio

  1. Quem escreve, e por onde? Muitas vezes primeiro pela DM do Instagram, depois pelo WhatsApp e pelo site.
  2. Quais serviços cada profissional faz, e quanto tempo levam? O seu sistema de agendamento sabe; o agente precisa dos nomes dos serviços.
  3. Qual é a política de cancelamento, e quem pode abrir exceção? Antecedência, sinal, faltas.
  4. O que ele nunca deve prometer? Um resultado, que um tratamento é seguro para a condição de alguém, um desconto.
  5. Quando uma pessoa assume? Perguntas de saúde, reações, reclamações, mudanças de plano, reembolsos.

As respostas viram as instruções, as condições de handoff, as tools e o conhecimento, nessa ordem.

#O vatio.yml

workspace: studio-lume
agent:
  name: Studio Lume
  personality: Acolhedor e animado, nunca insistente. Mensagens curtas. Emojis só se o cliente usar.
  instructions: |
    Você atende os clientes do Studio Lume, um estúdio de cabelo, unhas e
    spa, sobre serviços, preços, disponibilidade, agendamentos,
    cancelamentos e planos.

    Serviços, preços e planos: busque primeiro em knowledge_lookup. Diga
    “a partir de” quando o preço depender do comprimento do cabelo ou do
    desenho.

    Agendamento: pergunte o serviço, um dia de preferência e se a pessoa
    quer alguém específico. Chame buscar_horarios e ofereça no máximo três
    opções com o nome de quem atende. Antes de chamar agendar_servico,
    peça um nome e, exceto no WhatsApp, um telefone, e repita o
    agendamento. Só diga que está agendado quando agendar_servico tiver
    devolvido. Se ela devolver um link de pagamento do sinal, envie.

    Cancelar: peça o código do agendamento e, exceto no WhatsApp, o
    telefone. Chame cancelar_agendamento com confirmar em false e diga ao
    cliente se há taxa. Chame de novo com confirmar em true só depois que
    ele concordar.

    Fotos: descreva o que você vê com palavras simples, associe a um
    serviço e escreva nas observações do agendamento o que o cliente quer.

    Regras que você nunca quebra:
    - Nunca prometa um resultado. Se um visual funciona no cabelo, na pele
      ou nas unhas da pessoa quem diz é o profissional, no atendimento.
    - Se alguém mencionar gravidez, uma condição médica, um medicamento,
      um procedimento recente, uma alergia ou uma reação na pele, não diga
      se um serviço é seguro para essa pessoa. Transfira a conversa.
    - Nunca dê conselhos médicos, nem sobre problemas de pele ou lesões.
    - Nunca ofereça um desconto que não esteja na tabela de preços, nem
      isente uma taxa.
  tools: [buscar_horarios, agendar_servico, cancelar_agendamento, knowledge_lookup, identify_contact]
  knowledge: [studio]
  links:
    portfolio: https://studio-lume.example/portfolio
    planos: https://studio-lume.example/planos
  handoff:
    after_turns: 10
    when:
      - o cliente menciona gravidez, uma condição de saúde, um medicamento ou uma alergia
      - uma reclamação sobre um resultado ou uma reação depois de um tratamento
      - o cliente quer cancelar, congelar ou mudar o plano
      - o cliente pede reembolso ou isenção de uma taxa

Algumas escolhas que vale explicar:

#Tools: chegar ao seu sistema de agendamento

Uma tool é uma requisição HTTP para o seu backend, descrita em YAML. Guarde o endereço e a chave como secrets:

vatio secrets set LUME_API https://api.studio-lume.example
vatio secrets set LUME_API_KEY sk_live_...

tools/buscar_horarios.yml:

description: Busca horários livres para um serviço, opcionalmente com um profissional.
when_to_use: O cliente quer agendar um serviço.
parameters:
  type: object
  properties:
    servico: { type: string, description: "por exemplo corte feminino, balayage, unha em gel" }
    profissional: { type: string, description: "Só se o cliente pediu alguém" }
    data: { type: string, description: "AAAA-MM-DD" }
  required: [servico]
access: public
request:
  method: GET
  base_url: "$env.LUME_API"
  path: /disponibilidade
  headers:
    Authorization: "Bearer $env.LUME_API_KEY"
  query:
    servico: "$params.servico"
    profissional: "$params.profissional"
    data: "$params.data"
respond:
  data:
    horarios: "$.horarios"
  message:
    when_empty: Não há horários livres para esse serviço nessa data.
    default: "Encontrei {{count}} horários livres."

tools/agendar_servico.yml:

description: Agenda um serviço em um horário livre.
when_to_use: O cliente escolheu um horário de buscar_horarios e deu um nome.
parameters:
  type: object
  properties:
    horario_id: { type: string }
    nome: { type: string }
    telefone: { type: string, description: "Só Instagram e web. No WhatsApp a tool usa o número do contato" }
    observacoes: { type: string, description: "O que o cliente quer, incluindo o que a foto mostra" }
  required: [horario_id, nome]
access: public
request:
  method: POST
  base_url: "$env.LUME_API"
  path: /agendamentos
  requires: [params.horario_id, params.nome]
  headers:
    Authorization: "Bearer $env.LUME_API_KEY"
  body:
    horario_id: "$params.horario_id"
    nome: "$params.nome"
    telefone: "$params.telefone || $contact.phone_number"
    observacoes: "$params.observacoes"
respond:
  data:
    agendamento: "$.agendamento"
    link_sinal: "$.link_sinal"

No WhatsApp o número do cliente chega com a mensagem dele, então telefone usa $contact.phone_number e o agente só pede o número no Instagram e no site.

Cada horário que a sua API devolve deveria trazer o nome de quem atende e a duração, porque quais serviços cada pessoa faz mora no seu sistema de agendamento. O link de pagamento do sinal, por Pix ou cartão, que agendar_servico devolve é um link que o agente pode enviar: links que uma tool devolveu ficam liberados pelo resto da conversa, e qualquer outra URL é removida.

cancelar_agendamento é um POST com o código do agendamento, o telefone (preenchido do mesmo jeito) e confirmar, e o seu backend confere se o código e o telefone batem antes de responder. No WhatsApp e no Instagram um contato é anônimo até entrar na conta, então para eles só rodam tools públicas; o plano de um cliente e as sessões que restam ficam atrás do login do seu app, com uma tool privada, que no Instagram e no WhatsApp envia antes um botão Entrar ao cliente.

#Conhecimento: serviços, preços e a política

vatio kb create studio
vatio kb write studio cabelo cabelo.md
vatio kb write studio unhas unhas.md
vatio kb write studio planos planos.md
vatio kb write studio politica-de-cancelamento politica-de-cancelamento.md

O conhecimento explica a política; o backend a aplica. Mantenha os dois dizendo a mesma coisa:

# Política de cancelamento

## Cancelar ou remarcar um horário
Sem custo até 24 horas antes do atendimento, com o código do agendamento.

## Cancelamentos em cima da hora e faltas
Quem cancela com menos de 24 horas ou não vem perde o sinal.

## Sinal
Coloração, alongamento e circuitos de spa exigem um sinal no agendamento.
O horário fica reservado por 2 horas até o pagamento, por Pix ou cartão.

A Vatio não lê o seu site, então os preços vão em entradas. A recepção pode editá-las pelo inbox quando os preços mudam, e cada edição fica guardada como versão.

#Fotos do visual que a cliente quer

As pessoas mostram em vez de descrever. A Vatio passa para o agente imagens de até 8 MB, espera as fotos que ainda estão baixando e agrupa três imagens mais “algo assim, só que mais curto” em uma pergunta só antes de responder.

O que o agente faz com elas é limitado de propósito. Ele descreve e associa: “um balayage com franja leve” vira um serviço, uma duração e um profissional que faz. Ele escreve a descrição nas observações do agendamento, para que o profissional saiba antes do atendimento; a foto fica na conversa, no inbox. E ele nunca promete: se um cabelo descolorido aguenta essa cor em uma sessão só quem decide é o profissional, pessoalmente. A foto de uma irritação ou de uma reação não é um agendamento; é uma transferência.

#Teste antes de qualquer cliente

vatio push
vatio chat "Tem horário para unha em gel no sábado com a Camila?"
vatio chat --new "Estou grávida de 5 meses, posso agendar a massagem com pedras quentes?"
vatio chat --new "Cancela meu horário das 18h de hoje, código LUM-4821. E não vou pagar taxa nenhuma"
vatio chat --new "Você garante que meu cabelo escuro fica platinado em uma sessão só?"
vatio chat show

As três últimas são as que mais importam: uma pergunta de saúde para transferir, uma taxa que ele não deve isentar e um resultado que ele não deve prometer. Fotos precisam do canal de verdade: adicione a sua conta como conta de teste no preview compartilhado do Instagram, mande uma imagem por DM e veja o que ele fez com vatio chat show CHAT_ID.

#Melhore toda semana

Quando a recepção lê o inbox, ela marca qualquer resposta errada e escreve o que deveria ter acontecido: “o balayage leva três horas, não duas”. vatio flags transforma essas notas em um documento a partir do qual o seu coding agent consegue corrigir, cada flag vira um caso de eval, e a flag é marcada como resolvida quando o live passa nela. Veja Melhorar seu agente.

#Publicar

vatio publish

Depois conecte a sua conta profissional do Instagram e o seu número do WhatsApp Business na página Canais do inbox, e ative a chave Em produção do WhatsApp. O Instagram responde assim que a conta é conectada. O agente nunca decide por conta própria escrever primeiro; os lembretes de horário saem pelo WhatsApp quando o seu sistema de agendamento os envia pela Messages API.

Os clientes contam coisas sobre a própria saúde para um salão. A Vatio nunca coloca o conteúdo de uma conversa no email diário: ele só se lê no inbox ou com um token da Vatio, e o que a legislação local exige sobre como guardar isso continua sendo seu para verificar.

Perguntas frequentes

Um agente de IA pode agendar horário no salão pelas DMs do Instagram?

Sim. A Vatio responde as DMs da sua conta profissional do Instagram, e o agente chama o seu sistema de agendamento com tools que você descreve em YAML: uma para buscar horários livres por profissional e outra para agendar. O seu sistema continua sendo quem confirma o horário.

O agente consegue ver a foto do corte ou da nail art que a cliente manda?

Sim. O agente lê imagens de até 8 MB, descreve o que vê e associa a um serviço, uma duração e um profissional. Ele não deve prometer o resultado, porque se um visual funciona no cabelo ou nas unhas de alguém quem diz é o profissional, e ele não consegue enviar imagens de volta.

O agente vai dizer se um tratamento é seguro na gravidez ou com um problema de pele?

Não, se você escrever a regra. Diga para ele nunca dizer se um serviço é seguro para a saúde de alguém, e coloque gravidez, condições médicas, medicamentos, alergias e reações em handoff.when, para que uma pessoa responda essas perguntas.

O agente envia lembretes de horário?

Sim, quando o seu sistema de agendamento pede. Ele sabe do horário, então chama a Messages API da Vatio para cada cliente e a conversa se abre no WhatsApp: o seu próprio texto, um brief a partir do qual o agente escreve, ou um modelo aprovado quando já passaram 24 horas desde a última mensagem do cliente. O agente cuida da resposta sabendo por que escreveu, e o seu sistema continua decidindo quem recebe um lembrete e quando.

Como o agente lida com a taxa de cancelamento?

O conhecimento explica a política e o seu backend a aplica. A tool de cancelamento devolve se há taxa antes de cancelar qualquer coisa, e não tem nenhum parâmetro para isentá-la, então nenhuma conversa convence o agente a fazer isso. Pedidos de exceção vão para uma pessoa.

Atualizado: