Pilates Muv Up × Empresa.IA — Arquitetura Técnica

Sistema Multi-Agêntico
Base única · Visão por papel

Uma base de dados central serve Grazi (visão total), cada professora (sua turma), cada agente de IA (sua função). Nenhum ator vê além do que precisa. A inteligência está distribuída — o controle, centralizado.

🎓 Grazi · visão total 👩‍🏫 Professora · sua turma 🤖 Agente IA · sua função 💾 Base única · 3 estúdios 🔒 RBAC · por papel

Arquitetura em camadas

Três camadas empilhadas: dados → inteligência → interfaces. Cada uma faz uma coisa bem.

Camada 3 · Interfaces (quem conversa)
🎓 Grazi (dona)

Painel CRM completo · todos os estúdios · visão financeira total · relatórios

👩‍🏫 Professora A

Sua agenda · seus alunos · check-up de aula · reavaliações

👩‍🏫 Professora B

Sua agenda · seus alunos · check-up de aula · reavaliações

👩‍🏫 Professora C

Sua agenda · seus alunos · check-up de aula · reavaliações

Camada 2 · Agentes (quem age)
🤖 Agente Captação

1º contato · experimental · follow-up lead

🤖 Agente Matrícula

Planos · dados · ZapSign · boas-vindas

🤖 Agente Financeiro

Cobrança · Pix webhook · baixa · inadimplência

🤖 Agente Relacionamento

Aniversários · marcos · NPS · reativação · upsell

🤖 Agente Agenda

Remarcação · vagas · notifica professoras

🤖 Orquestrador

Roteador: decide qual agente age em cada mensagem

Camada 1 · Dados (a memória)
💾 Base única (Postgres)

Alunos · turmas · agenda · pagamentos · mensagens · avaliações · professoras · estúdios. Grazi vê tudo. Professoras veem sua turma. Agentes acessam só o que precisam.

🔌 Integrações

WhatsApp Business API · ZapSign · Pix webhook · Google Calendar (opcional)

Modelo de dados — tabelas principais

Base única Postgres. Cada registro sabe a qual estúdio pertence — Grazi filtra tudo, professoras veem só o seu escopo.

🎓 studios
idPKuuid
nametext
addresstext
phonetext
created_attimestamptz
👩‍🏫 teachers
idPKuuid
studio_idFKuuid
nametext
phonetext
roleenum
activeboolean
🧘 students
idPKuuid
studio_idFKuuid
nametext
phoneIDXtext
cpftext
birthdatedate
statusenum
plan_typeenum
plan_valuenumeric
billing_dayint
enrolled_atdate
health_notestext
goalstext
emergency_contacttext
📅 classes
idPKuuid
studio_idFKuuid
teacher_idFKuuid
nametext
weekdayint
timetime
capacityint
modalitytext
💰 payments
idPKuuid
student_idFKuuid
amountnumeric
due_datedate
paid_attimestamptz
methodenum
statusenum
pix_txidtext
reference_monthdate
📊 assessments
idPKuuid
student_idFKuuid
teacher_idFKuuid
typeenum
notestext
evolutiontext
nps_scoreint
assessed_attimestamptz
💬 conversations
idPKuuid
student_idFKuuid
agent_typetext
channeltext
directionenum
bodytext
intenttext
sent_attimestamptz
📋 enrollments
idPKuuid
student_idFKuuid
class_idFKuuid
enrolled_atdate
activeboolean
✅ attendances
idPKuuid
enrollment_idFKuuid
class_datedate
presentboolean
notestext

Os 6 agentes de IA

Cada agente tem uma identidade, um escopo de dados e um conjunto de ações. O Orquestrador decide quem age em cada mensagem.

🔵

Agente Captação

Do primeiro "oi" à experimental confirmada

  • Responde novos contatos no WhatsApp 24h/dialê leads
  • Coleta nome, objetivo, disponibilidadecria lead
  • Verifica vagas e agenda a experimentalcria slot
  • Envia confirmação D-1lê agenda
  • Follow-up 1, 7 e 15 dias pós-experimentalatualiza lead
🟢

Agente Matrícula

Do "quero começar" ao contrato assinado

  • Apresenta planos e captura escolhalê planos
  • Coleta dados cadastrais completoscria student
  • Gera e envia contrato via ZapSignenvia doc
  • Confirma matrícula e envia boas-vindasstatus=ativo
  • Cria enrollment na turma escolhidacria enrollment
💛

Agente Financeiro

Cobrança, Pix e baixa — sem Excel

  • Monitora vencimentos diariamentelê payments
  • Envia lembrete D-3 e D-1 com Pixlê student
  • Webhook Pix → detecta pagamentoatualiza payment
  • Dá baixa e envia comprovante ao alunostatus=pago
  • Fluxo de cobrança D+3 / D+7 / alerta D+15alerta Grazi
❤️

Agente Relacionamento

Retenção, LTV e o coração do negócio

  • Boas-vindas na 1ª semanalê enrolled_at
  • Marcos (10ª, 50ª, 100ª aula, 1 ano)lê attendances
  • "Senti sua falta" após 2 faltaslê attendances
  • Aniversário no dia certolê birthdate
  • Upsell de plano no 3º mêslê plan_type
  • NPS a cada 90 diascria assessment
  • Indicação ativa nos marcoslê enrolled_at
🔄

Agente Agenda

Remarcações sem Grazi no meio

  • Recebe pedido de remarcaçãolê classes
  • Verifica vagas em tempo reallê enrollments
  • Propõe horários disponíveis ao alunolê classes
  • Confirma e atualiza a enrollmentatualiza slot
  • Notifica a professora da turmamsg prof
🎯

Orquestrador

O roteador central — decide quem age

  • Recebe toda mensagem entrante do WhatsApp
  • Identifica intenção (captação / pagamento / remarcação / dúvida…)
  • Verifica se aluno existe na base ou é novo lead
  • Roteia para o agente especialista correto
  • Mantém contexto da conversa (memória por telefone)
  • Sinaliza para Grazi o que não conseguiu resolveralerta

Matriz de acesso (RBAC)

Cada papel vê exatamente o que precisa — nem mais, nem menos. ✅ = acesso total · 📍 = só o seu escopo · — = sem acesso

Dado / Recurso 🎓 Grazi 👩‍🏫 Professora 🤖 Ag. Captação 🤖 Ag. Financeiro 🤖 Ag. Relacionam. 🤖 Ag. Agenda
Todos os alunos📍 sua turma📍 leads📍 financeiro📍 status/datas📍 agenda
Dados sensíveis (CPF, saúde)📍 sua turma
Pagamentos e receita
Agenda de todos os estúdios📍 seu estúdio📍 vagas
Avaliações e evolução📍 sua turma📍 NPS/datas
Histórico de conversa📍 novos📍 cobranças📍 relacionam.📍 agenda
Relatórios gerenciais
Dados dos outros professores

Fluxo de uma mensagem — do WhatsApp ao banco

Trace o caminho de um "quero começar" até a matrícula confirmada.

1

Mensagem chega no WhatsApp Business

Webhook recebe a mensagem → Orquestrador carrega o contexto do número (novo lead ou aluno existente).

// Orquestrador identifica intent
{
  phone: "5515991062151",
  message: "Oi, quero saber sobre pilates",
  intent: "captacao.novo_lead",
  student_id: null // novo
}
2

Orquestrador → Agente Captação

Intent mapeada para captação. Agente assume a conversa, cria o registro de lead na base.

// INSERT leads
{ phone: "551599...", studio_id: "muvup-1",
  status: "novo", source: "whatsapp" }
3

Experimental agendada → handoff para Matrícula

Após a aula experimental, professor registra no app → Orquestrador detecta status "experimental_realizada" → Agente Matrícula assume.

4

Agente Matrícula coleta dados e envia contrato

CPF, data de nascimento, objetivos — tudo salvo em students. Chama ZapSign API → retorna link. Aluno assina.

// Após assinatura ZapSign webhook
UPDATE students SET status='ativo'
  WHERE phone='5515...';
INSERT enrollments (student_id, class_id) ...;
5

Agente Financeiro cria o ciclo de pagamentos

Ao matricular, Financeiro gera automaticamente todos os registros de payment futuros com as datas corretas.

6

Agente Relacionamento entra em cena

Mensagem de boas-vindas disparada. Sistema de eventos passa a monitorar: faltas, aniversário, marcos, NPS — a partir de agora, tudo automático.