Specification Pack v1
A primeira implementação será guiada por contratos explícitos, não por decisões improvisadas durante a geração de código.
Produto
O primeiro vertical atende empresas baseadas em agendamento.
Inclui:
CustomerAccount para assinatura e gestão comercial.
- Uma
Organization tenant para cada loja operada separadamente.
- Agrupamento opcional de organizações sem compartilhamento automático de dados.
- Membros e permissões independentes por tenant.
- Serviços, preços versionados e profissionais.
- Horários de funcionamento, escalas, intervalos e agendamentos.
- Contatos, tags e inbox isolados por organização.
- Secretária de IA usando tools controladas.
- WAHA como primeiro provider de testes e pilotos.
- Notificações transacionais.
O cliente externo nunca precisa de conta no painel: ele utiliza o próprio WhatsApp para falar com o número comercial da organização.
Clínicas podem reutilizar o motor de agenda no futuro, mas prontuários, convênios e dados médicos ficam fora da primeira versão.
Tenancy
Cada organização é:
- Tenant.
- Fronteira de segurança.
- Unidade futura de cobrança.
- Proprietária de contatos, WhatsApp, catálogo, agenda, agentes e plugins.
OrganizationGroup serve apenas para navegação e relatórios explicitamente autorizados.
Agendamento
A disponibilidade é calculada pela interseção de:
- Horário de funcionamento da organização.
- Horário de trabalho do profissional.
- Intervalos, folgas, bloqueios e exceções.
- Serviço habilitado para o profissional.
- Duração e buffers.
- Agendamentos e holds existentes.
- Recursos obrigatórios.
- Lead time, horizonte e timezone.
A IA não interpreta escalas livremente. Ela chama uma tool de disponibilidade e recebe slots válidos.
Preços
Serviços possuem versões de preço com vigência.
- Novas consultas usam o preço vigente.
- Mudanças futuras podem ser agendadas.
- Agendamentos confirmados preservam o preço aceito.
- Alterar preço emite evento, mas não dispara mensagens automaticamente.
- Um plugin futuro de campanhas poderá criar um rascunho sujeito a consentimento e aprovação.
- Campanhas em massa via WAHA ficam desabilitadas no beta.
Plugins
Plugins oficiais são pacotes revisados do monorepo e descobertos por catálogo estático gerado no build.
A primeira versão não instala pacotes npm arbitrários em produção. Integrações externas executam em serviços ou containers isolados.
Cada plugin declara:
- ID e versão.
- Compatibilidade.
- Capabilities e dependências.
- Permissões.
- Configuração.
- Rotas e contribuições de interface.
- Eventos e jobs.
- Ferramentas para agentes.
- Health check e classificação dos dados.
Eventos e jobs
PostgreSQL é a fonte da verdade e utiliza transactional outbox para publicar eventos.
BullMQ sobre Valkey é o primeiro transporte de jobs, sempre atrás dos contratos da plataforma.
O worker não possui um tenant global ativo. Cada job abre um contexto isolado para sua organização, valida os registros e destrói o contexto ao terminar.
Jobs possuem:
- Payload versionado.
organizationId confiável.
- Idempotency key.
- Timeout.
- Retry classificado.
- Backoff.
- Dead-letter durável.
- Controle de concorrência.
- Retenção.
Modelo de dados
O modelo cobre identidade, conta comercial, tenancy, contatos, catálogo, versões de preço, profissionais, disponibilidade, agenda, inbox, IA, notificações, campanhas futuras, CRM opcional e operação da plataforma.
Dados específicos de novos verticais entram em plugins próprios.
Segurança
Controles críticos incluem:
- Membership e permissões por organização.
- Row-Level Security quando aplicável.
- Testes entre organizações irmãs.
- Webhooks autenticados e deduplicados.
- Resolução do tenant pelo mapeamento interno da conexão.
- Credenciais criptografadas.
- Agentes sem acesso direto ao banco.
- Tools com menor privilégio.
- Proteção contra prompt injection.
- Constraints transacionais para evitar conflito de agenda.
- Rate limits e budgets por organização.
Desempenho
Metas são separadas por tipo de carga.
Dez mil conexões realtime, dez mil sessões de WhatsApp e dez mil execuções de IA são problemas diferentes e nunca serão tratados como a mesma promessa.
A primeira etapa terá metas mensuráveis de API, disponibilidade, webhook, filas e concorrência, validadas por testes de carga antes da comercialização.