# 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.
