# Fast Forward Design (FFD) — Especificação Técnica e Operacional para LLMs/IA

> **Contexto & Metadados**  
> - **Autor / Criador:** [Rodrigo Yuji Sato](https://rodrigosato.com.br)  
> - **URL Canônica:** [https://rodrigosato.com.br/ffd/](https://rodrigosato.com.br/ffd/)  
> - **Repositório Base:** `rysato-site/ffd`  
> - **Framework Interno:** `rysato-site/ffd/.framework`  
> - **Tipo:** Framework de ideação, prototipagem síncrona e validação comportamental em tempo real acelerado por LLMs.  
> - **Finalidade deste documento:** Servir como base de conhecimento de alta densidade semântica para modelos de linguagem (LLMs) e agentes autônomos compreenderem, facilitarem, operarem e gerarem artefatos do método FFD sem ambiguidades.

---

## 1. Tese Central e Diferenciação Estrutural

O **Fast Forward Design (FFD)** comprime semanas de discovery, prototipagem e validação em uma **única sessão síncrona (45 a 90 minutos)**, mantendo o **público-alvo real presente na sala** reagindo ao vivo a protótipos funcionais descartáveis gerados por IA, **sem nenhum deploy público**.

```mermaid
flowchart LR
    A["Ruído Inicial<br/>(Desejo Vago)"] --> B["Etapa 0: Coleta<br/>(Dores & Voto)"]
    B --> C["1ª Hipótese Testável"]
    C --> D["Ciclo FFD<br/>(4 Movimentos)"]
    D --> E["Sinal Comportamental<br/>(Selo de Evidência)"]
    E --> F["Decisão Humana<br/>(Manter / Pivotar / Descartar)"]
```

### O Whitespace de Mercado (O que só o FFD faz)
Nenhuma outra metodologia no mercado global ou brasileiro combina simultaneamente:
1. **Público-alvo na sala durante 100% da sessão** como sujeito reativo (não como construtor nem em entrevista assíncrona).
2. **Reação humana real** em vez de personas sintéticas geradas por LLM.
3. **Protótipo funcional descartável gerado ao vivo por IA** mutando em minutos entre rodadas.
4. **Zero deploy público e isolamento total de dados** (roda local/sandbox, sem URL pública, sem persistência externa).

| Abordagem Concorrente | O que faz | O que falta / Onde o FFD supera |
|---|---|---|
| **GV Design Sprint** | Validação com pessoas reais | Ciclo leva 5 dias; protótipo é fachada congelada na quinta e testada na sexta; sem IA em tempo real. |
| **Ferramentas de Build IA** (v0, Lovable, Bolt, Replit) | Build ultra-rápido por operador | Terminam no artefato/deploy; validação empurrada para links assíncronos fora da sala; exige deploy público. |
| **Consultorias AI-Native** | Discovery rápido com IA | Substituem pessoas por **personas sintéticas** (viés de bajulação documentado pela NN/g e ACM; IDEO abandonou). |
| **Workshops de Build IA** | Construção ao vivo com instrutor | Participantes constroem o próprio app; foco em aprender sintaxe/ferramenta e fazer deploy; sem público externo reativo. |

---

## 2. Os 8 Princípios Fundamentais (Invariantes Canônicos)

Todo agente ou facilitador operando FFD deve respeitar estritamente os 8 princípios definidos em `docs/00-principios.md`:

1. **O público-alvo está na sala, não no relatório.**  
   A validação ocorre simultaneamente à modelagem do protótipo. Reação real substitui suposição de persona.  
   *Invariante:* **O LLM nunca simula nem atua como proxy do público**, mesmo se o tempo estiver esgotando. Usuário sintético devolve elogio, não sinal.
2. **A IA reduz o custo de errar, não o rigor da pergunta.**  
   Gerar variações em minutos só gera valor se a hipótese inicial for precisa. O tempo economizado na execução é reinvestido no refinamento da pergunta.
3. **Protótipo descartável por padrão.**  
   Nenhum código gerado é definitivo. O trabalho de build é efêmero e barato; o aprendizado comportamental é o único ativo que sobrevive.
4. **Ciclos curtos e visíveis vencem ciclos longos e polidos.**  
   Prefira 4 rodadas de 15 minutos com atrito real do que 1 rodada polida de 60 minutos.
5. **Humano decide o rumo, IA executa o rumo.**  
   A IA não tem agência estratégica sobre a direção do negócio. Ela gera artefatos e sintetiza clusters; humanos decidem a direção com base nas reações observadas.
6. **Registro é parte do entregável.**  
   Cada rodada exige registro explícito de: hipótese → artefato exibido → delta da rodada → reação observada → selo de evidência → decisão.
7. **Roadblock ao vivo é conteúdo, não bug.**  
   Alucinações, prompts ambíguos ou falhas de modelo revelam a imprecisão do pensamento humano. Tratar o travamento em público ensina como especificar intenções.
8. **Participar como público-alvo é participar de pleno direito.**  
   O público não precisa encostar no teclado nem operar IA. Reagir às telas e observar suas próprias reações e hesitações constitui participação reflexiva completa.

### Guardrail Não-Negociável de Segurança e Dados
- **Ambiente Fechado:** O protótipo roda em localhost, `file://` ou sandbox estritamente isolada (ex: sessão local do operador projetada na tela).
- **Zero Coleta de Dados Reais:** Proibido coletar dados pessoais reais (LGPD/compliance).
- **Sem Deploy Público:** Sem links indexáveis, sem URLs permanentes, sem CDN externa. Destruição do protótipo ao fim da sessão. Apenas o log de decisões persiste.

---

## 3. Arquitetura do Ciclo e Máquina de Estados

O FFD opera em duas macro-etapas: a **Etapa 0 (Coleta)** (executada 1 vez antes das rodadas quando não há hipótese prévia) e o **Ciclo Contínuo de Rodadas** (10 a 20 min por rodada, 3 a 5 rodadas por sessão de 90 min).

```mermaid
stateDiagram-v2
    [*] --> Etapa0_Coleta: Início da Sessão (Intenção Vaga)
    Etapa0_Coleta --> Movimento1_Enquadrar: 1ª Hipótese Derivada
    
    state "Ciclo de Rodada (10-20 min)" as Ciclo {
        Movimento1_Enquadrar --> Movimento2_Gerar: Hipótese Aprovada no Checklist
        Movimento2_Gerar --> Movimento3_Expor: Protótipo Congelado (HTML/UI)
        Movimento3_Expor --> Movimento4_Decidir: Observação Comportamental
        Movimento4_Decidir --> Movimento1_Enquadrar: Manter / Pivotar (Próxima Hipótese)
    }
    
    Movimento4_Decidir --> Fechamento: Tempo Esgotado ou Hipótese Validada
    Fechamento --> [*]: Log da Sessão Consolidado
```

---

### Etapa 0: Coleta (Ruído → Fato)
*Duração:* ~30 a 40 minutos (no piloto FIA / sessões iniciais).  
*Objetivo:* Transformar uma intenção-ruído abstrata em uma hipótese testável validada pelo grupo.

```
Fluxo da Coleta:
[Intenção Vaga] 
      │
      ▼
1. INSTRUMENTO (Formulário aberto: 1 pergunta crua de dor sem opções)
      │
      ▼
2. CLUSTERIZAÇÃO (IA agrupa dores semânticas em tempo real)
      │
      ▼
3. VOTO DA SALA (Público elege a dor prioritária; descarta o resto)
      │
      ▼
4. PRIMEIRA HIPÓTESE (Dor eleita convertida em comportamento + contexto)
```

- **Critério da Dor Válida:** Deve descrever **comportamento observável + contexto**, nunca um desejo abstrato.
  - *Inválido (desejo):* "Gostaria de ter mais tempo para organizar meus clientes."
  - *Válido (comportamento + contexto):* "O mentor passa o domingo reconstruindo de cabeça o status de cada cliente porque não tem uma visão centralizada de quem está travado."

---

### O Loop dos 4 Movimentos

#### Movimento 1: Enquadrar (Framing) — `2-3 min`
Define a pergunta/hipótese da rodada.
- **Régua de Dimensionamento de Hipótese (Checklist de 5 Itens):**
  1. `[ ]` **Uma frase testável:** Formato "O público faz/entende X quando exposto a Y".
  2. `[ ]` **Artefato em 3 a 5 min:** O LLM consegue gerar o código/artefato no tempo limite.
  3. `[ ]` **Tarefa em 5 a 8 min:** A audiência consegue executar a ação no tempo limite.
  4. `[ ]` **Falha visível e observável:** Critério objetivo que indica se o público falhou na ação.
  5. `[ ]` **Uma única variável modificada:** Isola a mudança em relação à rodada anterior (se alterar mais de uma, obriga justificativa no log).
- *Saída:* Frase-hipótese aprovada.

#### Movimento 2: Gerar (Geração Assistida) — `3-5 min`
O operador orienta o LLM na confecção do artefato mínimo.
- **Isolamento de Variável:** Altere apenas 1 elemento estrutural por vez (ex: apenas a ordenação dos dados, ou apenas o botão de ação). Mudar layout *e* rótulo simultaneamente invalida a atribuição causal na fase de decisão.
- **Filtro de Falsa Diversidade:** Se gerar múltiplas opções para comparação (ex: 3 telas), garanta que testam hipóteses distintas. Três telas mudando apenas cor/fonte representam 1 teste, não 3.
- *Saída:* Arquivo executável único (HTML/CSS/JS inline).

#### Movimento 3: Expor (Exposição ao Público) — `5-8 min`
O protótipo é projetado ou entregue para interação real.
- **Regra de Ouro 1 — Protótipo Congelado:** Proibido alterar código durante a exposição. Editar ao vivo em resposta a um comentário contamina o sinal do teste.
- **Regra de Ouro 2 — Tarefa Concreta, Nunca Opinião:**
  - *Proibido:* "O que vocês acharam desta tela?" (Gera respostas sociais polidas e viesadas).
  - *Obrigatório:* "Esta é a carteira de clientes. Aponte em 10 segundos quem está mais travado sem me dar explicações."
- **Exceção 1 (Contraste pós-tarefa):** Notas de percepção (ex: nota Netflix `-1`, `+1`, `+2`) só são válidas se aplicadas **estritamente após** a execução da tarefa comportamental, medindo o delta entre o que o usuário fez e o que ele relata.
- **Exceção 2 (Intenção de Pagamento):** Quando a transação real for inviável eticamente, a pergunta deve ser numérica e direta: "Quanto você pagaria agora?", nunca "Você pagaria por isso?".
- *Saída:* Notas de campo (onde travaram, hesitações, desvios de navegação, perguntas espontâneas).

#### Movimento 4: Decidir (Síntese e Decisão) — `2-4 min`
Julgamento humano assistido pela IA na síntese das evidências.
- **Classificação Obrigatória — Selo de Evidência:**
  - `forte`: Tarefa executada na prática; comportamento convergiu entre os participantes; contexto amostral suficiente para o risco da decisão.
  - `direcional`: Houve sinal comportamental convergente, mas em amostra pequena/enviesada (ex: uma turma fechada). Orienta o próximo passo, não valida o produto final.
  - `inconclusivo`: Apenas opiniões sociais; comportamento contraditório ou disperso; falha na execução da tarefa. Obriga repetição ou pivô (decisão `repetir` ou `pivotar`); não gera aprendizado válido.
- **Ações Possíveis:**
  - `Manter`: Hipótese confirmada; avança para aprofundamento ou consolidação.
  - `Pivotar`: Sinal indicou atrito ou direção alternativa; ajusta a hipótese.
  - `Descartar`: Hipótese rejeitada; retorna à dor de negócio ou encerra a trilha.
  - `Repetir`: Exclusivo do selo `inconclusivo`. Reexecuta a mesma hipótese e o mesmo artefato em nova rodada, corrigindo só a condição de exposição (tarefa, amostra ou tempo); o Delta registra o que mudou na condição.
- *Saída:* Entrada no Log da Sessão + Definição da próxima hipótese.

---

## 4. Matriz de Papéis e Dinâmica Operacional

```mermaid
classDiagram
    class Facilitador {
        +Controla o cronômetro
        +Garante rigor do Framing
        +Aplica tarefas concretas
    }
    class Operador_IA {
        +Traduz hipóteses em prompts
        +Opera o LLM em tempo real
        +Gera artefatos em <5 min
    }
    class Observador {
        +Registra hesitações e cliques
        +Audita dados comportamentais
        +Alimenta o log de sessão
    }
    class Publico_Alvo {
        +Executa tarefas sem explicação
        +Fornece reações autênticas
        +Não opera ferramentas de IA
    }
```

- **Padrão Operador Único:** Muito comum em salas de aula ou mentorias individuais (ex: Rodrigo Sato no Piloto FIA). O facilitador assume a operação da IA e a condução da sala.
  - *Requisito:* Exige buffer maior de tempo e plano B pré-estruturado, pois o operador não tem apoio para absorver atrasos técnicos.

---

## 5. Gestão de Roadblocks (Critérios de Corte e Playbook)

O FFD categoriza falhas em tempo real em dois grupos mutuamente exclusivos com regras operacionais distintas:

| Tipo de Roadblock | Exemplo | Tratamento Operacional | Justificativa |
|---|---|---|---|
| **Infraestrutural** | API fora do ar, token esgotado, erro de porta, build quebrado por dependência. | **1 tentativa única.** Falhou? Acionar Plano B imediatamente (workspace pré-construído). | Não ensina nada sobre o negócio; queima o tempo da sessão. |
| **De Entendimento / Tradução** | O LLM interpretou o prompt de forma inesperada; gerou estrelas de 1 a 5 em vez de botão binário. | **Iterar até esgotar o buffer da rodada.** Aplicar o Playbook de 3 passos na frente da sala. | É o cerne pedagógico do método: revela falhas de especificação humana. |

### Playbook do Roadblock de Entendimento (Origem: *Improv Prototyping*)
Tempo: ~2 minutos, conduzido abertamente com a sala:
1. **Narrar:** O operador lê o prompt e aponta a tela em voz alta: *"Pedi X. A IA gerou Y. Reparem na diferença."*
2. **A Sala Diagnostica:** O operador pergunta ao grupo: *"O que no meu pedido deixou margem para essa ambiguidade?"* (Gera aprendizado imediato sobre formulação de requisitos).
3. **Yes-And:** A falha é convertida na próxima hipótese ou refinamento: *"Então isso nos mostra que a próxima rodada precisa testar Z."*

---

## 6. Contrato Técnico para Geração de Protótipos (Zero-Network Skeleton)

Todo protótipo de interface gerado por LLMs no contexto de uma sessão FFD **deve seguir rigorosamente** as especificações abaixo:

- **Arquivo Único:** `index.html` autocontido (HTML + CSS + JS inline).
- **Zero Rede:** Sem tags `<link rel="stylesheet">`, sem `<script src="...">`, sem fontes do Google Fonts, sem bibliotecas de CDN (sem Tailwind via CDN, sem React/Vue compilado).
- **Sem Fetch / Backend:** Nenhuma chamada AJAX/REST/GraphQL. Dados simulados ficam em constantes JS inline (`const MOCK_DATA = [...]`).
- **Compatibilidade Local:** Deve abrir perfeitamente via protocolo `file:///` no navegador.
- **Viewport:** Layout desenhado para caber em 1 viewport (sem rolagem desnecessária durante a tarefa).

### Template Canônico de Código para o LLM

```html
<!doctype html>
<html lang="pt-BR">
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <title>FFD - Protótipo Rodada N</title>
  <style>
    :root {
      --ffd-bg: #FFFFFF;
      --ffd-text: #232222;
      --ffd-accent: #F15D25;
      --ffd-muted: #6A6A6A;
      --ffd-line: #E2E2E2;
    }
    * { box-sizing: border-box; margin: 0; padding: 0; }
    body {
      font-family: system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
      color: var(--ffd-text);
      background: var(--ffd-bg);
      padding: 24px;
      max-width: 600px;
      margin: 0 auto;
      line-height: 1.5;
    }
    /* Estilos funcionais mínimos da tela */
    .item-row {
      display: flex;
      justify-content: space-between;
      align-items: center;
      padding: 12px;
      border-bottom: 1px solid var(--ffd-line);
      cursor: pointer;
    }
    .item-row:hover { background: #FDECE7; }
    .badge {
      background: var(--ffd-accent);
      color: #fff;
      padding: 4px 8px;
      border-radius: 4px;
      font-size: 12px;
      font-weight: bold;
    }
  </style>
</head>
<body>
  <main id="app">
    <!-- Componentes da hipótese específica -->
  </main>

  <script>
    // Interação funcional estritamente inline para viabilizar a tarefa
    document.addEventListener('DOMContentLoaded', () => {
      // Mock state e manipuladores de evento
    });
  </script>
</body>
</html>
```

---

## 7. Diretrizes Operacionais e Limites para Agentes de IA

Quando um agente LLM atua no ecossistema FFD, deve obedecer à seguinte matriz de responsabilidades:

| Ação do Agente | Permitido? | Regra de Execução |
|---|---|---|
| Gerar código do protótipo mínimo | **SIM** | Seguir o Skeleton Zero-Network; respeitar tempo de build de 3 a 5 min. |
| Sintetizar dores em clusters na Coleta | **SIM** | Agrupar dores textuais cruas sem alterar a intenção dos participantes. |
| Sugerir 2 a 3 hipóteses candidatas | **SIM** | Sugestões baseadas nas notas de observação; humano decide qual escolher. |
| **Simular reação do público-alvo** | ❌ **PROIBIDO** | **Violação do Princípio #1.** Se a sala estiver calada ou sem tempo, classificar como `inconclusivo`. Nunca preencher com persona sintética. |
| **Decidir rumo ou pivô do produto** | ❌ **PROIBIDO** | **Violação do Princípio #5.** A decisão estratégica é estritamente humana. |
| Alterar mais de uma variável sem aviso | ❌ **PROIBIDO** | Exige isolar uma variável ou documentar expressamente a exceção no log. |
| Fazer deploy ou criar links públicos | ❌ **PROIBIDO** | Violação do Guardrail de Dados. Tudo deve permanecer em ambiente isolado. |

### Fricção de Ferramenta vs. Fricção de Tradução
- **Fricção de Ferramenta** (erros de sintaxe, flags de CLI, formatação de saída): Deve ser eliminada com templates prontos, snippets e automações.
- **Fricção de Tradução** (como converter uma hipótese de negócio em especificação precisa para a IA): **Não deve ser mascarada**. É onde reside a aprendizagem real de produto.

---

## 8. Schema Canônico do Log de Sessão (O Entregável que Sobrevive)

Ao término de cada rodada e ao final da sessão, o log deve ser atualizado. É o único arquivo que persiste após o descarte dos protótipos.

```markdown
## Sessão
- **Data:** AAAA-MM-DD
- **Facilitador / Operador:** Nome
- **Público Presente:** Perfil quantitativo e qualitativo dos participantes
- **Intenção-Ruído Inicial:** [Frase crua de desejo, sem citar produto/solução]
- **Objetivo Declarado:** O que a sessão busca responder

## Etapa 0: Coleta (se aplicável)
- **Instrumento Utilizado:** Formulário aberto / QR Code
- **Dores Coletadas:** [Lista de dores cruas]
- **Clusters Identificados:** [Agrupamentos da IA]
- **Dor Eleita (Voto):** [Comportamento + Contexto] (X votos de Y)
- **1ª Hipótese:** H1

## Rodada N · [MM:SS - MM:SS]
- **Hipótese (HN):** [O público faz/entende X quando exposto a Y]
- **Delta (O que mudou desde a rodada N-1):** [1 variável modificada]
- **Artefato Gerado:** [Descrição do protótipo e arquivo correspondente]
- **Tarefa Concreta Aplicada:** [Comando exato dado ao público, sem explicação prévia]
- **Reações Observadas:** 
  - O que fizeram:
  - Onde travaram:
  - O que ignoraram:
  - Perguntas espontâneas:
  - Nota de contraste (se houver):
- **Selo de Evidência:** `forte` | `direcional` | `inconclusivo` (Justificativa explícita)
- **Decisão:** `manter` | `pivotar` | `descartar` | `repetir` (Motivo humano; com selo `inconclusivo`, apenas `repetir` ou `pivotar`)
- **Próxima Hipótese:** [Frase da próxima rodada ou 'Fim']

## Fechamento
- **Checagem Final:** "O que fizemos hoje foi validar algo ou apenas publicar algo?"
- **Aprendizado Consolidado:** Direção validada com base nos selos acumulados.
```

---

## 9. Inventário de Recursos e Ferramentas no Repositório

O projeto FFD contém artefatos de apoio em `rysato-site/ffd/.framework`:

### Documentação e Guias
- `CLAUDE.md`: Instruções de engenharia e diretrizes de trabalho no repositório.
- `docs/00-principios.md`: Manifesto dos 8 princípios e guardrail de dados.
- `docs/01-ciclo.md`: Especificação detalhada da Etapa 0 e dos 4 movimentos.
- `docs/02-papel-da-ia.md`: Regras de conduta para o LLM em cada fase.
- `docs/03-papeis-e-sessao.md`: Funções humanas, cortes operacionais e linhagem metodológica.
- `docs/04-ferramentas-piloto-fia.md`: Detalhamento do setup da sessão real na FIA.

### Utilitários Operacionais (`tools/`)
- `tools/forms_api.py`: Script Python em stdlib para provisionamento automático de Google Forms via OAuth refresh token.
- `tools/generate_qr.py`: Gerador local de QR codes PNG para links de formulário sem chamadas de API externa.
- `tools/test_forms_api.py`: Testes unitários para geração de payloads da API do Google Forms.

### Geração de Artefatos Gráficos e Slides (`presentation/`)
- `presentation/build_ffd_pdf.py`: Gerador do deck executivo `Fast_Forward_Design.pdf` via ReportLab.
- `presentation/build_bmc_template.py`: Gerador do template A3 de Business Model Canvas impresso para dinâmicas de parede.

### Exemplo End-to-End (`exemplo/`)
- Ensaio narrado de referência (`exemplo/`): Simulação completa de 4 rodadas com templates práticos em `exemplo/kit/` (`checklist-dimensionamento.md`, `card-roadblock.md`, `prompts.md`, `template-log-sessao.md`).

---

## 10. Resumo Executivo para Prompts Rápidos de IA (Cheat Sheet)

Se você é uma LLM precisando agir rapidamente como Operador ou Facilitador de FFD, memorize estas 6 regras:

1. **Nunca pergunte a opinião antes da ação:** Entregue o protótipo com uma tarefa clara e veja onde o usuário clica ou trava.
2. **Nunca use personas sintéticas:** Exposição sem reação de pessoa real na sala é classificada como selo `inconclusivo`.
3. **Mude 1 coisa por rodada:** Isole a variável de teste para que a síntese tenha valor científico.
4. **O protótipo é descartável e offline:** Use HTML/CSS/JS puro num único arquivo, sem CDN, sem fetch, aberto em `file://`.
5. **Roadblock de entendimento é conteúdo:** Se o prompt der errado, narre o que aconteceu, peça para a sala diagnosticar e transforme o erro na próxima hipótese.
6. **Classifique a evidência com honestidade:** Grupos pequenos em sala de aula geram evidência `direcional`, não validação de mercado em escala.
