- Nx 22.7 monorepo (pnpm 11.1, TypeScript 5.9, Node 24) - apps/api: NestJS 11 (CJS conforme CODING-RULES.md PGD-DB-004) - apps/web: React 19 + Vite 8 (ESM) - libs/shared/api-interface: Zod contract base - Docker Compose dev: Postgres 18, Valkey 8, MinIO, Mailpit - WDS artifacts: - design-artifacts/A-Product-Brief/ (5 docs canônicos + 16 dialogs) - design-artifacts/B-Trigger-Map/ (hub + 4 personas + feature impact) - Stack canon: STACK.md v2.2 + CODING-RULES.md v2.0 + brand.md - AGENTS.md + README.md como entrada para devs/agentes Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
8.6 KiB
Constraints — SAR (Força de Vendas)
Confirmed: 2026-05-26 Step: 10 — Constraints
Reposicionados como parâmetros de design — o que dá forma ao SAR. Fixo = certeza estratégica; Flexível = decidimos depois.
⚠️ Tensão estratégica explícita (flagueada por Saga)
O combo decidido:
- Concept ambicioso (4 cockpits + WhatsApp nativo + IA estratégica + multi-tenant + real-time)
- MVP em 3-4 meses
- Solo founder mode (Julian full-time até 1º cliente)
A matemática não fecha sem trade-off. Solo + 3-4 meses não comporta o concept completo no MVP.
Resolução proposta (a confirmar em Phase 3 PRD)
MVP mínimo defensível (refinar em Phase 3):
- ✅ Rep cockpit (Rafael — primária, mobile-first) — obrigatório
- ✅ Supervisor cockpit (Sandra — influenciadora-chave da venda) — obrigatório, mas em forma simplificada
- ✅ Arquitetura multi-tenant BD-por-workspace — fundacional, não dá pra adiar
- ✅ WhatsApp — versão básica (envio de notificações; recebimento e conversa bidirecional pode ser fase pós-MVP)
- 🟡 Dono cockpit (Daniel) — dashboard simples no MVP; IA estratégica entra pós-MVP (validar primeiro cliente)
- 🟡 Admin cockpit (Alice) — cadastros essenciais + pautas; editor no-code de campanhas entra pós-MVP
Justificativa: 1º cliente do MVP é referência interna ou parceiro próximo (não cold lead). Pode aceitar limitações em troca de preço/condições especiais. Quando o 1º cliente renova (north star MVP), Julian contrata 1-2 devs e completa IA + editor no-code + cockpits ricos.
Alternativa (se o trade-off for inaceitável):
- Reduzir solo period — contratar 1 dev mesmo antes do 1º cliente
- OU esticar MVP para 5-6 meses
- OU reduzir concept (sacrificar 1 cockpit ou um diferencial)
Timeline
Fixo
- MVP em produção com 1º cliente real: 3-4 meses (a partir de 2026-05-26)
- North star MVP: 1º cliente renova em mês 6-7
- Janela de mercado: 2-3 anos para entrincheirar antes de saturação SaaS força de vendas BR
- 10 clientes pagantes: ~mês 12
Flexível
- Ordem das features dentro do MVP
- GA público / fim de beta (depende de qualidade do MVP)
- Sem deadline externo rígido (não há feira/contrato amarrando data)
Implicação de design
"Build to learn, not to plan." MVP minimalista, instrumentado para medir desde dia 0.
Budget
Fixo
- Stakes: small-business (PME software house, 11-50 pessoas) — não é Series A
- CAC payback < 12 meses (Step 8) — limita o quanto se pode gastar para adquirir cada cliente
- Aquisição inicial baixa-fricção: indicação + SEO antes de ads pagos pesados
- Sem orçamento para infra de luxo — STACK.md self-host Proxmox já calibrado para isso
Flexível
- Tamanho do time escala com tração
- Investimento em marketing escala com receita
- Eventos/feiras escolhidos seletivamente
Implicação de design
Stack canônica self-host (Proxmox) + multi-tenancy bem feita = custo de infra por workspace baixíssimo. Crescimento sustentável.
Recursos humanos
Fixo (estado atual)
- Julian: PO + Tech Lead + Champion + único dev (solo founder mode até 1º cliente)
- Sem time de design dedicado — estreia em processo UX formal via WDS
- Atendimento/SDR inicial = Julian
Premissa pós-MVP (a confirmar quando 1º cliente fechar)
- Contratar 1-2 devs adicionais para acelerar IA + editor no-code + cockpits ricos
- Atendimento eventualmente separado
Flexível
- Quem são os devs adicionais (interno JCS / freelance / contratação)
- Timing de profissionalização do atendimento
⚠️ Implicação crítica
Solo founder mode é o constraint mais apertado do projeto. Toda decisão de escopo no MVP precisa respeitar isso. Tudo que "pode esperar pra fase 2" → vai pra fase 2.
Técnico — STACK.md v2.2 (FIXO por escolha do PO)
| Camada | Decisão |
|---|---|
| Runtime | Node 24 LTS · pnpm 11.1 · TypeScript 5.9 |
| Monorepo | Nx 22.7 (apps/api + apps/web + libs/) |
| Backend | NestJS 11.1 · Prisma 7 · PostgreSQL 18 · BullMQ · nestjs-cls |
| Frontend | React 19.2 · Vite 8 · Ant Design 6.4 · TanStack Query/Router · Zustand |
| API | REST + OpenAPI 3.1 + RFC 9457 · Zod 4 (catalog) · nestjs-zod |
| Auth | master-login (IdP próprio) · jose · argon2id |
| Multi-tenancy | BD-por-workspace (ADR 0006) |
| Real-time | Socket.IO 4 + redis-adapter (Valkey) · SSE nativo NestJS |
| Secrets | HashiCorp Vault (KV v2) self-host |
| Observabilidade | Pino + OpenTelemetry · Grafana Cloud LGTM · Sentry |
| Filas | BullMQ 5.77 |
| Uploads | MinIO (S3-compat) + ClamAV worker · sharp |
| Resend (SaaS) + React Email via BullMQ | |
| Infra | Proxmox on-prem BR (ADR 0004) · Docker Compose · Ansible deploy |
| CDN | Cloudflare + Nginx para SPA estática |
Flexível (decidir em Step 29 — Integrations)
- Provider de pagamento: Stripe / Iugu / Pagar.me / Gerencianet
- Provider de IA: OpenAI / Anthropic / local
- WhatsApp Business API: oficial Meta vs intermediário (Z-API, Twilio, Gupshup)
- Analytics de produto: PostHog self-host? Amplitude? Misto?
Implicação de design
"STACK.md é fonte da verdade. Nada de propor PostgREST, Supabase, Next.js, trocar AntD por shadcn." Decisões fora da tabela exigem RFC.
Brand — brand.md (FIXO por escolha do PO)
Fixo
- Paleta: JCS Blue
#004a99como único destaque cromático - Tipografia: Plus Jakarta Sans (pesos 400/500/600/700/800)
- Ícones: Font Awesome 6.4.0
- Gráficos: Chart.js
- Radius: 12px (md) / 20px (lg)
- Sombra padrão:
0 4px 25px rgba(0,0,0,0.05) - Layout base: topbar 80px + sidebar 260px fixa (cockpits Sandra/Daniel/Alice)
- Tom visual: Apple-inspired, clean, minimalista
Flexível (Phase 6 Design System detalha)
- Variações por cockpit — especialmente Rafael mobile-first (navegação inferior, single-column, touch-friendly)
- Tokens secundários (estados de feedback) dentro da paleta JCS
- Tom de voz textual (Steps 13-15)
- Imagery (Step 25)
- Dark mode (desejável especialmente Rafael à noite)
Implicação de design
brand.md é a base. Phase 6 (Design System) estende com variantes por cockpit, não substitui.
Regulatório / LGPD (FIXO — STACK.md §22)
| Item | Decisão |
|---|---|
| Base legal | Execução de contrato (cliente-empresa é controlador; SAR é operador) |
| Isolamento | Físico — cluster PG dedicado por workspace (ADR 0006) |
| Datacenter | BR (Proxmox on-prem) — elimina exposição ao CLOUD Act US |
| PII | Criptografada — MinIO SSE + pgcrypto |
| Logs | Redact agressivo (CPF, cardNumber, password, authorization, cookie) |
| Auditoria | Art. 18 LGPD (acesso/correção/eliminação de dados pessoais) |
| Hash em targeting de flags | Para feature flags com info pessoal |
Implicação adicional para WhatsApp + IA
- DPA (Data Processing Agreement) obrigatório com providers externos (Meta, OpenAI/Anthropic)
- Hashar dados de cliente antes de mandar para IA (não enviar nome, CPF, telefone real)
- WhatsApp: cliente do SAR opt-in explícito do contato final (cliente-do-cliente) antes do primeiro envio
Dependências externas (risco fixo, mitigação flexível)
| Dependência | Risco | Mitigação |
|---|---|---|
| Meta WhatsApp Business | Mudança de regras → integração quebra | Arquitetura plug-in; alternativas Telegram/SMS no roadmap |
| OpenAI / Anthropic / IA externa | Mudança de pricing, quota, política | Abstração de provider; capacidade de trocar |
| Resend (email) | SaaS pode mudar tier | Migrar para SES/Mailgun; abstração de envio |
| Cloudflare (CDN) | SaaS muda preço/política | Migrar para outro CDN; impacto baixo |
| Provider BR de pagamento | Falha/lentidão pode bloquear cobrança | Multi-provider com fallback (Step 29) |
Resumo: o que o constraint map nos diz
- MVP precisa ser radicalmente priorizado — solo + 3-4 meses não comporta o concept completo. Refinar em Phase 3 PRD.
- Rafael + Sandra são obrigatórios no MVP; Daniel e Alice entram em forma simplificada.
- IA estratégica entra pós-MVP — depois do 1º cliente validado.
- Editor de campanhas no-code (Alice) entra pós-MVP — pode usar tela direta no MVP.
- Stack canon JCS + brand.md são parâmetros, não restrições negativas — eliminam decisões e aceleram desenvolvimento.
- LGPD by design alinha com o concept multi-tenancy físico — não é overhead, é diferencial competitivo.
- Solo founder mode é o constraint mais apertado — todo escopo precisa respeitar isso. Tudo que pode esperar → espera.