IA conversacional no WhatsApp financeiro: arquitetura e código

IA conversacional no WhatsApp financeiro: arquitetura e código

2>IA como canal de distribuição não é mais hipótese — é roadmap

Quando li a matéria do Abril.com.br sobre a , a assistente financeira da Genial que já atende um em cada quatro clientes digitais pelo WhatsApp, meu primeiro pensamento foi: “isso é engenharia, não marketing”. Cem mil usuários em menos de um ano conversando com um bot que faz Pix, consulta saldo e ainda recomenda investimentos não é trivial. Por trás de cada mensagem existe um pipeline de NLP, integração com APIs bancárias, conformidade regulatória e um motor de regras que precisa respeitar o perfil do investidor (suitability). Vou destrinchar o que tem de real aí dentro — e o que falta no noticiário.

O que a Gê realmente faz (e o que a matéria deixou de fora)

Segundo o Abril.com.br, a Genial posiciona a Gê como “porta de entrada para diferentes serviços da instituição”. Traduzindo para quem mexe com código: é um orquestrador conversacional que despacha intenções para múltiplos microsserviços. O usuário pede “quanto tenho na conta?” → o classificador identifica a intenção → chama a API de saldo → monta a resposta natural. Pede “quero investir 500 reais” → dispara fluxo de suitability → consulta produtos disponíveis → confirma operação.

O detalhe técnico mais relevante é que a Genial pretende lançar um CDB exclusivo para o canal. Isso significa que a Gê não é só atendimento — é um ponto de venda com produto próprio. Para nós, devs, isso muda a arquitetura: agora o bot precisa controlar funil de conversão, disparar mensagens proativas com sugestões personalizadas e medir LTV por canal conversacional.

Por que WhatsApp virou canal financeiro sério

Tem um motivo técnico que ninguém comenta: a Meta investiu pesado no WhatsApp Business API com webhooks estáveis, criptografia E2E e templates de mensagem aprovados. Para uma instituição financeira, isso resolve três problemas críticos:

  • Compliance: mensagens são auditáveis e registradas com opt-in explícito.
  • Infraestrutura: a Meta cuida de escala global, a Genial só consome a API.
  • UX: o usuário não baixa nada, não cria senha, não aprende interface nova.

Quando uso WhatsApp como canal de bots em projetos, percebo que a taxa de engajamento é 4 a 5 vezes maior que apps nativos. Não é opinião — é dado de mercado.

Arquitetura provável: o que está rodando por trás da Gê

A Genial não publicou o stack, mas dá para inferir o desenho mínimo viável:

  1. Camada de entrada: WhatsApp Business API via provedor (Twilio, MessageBird, 360dialog ou a própria Meta).
  2. Gateway de mensagens: fila assíncrona (Kafka, SQS ou RabbitMQ) para absorver picos.
  3. Classificador de intenção: provavelmente um LLM com prompt engineering ou um modelo fine-tunado para domínio financeiro.
  4. Orquestrador: LangChain, Haystack ou solução proprietária para encadear tools/APIs.
  5. APIs core do banco: saldo, Pix, produtos de renda fixa, Tesouro Direto, suitability.
  6. Motor de recomendação: sugere investimentos com base no perfil cadastral e no histórico do usuário.
  7. Camada de auditoria: log de toda conversa para o Banco Central (Open Finance + regulação).

Na Prática: prototipando um classificador de intenção financeiro

Vamos sair do abstrato. Suponha que você precisa classificar mensagens de clientes de uma fintech em intenções como consultar_saldo, fazer_pix, investir, tirar_duvida. Isso é a coluna vertebral de qualquer assistente como a Gê. Aqui vai um exemplo funcional usando Python e a API da OpenAI — o mesmo padrão serve para Anthropic, Gemini ou modelos locais via Ollama:

import json
from openai import OpenAI
from pydantic import BaseModel, Field

client = OpenAI()

class IntencaoFinanceira(BaseModel):
    intencao: str = Field(
        description="Uma de: consultar_saldo, fazer_pix, investir, tirar_duvida, cancelar, falar_humano"
    )
    confianca: float = Field(ge=0.0, le=1.0)
    entidades: dict = Field(
        default_factory=dict,
        description="Valores, contas, prazos extraídos da mensagem"
    )

SYSTEM_PROMPT = """Você é o classificador de intenções de uma fintech brasileira.
Mapeie a mensagem do cliente para uma das intenções canônicas e extraia entidades.
Responda APENAS em JSON válido seguindo o schema."""

def classificar(mensagem: str, historico: list[dict] | None = None) -> IntencaoFinanceira:
    msgs = [{"role": "system", "content": SYSTEM_PROMPT}]
    if historico:
        msgs.extend(historico[-6:])  # janela curta, custo controlado
    msgs.append({"role": "user", "content": mensagem})

    resp = client.chat.completions.create(
        model="gpt-4o-mini",
        messages=msgs,
        response_format={"type": "json_object"},
        temperature=0,
    )
    return IntencaoFinanceira(**json.loads(resp.choices[0].message.content))

# Teste real
resultado = classificar("Quero aplicar 2000 reais no Tesouro Selic amanhã cedo")
print(resultado.model_dump_json(indent=2))
# intencao: "investir", confianca: 0.96, entidades: {"valor": 2000, "ativo": "Tesouro Selic"}

Detalhe importante: usei temperature=0 e response_format=json_object. Em produção financeira, determinismo e schema rígido não são opcionais — são exigência de auditoria. Na minha experiência, pular isso é a forma mais rápida de receber um ticket do time de risco.

Webhook do WhatsApp Business API

Para fechar o loop, o webhook que recebe a mensagem do usuário e devolve a resposta da Gê segue essa estrutura:

from fastapi import FastAPI, Request
import httpx

app = FastAPI()
WHATSAPP_TOKEN = "EAAxxxxx"  # token de acesso do Meta Business

@app.post("/webhook/whatsapp")
async def receber_mensagem(req: Request):
    body = await req.json()
    msg = body["entry"][0]["changes"][0]["value"]["messages"][0]
    texto = msg["text"]["body"]
    telefone = msg["from"]

    intencao = classificar(texto)

    # Despacha para o serviço correspondente
    if intencao.intencao == "consultar_saldo":
        resposta = await consultar_saldo_api(telefone)
    elif intencao.intencao == "investir":
        resposta = await abrir_fluxo_investimento(telefone, intencao.entidades)
    else:
        resposta = "Posso te ajudar a consultar saldo, fazer Pix ou investir."

    # Responde via API do WhatsApp
    async with httpx.AsyncClient() as http:
        await http.post(
            f"https://graph.facebook.com/v20.0/{PHONE_ID}/messages",
            headers={"Authorization": f"Bearer {WHATSAPP_TOKEN}"},
            json={
                "messaging_product": "whatsapp",
                "to": telefone,
                "type": "text",
                "text": {"body": resposta},
            },
        )
    return {"status": "ok"}

Erros comuns que devs cometem ao montar um bot financeiro

Já revisei código de pelo menos três fintechs tentando fazer algo parecido com a Gê. Os mesmos erros aparecem sempre:

  • Confundir LLM com motor de decisão. O modelo classifica a intenção, mas a regra de negócio (suitability, limites de Pix, janelas de operação) tem que estar em código determinístico. LLM sugerindo, código executando.
  • Esquecer o fallback humano. Qualquer mensagem com confiança abaixo de 0.7 ou intenção “falar_humano” precisa escalar. Bot travado em looping de “não entendi” é motivo de churn.
  • Não tratar o contexto entre mensagens. Conversa financeira é multi-turn. O usuário diz “quero investir”, depois “em renda fixa”, depois “200 reais”. Sem memória de sessão, você vira um atendimento telefônico dos anos 90.
  • Persistir dados sensíveis em log. CPF, agência, conta e saldo não podem aparecer em log de aplicação. Máscara ou hash, sempre. Reguladores olham isso.
  • Subestimar custo de tokens em escala. 100 mil usuários conversando 5x por dia com GPT-4 dá uma fatura que justifica strongly um modelo menor (4o-mini, Haiku, Gemma 2 fine-tunado) para as intenções simples.

Comparação honesta: Gê vs alternativas

A Gê não está sozinha nesse espaço. Veja o cenário competitivo:

Solução Canal Diferencial
Gê (Genial) WhatsApp Distribuição + produto próprio (CDB exclusivo)
C6 Bank (Ágatha) App próprio Mais limitada, focada em suporte
Will (Banco Original) App + Facebook Foco em educação financeira
Olivia (NuInvest/Nubank) App Curadoria passiva, sem execução

O movimento da Genial é agressivo: botar a IA no canal onde o usuário já está (WhatsApp) e dar a ela produto para vender. Esse é o desenho que vai separar vencedores de coadjuvantes nos próximos dois anos.

Por que isso importa para você, dev

Se você trabalha com IA ou backend, preste atenção: estamos vendo a primeira onda de finanças agentivas — sistemas que não apenas respondem, mas executam transações e geram receita. Isso abre três frentes de trabalho:

  1. Engenharia de prompt + tools para domínio financeiro (suitability, regulamentação CVM/Bacen).
  2. Integração robusta com WhatsApp Business API, lidando com templates, janelas de 24h e opt-in.
  3. Observabilidade de conversa — métricas de fallback, NPS por turno, LTV por intenção.

Quando testei em produção um protótipo parecido, a maior lição veio do operacional: latência do LLM mais chamada de API bancária precisa ficar abaixo de 3 segundos, senão o usuário abandona. Quem está pensando em montar algo nesse modelo, comece pelo WhatsApp Cloud API — é o caminho mais barato e bem documentado.

FAQ — perguntas que um dev realmente faz

1. Qual stack a Genial provavelmente usa por trás da Gê?

Não há divulgação oficial, mas o padrão de mercado para esse tipo de orquestrador combina um LLM (OpenAI, Anthropic ou modelo hospedado), um framework de agentes como LangChain ou arquitetura proprietária, e integração com APIs bancárias via Open Finance. A escolha por WhatsApp como canal sugere Twilio, 360dialog ou o Cloud API da Meta.

2. Como garantir conformidade regulatória em um bot financeiro?

Três pilares: (1) suitability validado em código antes de qualquer oferta de produto; (2) log imutável de toda conversa para auditoria do Bacen; (3) fallback humano obrigatório em decisões sensíveis. LLM nunca deve ter autonomia para executar ordens sem checagem de regras determinísticas.

3. Quanto custa escalar um bot como a Gê?

Para 100 mil usuários ativos com 5 mensagens/dia, em GPT-4o-mini você gasta algo entre R$ 8 mil e R$ 20 mil/mês só com tokens. Some o custo do WhatsApp API (≈ R$ 0,40 por sessão de 24h) e infraestrutura de fila. Por volta de R$ 50 mil/mês é uma estimativa realista para esse volume.

4. Vale a pena usar modelo local em vez de API paga?

Para protótipo e intents simples, sim — Llama 3 70B ou Gemma 2 27B rodando em GPU dedicada barateiam o custo. Mas para fluidez conversacional em português brasileiro com contexto financeiro, os modelos de fronteira ainda ganham. Em produção, um desenho híbrido é o mais comum: modelo local para intents, modelo grande para respostas abertas.

5. Como começar a estudar esse tipo de projeto?

Comece pelo WhatsApp Cloud API (é gratuito para mil conversas/mês). Suba um classificador como o do exemplo acima. Depois integre com a API do Open Finance do Banco Central para dados reais de saldo. Por fim, adicione o motor de recomendação com embeddings do perfil do usuário. É um caminho incremental e didático.

Gostou? Me segue no GitHub e deixa um comentário se tiver dúvida ou quiser aprofundar algum ponto.

Y

Yuri Sousa

Front-End Developer / Designer

Desenvolvedor apaixonado por criar experiências digitais acessíveis e visualmente perfeitas. Escrevo sobre desenvolvimento web, design e tecnologia.