# 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 | | Email | 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 `#004a99` como ú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 1. **MVP precisa ser radicalmente priorizado** — solo + 3-4 meses não comporta o concept completo. Refinar em Phase 3 PRD. 2. **Rafael + Sandra são obrigatórios** no MVP; Daniel e Alice entram em forma simplificada. 3. **IA estratégica entra pós-MVP** — depois do 1º cliente validado. 4. **Editor de campanhas no-code** (Alice) entra pós-MVP — pode usar tela direta no MVP. 5. **Stack canon JCS + brand.md são parâmetros, não restrições negativas** — eliminam decisões e aceleram desenvolvimento. 6. **LGPD by design** alinha com o concept multi-tenancy físico — não é overhead, é diferencial competitivo. 7. **Solo founder mode é o constraint mais apertado** — todo escopo precisa respeitar isso. Tudo que pode esperar → espera.