#Agente de IA para imobiliárias

Um agente de IA para uma imobiliária atende as pessoas que escrevem sobre um imóvel pelo WhatsApp, pelas DMs do Instagram e no seu site. Ele descobre se querem comprar ou alugar, o orçamento, o bairro e como vão pagar, mostra os imóveis compatíveis com um link para cada um e agenda uma visita com um corretor. Ele nunca negocia nem orienta sobre financiamento; isso vai para uma pessoa. Com a Vatio você descreve esse agente em um arquivo vatio.yml e ele responde no seu próprio número de WhatsApp e na sua conta do Instagram.

Este guia constrói um de ponta a ponta: as instruções, as tools que chegam aos seus imóveis e às agendas dos seus corretores, o conhecimento que ele lê e as regras que o impedem de prometer o que só um corretor pode.

#O que o agente resolve

Quase tudo o que chega a uma imobiliária pelo WhatsApp e pelo Instagram são as mesmas conversas:

Uma conversa típica pelo Instagram, com o que o agente fez por dentro:

Visitante: valor? (print de um post)

Agente: É o imóvel CN-2041, um apartamento de dois quartos em Pinheiros: R$ 3.800 de aluguel, mais condomínio e IPTU, disponível a partir de 1º de novembro. Fotos e detalhes: https://casa-norte.example/imoveis/CN-2041

Visitante: dá pra ver essa semana? somos eu e meu namorado

Agente: Claro. O corretor tem quinta às 18:00 ou sábado às 11:00. Antes de agendar: a partir de quando vocês querem se mudar?

Por trás dessas respostas, o agente leu o código do imóvel no print, chamou buscar_imoveis com ele e depois horarios_visita. O link veio da tool, e é isso que permite ao agente enviá-lo. Cada chamada de tool fica visível no inbox, ao lado da resposta que ela produziu.

#Antes de escrever qualquer coisa: cinco perguntas para a imobiliária

  1. Quem escreve, e de onde? Posts do Instagram, portais de imóveis, o site; mais inquilinos ou mais compradores.
  2. O que faz um lead valer uma visita? O mínimo que os corretores querem saber antes: orçamento, bairro, data de mudança, forma de pagamento.
  3. O que ele nunca pode dizer? Se o preço é negociável, se um banco vai financiar, qualquer coisa sobre um contrato.
  4. Quando um corretor assume? Propostas, contratos, proprietários que querem anunciar, reclamações, qualquer um que peça.
  5. Onde ficam os imóveis e as agendas? A API do seu CRM ou da sua base de imóveis, as agendas dos corretores, o endereço da página de cada imóvel.

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

#O vatio.yml

workspace: casa-norte
agent:
  name: Casa Norte Imóveis
  personality: Simpático e eficiente. Uma ou duas perguntas por vez, nunca insistente.
  instructions: |
    Você ajuda as pessoas que querem comprar ou alugar um imóvel com a Casa
    Norte Imóveis: descobre do que precisam, mostra imóveis compatíveis e
    agenda visitas com um corretor.

    Responda primeiro o que perguntaram, depois qualifique. Descubra se
    querem comprar ou alugar, o orçamento máximo, os bairros que
    considerariam e quantos quartos precisam. Para quem compra, pergunte se
    vai usar financiamento bancário ou FGTS, ou pagar à vista; para quem
    aluga, a partir de quando quer se mudar. Pergunte uma ou duas coisas
    por vez, e guarde o que disserem com remember.

    Imóveis: chame buscar_imoveis com o que você sabe e ofereça no máximo
    três resultados, cada um com o valor, o bairro, os quartos e o link
    que ela devolveu. Se o visitante mandar um print, procure nele o
    código do imóvel e busque por esse código.

    Visitas: chame horarios_visita e ofereça os horários que ela devolver.
    Antes de chamar agendar_visita, peça um nome e, exceto no WhatsApp, um
    telefone, e repita a visita para a pessoa. Só diga que a visita está
    agendada quando agendar_visita a tiver devolvido.

    Regras que você nunca quebra:
    - Nunca negocie, aceite uma proposta ou sugira que o preço pode baixar.
    - Nunca diga se um banco vai aprovar um financiamento ou se o FGTS pode
      ser usado, nem informe taxas de juros, nem dê orientação jurídica ou
      tributária.
    - Nunca passe os contatos de um proprietário, nem um endereço exato que
      buscar_imoveis não tenha devolvido.
    - Nunca descreva um bairro por quem mora nele. Descreva o imóvel, o
      transporte e os serviços.
  tools: [buscar_imoveis, horarios_visita, agendar_visita, knowledge_lookup, identify_contact, remember]
  knowledge: [imobiliaria]
  links:
    bairro:
      url: https://casa-norte.example/{operacao}/{bairro}
      when: O visitante quer ver tudo o que há em um bairro.
      values:
        operacao: [comprar, alugar]
        bairro: [pinheiros, vila-mariana, moema, perdizes]
    anunciar:
      url: https://casa-norte.example/anuncie-seu-imovel
      when: Um proprietário quer vender ou alugar o próprio imóvel.
  handoff:
    after_turns: 20
    when:
      - o visitante quer fazer uma proposta ou negociar o preço
      - perguntas sobre um contrato, uma garantia locatícia ou uma questão jurídica
      - o visitante pede orientação sobre financiamento ou uso do FGTS
      - um proprietário quer vender ou alugar o próprio imóvel
      - uma reclamação sobre um corretor ou uma visita

Algumas escolhas que vale a pena explicar:

#Tools: imóveis e visitas

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

vatio secrets set CRM_API https://api.casa-norte.example
vatio secrets set CRM_API_KEY sk_live_...

tools/buscar_imoveis.yml:

description: Busca imóveis anunciados para venda ou aluguel.
when_to_use: O visitante quer ver imóveis, ou pergunta por um pelo código ou por um print.
parameters:
  type: object
  properties:
    operacao: { type: string, enum: [comprar, alugar] }
    bairros: { type: string, description: "separados por vírgula, por exemplo pinheiros,moema" }
    valor_max: { type: number, description: "preço total para comprar, aluguel mensal para alugar, em reais" }
    quartos: { type: integer, description: "número mínimo de quartos" }
    codigo: { type: string, description: "código do imóvel, por exemplo CN-2041" }
access: public
request:
  method: GET
  base_url: "$env.CRM_API"
  path: /imoveis/busca
  headers:
    Authorization: "Bearer $env.CRM_API_KEY"
  query:
    operacao: "$params.operacao"
    bairros: "$params.bairros"
    valor_max: "$params.valor_max"
    quartos: "$params.quartos"
    codigo: "$params.codigo"
respond:
  data:
    imoveis: "$.imoveis"
  message:
    when_empty: Nenhum imóvel anunciado atende a essas condições.
    default: "Encontrei {{count}} imóveis."

O seu endpoint devolve alguns imóveis, cada um com o código, o valor, o bairro, os quartos e a url, a página do imóvel no seu site. Os parâmetros que o agente não preencheu ficam fora da requisição.

tools/agendar_visita.yml:

description: Agenda uma visita a um imóvel com o corretor responsável.
when_to_use: O visitante escolheu um horário de horarios_visita e informou 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" }
    operacao: { type: string, enum: [comprar, alugar] }
    orcamento: { type: number }
    pagamento: { type: string, description: "por exemplo financiamento aprovado, financiamento em análise, FGTS, à vista" }
  required: [horario_id, nome]
access: public
request:
  method: POST
  base_url: "$env.CRM_API"
  path: /visitas
  requires: [params.horario_id, params.nome]
  headers:
    Authorization: "Bearer $env.CRM_API_KEY"
  body:
    horario_id: "$params.horario_id"
    nome: "$params.nome"
    telefone: "$params.telefone || $contact.phone_number"
    operacao: "$params.operacao"
    orcamento: "$params.orcamento"
    pagamento: "$params.pagamento"
respond:
  data:
    visita: "$.visita"

A qualificação viaja com o agendamento, então o corretor abre a visita no seu CRM já sabendo o orçamento e como o lead vai pagar. No WhatsApp o número do lead 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. horarios_visita é um GET com o código do imóvel que devolve os próximos horários livres do corretor responsável; qual agenda ele lê é decisão do seu backend. Se alguém pegou o horário nesse meio-tempo, responda 409: a Vatio transforma qualquer resposta que não seja 2xx em um erro que o agente consegue explicar, então ele oferece outro horário em vez de confirmar um que já não existe.

#O que uma tool pública pode devolver

No WhatsApp e no Instagram um contato é anônimo até entrar na conta, então para eles só rodam tools públicas, e estas três são. Para os imóveis tudo bem, porque já são públicos, mas isso define a regra do que os seus endpoints devolvem: o que está na página do imóvel, e nada mais. Nada de dados do proprietário, nem o número do apartamento de um imóvel que você só anuncia por bairro, nem o menor valor que o dono aceitaria. Tudo o que uma tool devolve o modelo pode repetir. agendar_visita escreve no seu CRM para visitantes anônimos, então trate essa tool como um formulário de contato: valide o telefone e limite os agendamentos por número. O que pertence a um cliente, como o contrato ou os boletos de um inquilino, precisa de um visitante autenticado e de uma tool marcada access: private, que no WhatsApp e no Instagram leva a pessoa a entrar na conta antes; veja Conectar seu backend.

#Conhecimento: o processo, nas suas palavras

vatio kb create imobiliaria
vatio kb write imobiliaria alugar alugar.md
vatio kb write imobiliaria comprar comprar.md
vatio kb write imobiliaria bairros bairros.md
vatio kb write imobiliaria taxas taxas.md

Uma boa entrada responde a uma pergunta por seção:

# Alugar com a Casa Norte

## O que você precisa para fazer a proposta
RG ou CNH, CPF e comprovante de renda de pelo menos três vezes o valor do
aluguel.

## Garantias que aceitamos
Fiador com imóvel quitado, seguro-fiança ou título de capitalização.

## Quanto tempo leva
Respondemos em até dois dias úteis depois de receber todos os documentos.

A Vatio não lê o seu site. Se a resposta está em uma página, coloque em uma entrada o que o agente precisa. Quando as taxas mudam, um supervisor edita a entrada pelo inbox, e cada edição fica guardada como uma versão.

#Instagram: “valor?” e um print

O mercado imobiliário vive no Instagram. Um reel de um apartamento traz DMs que dizem “valor?”, “info” ou “ainda está disponível?”, muitas vezes com um print, porque o visitante escreveu a partir do feed e não do post. Duas coisas fazem essas conversas funcionarem:

O agente não consegue enviar fotos; a página do imóvel tem as fotos, e o que ele envia é o link. Os áudios são transcritos, e a Vatio agrupa uma rajada de mensagens em um só turno antes de responder. No Instagram uma empresa não pode escrever primeiro, então se um lead para de responder ali, o follow-up vai por outro canal; no WhatsApp o seu CRM pode enviá-lo pela Messages API. Quando ele volta a escrever, o agente continua com as notas que guardou. A documentação do Instagram explica como conectar a sua conta profissional.

#Teste antes de qualquer lead

vatio push
vatio chat "Oi, procuro um apê de 2 quartos para alugar em Pinheiros, até 4 mil"
vatio chat "Dá para ver o primeiro no sábado?"
vatio chat --new "Se eu fechar esta semana, vocês baixam 10% do valor?"
vatio chat --new "Ganho 9 mil por mês. O banco vai aprovar meu financiamento para o CN-3108?"
vatio chat --new "Me passa o telefone do dono do CN-2041?"
vatio chat show

As três conversas com --new são as importantes: uma negociação que ele deve passar para um corretor, uma pergunta sobre financiamento que ele não deve responder e os contatos de um proprietário que ele não deve entregar. chat show mostra cada chamada de tool. agendar_visita escreve de verdade, então aponte o ambiente em que você testa para um CRM de sandbox, com um secret que valha só para ele. Depois adicione a sua conta do Instagram como conta de teste na página Testar do inbox e mande para a conta compartilhada de preview um print de um dos seus posts.

#Melhore toda semana

Quando os corretores respondem pelo inbox, eles marcam qualquer resposta que saiu errada e escrevem o que deveria ter acontecido: um lead mal qualificado, um imóvel que ele deveria ter oferecido. 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 live passa nesse caso. Veja Melhorar seu agente.

#Colocar no ar

vatio publish

Depois conecte o número de WhatsApp Business da imobiliária e a conta profissional do Instagram na página Canais do inbox, e ative a chave Em produção do WhatsApp. O Instagram responde assim que a conta é conectada. Os corretores podem continuar usando o app do WhatsApp Business no celular: se alguém responder por ali, assume a conversa, e o agente sai de cena até que ela seja liberada no inbox. Para o seu site, vatio tokens create --env live --origin https://casa-norte.example cria o token para o script do widget.

Nomes, telefones e finanças dos leads são dados pessoais. 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; o seu CRM deveria ter o mesmo cuidado. Verificar o que a legislação local exige da publicidade de imóveis e do tratamento dos dados dos leads continua sendo tarefa sua.

Perguntas frequentes

Um agente de IA pode qualificar leads de imobiliária no WhatsApp e no Instagram?

Sim. O agente pergunta se a pessoa quer comprar ou alugar, o orçamento, o bairro e como vai pagar, e busca nos seus imóveis com uma tool que chama a sua API. Quando agenda uma visita, essas respostas vão junto para o seu CRM, então o corretor já começa com um lead qualificado.

O agente consegue enviar fotos de um imóvel?

Não. As respostas são só texto, então o agente envia o link da página do imóvel, onde estão as fotos. Ele lê as fotos e os prints que os visitantes mandam, e é assim que encontra o imóvel de que alguém fala a partir do print de um post.

O agente vai negociar o preço ou orientar sobre financiamento?

Não se você escrever a regra, e você deveria. Coloque negociação, propostas, orientação sobre financiamento e contratos como coisas que ele nunca faz, e inclua esses casos em handoff.when para que um corretor assuma a conversa.

O agente faz follow-up com leads que pararam de responder?

No WhatsApp, quando o seu CRM pede. O seu CRM ou backend chama a Messages API da Vatio para aquele lead, com um modelo aprovado se já se passaram 24 horas, e o agente continua com as notas que guardou sobre o orçamento e os bairros dele. O agente nunca decide por conta própria fazer follow-up, e no Instagram uma empresa não pode escrever primeiro.

Como um corretor fica sabendo que um lead precisa dele?

Uma transferência deixa a conversa esperando no inbox da Vatio. A Vatio ainda não avisa ninguém, então alguém precisa acompanhar o inbox no horário comercial. Uma visita agendada pela sua API chega onde o seu backend a colocar, como o seu CRM.

Atualizado: