São três regras de design. Os dados fluem em uma única direção. O score de confiança é calculado como média ponderada. Quando o score cai, as premissas de capital de giro e Capex mudam automaticamente.
Arquitetura do okrシート: design de 3 abas
Divida o modelo em três abas.
| Nome da aba | Papel | Fluxo de dados |
|---|---|---|
| OKR_Data | Entrada de KRs e cálculo de score | Envia apenas para Assumptions |
| Assumptions | Comutadores de cenário e premissas financeiras (DSO, Capex) | Envia para P&L, BS, CF |
| P&L / BS / CF | Demonstrações financeiras | Recebe apenas de Assumptions |
A unidirecionalidade preserva a integridade do modelo. Se o P&L referenciar OKR_Data diretamente, a dependência entre abas fica caótica e a auditoria fica impraticável. A aba Assumptions centraliza toda premissa financeira, de modo que uma mudança de cenário se propague coerentemente pelas três demonstrações.
Campos FP&A mínimos em cada linha do okrシート
John Doerr define em Measure What Matters (Portfolio, 2018), capítulo 4: "Um Key Result deve permitir julgamento independente sobre sua realização em relação aos demais KRs". Essa independência, traduzida para planilha, exige no mínimo 7 colunas por linha.
| Coluna | Nome do campo | Tipo | Exemplo |
|---|---|---|---|
| A | KR_ID | Texto | 2026Q3-VENDAS-01 |
| B | Descrição da meta | Texto | ARR R$ 80 mi |
| C | Valor-alvo | Número | 80.000 |
| D | Peso (0 a 1) | Número | 0,35 |
| E | Valor atual | Número | 54.000 |
| F | Taxa de progresso | Fórmula | =E2/C2 |
| G | Score de confiança | Número (entrada manual) | 0,72 |
| H | Data da última atualização | Data | 17/05/2026 |
O score de confiança (coluna G) é diferente da taxa de progresso (coluna F). Mesmo que o ARR esteja em 67% da meta, se a qualidade do pipeline caiu, a confiança pode ficar abaixo de 50%. Essa estimativa subjetiva é o que aciona o comutador de cenário.
A média ponderada do score vai para Assumptions!B3:
// Assumptions!B3: Média ponderada da confiança de KR
=SUMPRODUCT(OKR_Data!G2:G20, OKR_Data!D2:D20)
/ SUMPRODUCT(OKR_Data!D2:D20)
Segundo a documentação oficial do Google Sheets, SUMPRODUCT multiplica arrays elemento por elemento e soma o resultado; células vazias são tratadas como zero. Mesmo com 5 milhões de linhas em ARRAYFORMULA, recalcula em menos de 50 ms.
Cascata até o EBITDA
Com base no score de Assumptions!B3, você bifurca cenários.
// Assumptions!B4: Flag de cenário
=IF(B3>=0,75,"OnTrack",IF(B3>=0,55,"Caution","Downside"))
// Assumptions!B5: Premissa de receita mensal (R$ mil)
=IFS(B4="OnTrack", 4200, B4="Caution", 3600, B4="Downside", 2900)
Em Q2 2026, a média ponderada do score de KR foi 75,7% — OnTrack. No início de Q3, KRs de roadmap de produto e sucesso do cliente atrasaram; o score caiu para 67,8%. O cenário comutou automaticamente para Caution.
| Cenário | Receita mensal | EBITDA trimestral (22%) | NOPAT (alíquota 30%) |
|---|---|---|---|
| OnTrack (≥75%) | R$ 4.200 mil | R$ 2.772 mil | R$ 1.940 mil |
| Caution (55–75%) | R$ 3.600 mil | R$ 2.376 mil | R$ 1.663 mil |
| Downside (<55%) | R$ 2.900 mil | R$ 1.914 mil | R$ 1.340 mil |
// P&L!C5: EBITDA trimestral
='P&L'!C3 * Assumptions!$B$8 // C3=receita trimestral, B8=margem EBITDA (0,22)
// P&L!C7: NOPAT
='P&L'!C5 * (1 - Assumptions!$B$9) // B9=alíquota efetiva (0,30)
Do score de confiança ao waterfall de FCFF
Aqui você chega ao nível que investidor merece ver. Um comutador de cenário apenas no P&L não completa o FCFF. A mudança na confiança de KR move DSO (dias de vendas em aberto) e o timing de Capex, que impactam diretamente o fluxo de caixa.
Premissa de DSO e integração ao Balanço Patrimonial
Se o KR de produto atrasa, a homologação do cliente demora e o prazo de recebimento estica. No cenário Caution, você eleva o DSO médio de 45 dias para 52 dias.
// Assumptions!B6: DSO (dias)
=IFS(B4="OnTrack", 45, B4="Caution", 52, B4="Downside", 60)
// BS!C15: Saldo de Contas a Receber
='P&L'!C3 / 90 * Assumptions!$B$6
// P&L!C3 = receita trimestral (Caution: R$ 10.800 mil)
// → AR: R$ 10.800 / 90 × 52 = R$ 6.240 mil
// BS!C16: ΔAR (variação)
=C15 - B15
// B15 = saldo de AR fim de Q2 (OnTrack: R$ 12.600/90×45 = R$ 6.300 mil)
// → ΔAR = R$ 6.240 - R$ 6.300 = ▲R$ 60 mil (WC melhora discretamente)
Ligação do timing de Capex
Não faz sentido executar 100% do Capex de crescimento enquanto o KR de roadmap atrasa. No cenário Caution, você adia 50% do Capex de infraestrutura de engenharia. No Downside, congela tudo.
// Assumptions!B7: Capex trimestral (R$ mil)
=IFS(B4="OnTrack", 4500, B4="Caution", 2250, B4="Downside", 0)
Waterfall de FCFF (aba CF)
// CF!C3: NOPAT (do P&L)
='P&L'!C7
// CF!C5: D&A (fixo, R$ 900 mil/trimestre)
=Assumptions!$B$10
// CF!C7: Variação de capital de giro (ΔAR com sinal invertido)
=-'BS'!C16
// CF!C9: Capex
=-Assumptions!$B$7
// CF!C11: FCFF
=C3 + C5 + C7 + C9
Lado a lado, os três cenários revelam uma estrutura que passa despercebida.
| Waterfall de FCFF (Q3 2026, R$ mil) | OnTrack | Caution | Downside |
|---|---|---|---|
| NOPAT | R$ 1.940 | R$ 1.663 | R$ 1.340 |
| D&A | R$ 900 | R$ 900 | R$ 900 |
| ΔWC (ΔAR invertido) | R$ 0 | +R$ 60 | +R$ 4.400 |
| Capex | ▲R$ 4.500 | ▲R$ 2.250 | R$ 0 |
| FCFF | ▲R$ 1.660 | +R$ 373 | +R$ 6.640 |
O FCFF do cenário Downside é maior que o do OnTrack porque o Capex foi congelado. Quando você explica isso em QBR para investidores, não cola dizer "no Downside o caixa está robusto". Você precisa dizer: "congelamos investimento de crescimento, sacrificando potencial futuro". É aí que ligar okrシート com FCFF tem valor real.
Da transição OnTrack para Caution, o delta de FCFF é +R$ 2.033 mil. O detalhamento fica assim:
| Bridge de FCFF (OnTrack → Caution, R$ mil) | Valor |
|---|---|
| ① NOPAT menor (receita ▲R$ 1.800 mil × 22% × 70%) | ▲R$ 277 |
| ② ΔWC melhora (AR ▲R$ 60 mil, libera capital) | +R$ 60 |
| ③ Capex adiado (R$ 4.500 → R$ 2.250) | +R$ 2.250 |
| Delta de FCFF | +R$ 2.033 |
Adicione essa tabela ao sumário de diretoria mensal e pronto: "confiança de KR caiu; Capex foi adiado; impacto no FCFF: +R$ 2.033 mil" vira explicação que transcende o número puro. KR é tema de OKR, mas a auditoria financeira acompanha até o balanço e o fluxo de caixa.
Alerta de obsolescência para manter o okrシート atualizado
Se o score de confiança dos KRs não for atualizado por 14 dias, o cenário em Assumptions continua rodando com premissas antigas. Em maio de 2026, muitos times largam a previsão trimestral sem notar que esqueceram de revisar o okrシート.
// Assumptions!D3: Dias sem atualização
=TODAY() - MAX(OKR_Data!H2:H20) // coluna H = data da última atualização
// Assumptions!E3: Mensagem de alerta
=IF(D3>14,
"⚠ Score de KR sem atualizar há " & D3 & " dias — valide o modelo",
"✓ Atualizado")
Coloque no topo da aba Assumptions e aplique formatação condicional em vermelho. Você abre o arquivo e identifica na hora se há dados velhos. Com SUMIFS é possível separar KRs por responsável e disparar alertas granulares.
// Verificação de obsolescência por responsável
=SUMPRODUCT((TODAY()-OKR_Data!H2:H20>14)*(OKR_Data!I2:I20="Maria"))
// coluna I = nome do responsável; se >0, há KRs desatualizados
Automatizando o loop de atualização
O design acima com SUMPRODUCT e arquitetura de 3 abas funciona puro em Google Sheets. Mas manter 8 ou mais KRs atualizados toda semana é overhead operacional que não dá para ignorar. Ferramentas que se integram ao Sheets permitem receber entrada de score de confiança via Slack ou Google Form, gravar automaticamente em OKR_Data e disparar o recálculo em cascata: Assumptions → P&L → BS → CF tudo de uma vez. O alerta de 14 dias para de disparar, e a angústia pré-QBR ("os números batem?") diminui drasticamente.
Escolha um plano do ModelMonkey — funciona em Google Sheets e Excel.