Caso 01SaaS com IA generativa

Film Factory

Uma plataforma que leva uma ideia até o filme exportado. São 17 etapas de pré-produção em que a IA escreve e desenha, e cada etapa aprovada vira contexto da seguinte.

Abrir o Film Factory
Meu papel
Produto, engenharia e prompts. Projeto solo, com agentes de código.
Período
Junho a outubro de 2026, 732 commits
Situação
No ar, com conta grátis e planos pagos
Stack
Next.js, NestJS, PostgreSQL, pg-boss, Cloudflare R2 e SwiftUI

Em 30 segundos

Ferramentas de vídeo com IA geram um plano bonito e esquecem o personagem no plano seguinte. Construí o Film Factory para resolver isso antes da câmera: a história passa por documentos encadeados, do brainstorming ao roteiro técnico, e só depois vira imagem e vídeo.

Escrevi a especificação, tomei as decisões de produto e de arquitetura e revisei o que os agentes produziram. Este caso mostra como o contexto chega ao modelo, o que eu tirei das mãos dele e quanto custa.

17
etapas de pré-produção encadeadas, para curta, longa e série
US$ 5,96
para pré-produzir um curta de 63 s, somando texto e imagens
3 mil
testes automatizados, entre API, web e app de iPhone
28
decisões de arquitetura registradas em ADRs

O que sai dele

Três filmes de projetos que passaram pelo Film Factory. Nenhum quadro foi filmado.

São de julho de 2026, anteriores às correções de prompt que aparecem mais abaixo. Deixo aqui porque são o que o produto entregava naquele momento, com os defeitos junto. Os dois horizontais são a exportação direta do produto. Cada trecho toca sem som, e o botão abre o filme inteiro.

Fronteira Estelar60 s. Ficção científica em anime.
A Caixa2 min. Anime.
Soco Devolvido1 min. Live action, vertical.
Editor do Film Factory com a linha do tempo de um curta, clipes na trilha de vídeo e forma de onda na trilha de áudio
O editor do filme: biblioteca de clipes, monitor, inspetor e timeline com camadas de vídeo e áudio. Tela real do produto, com um projeto de demonstração.
O app nativo em SwiftUI, com as mesmas etapas da web e atividade ao vivo na tela de bloqueio enquanto uma geração roda.
Tela de abertura do app, com a marquise de um cinema à noite e o título Do conceito ao filme, com IA
Storyboard de uma cena no iPhone, com a grade de quadros desenhados pela IA
Editor do filme no iPhone, com monitor, controles e linha do tempo
Tela de bloqueio do iPhone com a atividade ao vivo de uma geração em 64%

Como o contexto chega ao modelo

Até o Roteiro Final, cada documento aprovado entra no contexto do seguinte. Depois dele eu fecho a lista, e cada etapa recebe só o que precisa.

Escolha uma etapa para ver o que entra no prompt dela. As barras mostram quantos documentos cada uma recebe.

Etapa 13 de 17

Roteiro Final

O roteiro em master scene, a fonte narrativa de tudo o que vem depois.

Quem faz
Modelo de texto
Recebe 12 documentos
  • Configuração
  • Brainstorming
  • Logline
  • Sinopse e argumento
  • Tom e Visual
  • Universo da Obra
  • Ficha de Personagens
  • Mapa de Locações
  • Escaleta
  • One-liner
  • Rascunhos
  • Mapa de Continuidade

É o ponto de maior contexto do pipeline: doze documentos. Daqui em diante a lista fecha, para o material exploratório não competir com o roteiro.

Tela de Roteiro Final no app de iPhone do Film Factory

Mandar tudo parece o caminho seguro, mas piorava o resultado. Com Roteiro Final, Script Breakdown e Roteiro Técnico juntos, o Storyboard precisava conciliar três níveis de descrição do mesmo plano. Com a lista fechada, cada assunto tem uma fonte de verdade. A lista usada em cada geração fica gravada no job, para a tela mostrar exatamente o que foi enviado, mesmo que o projeto mude enquanto ele roda.

Verificar sem alarme falso

A verificação de coesão cruza os documentos aprovados e aponta contradições. Para ela não gritar à toa, escrevi as regras do que conta: omissão não é contradição, o brainstorming fica de fora por ser exploração, e as notas do autor valem como fato. Cada contradição volta em JSON com a origem, o alvo e a correção sugerida, e o autor aprova ou não.

O que tirei das mãos do modelo

Numa auditoria de ponta a ponta, as falhas se concentraram em número, identificador, classificação e ordem. Passei tudo isso para o código.

O exemplo mais claro é a duração de cada plano. O modelo não informa mais esse número: ele estima só o tempo de ação que não acontece junto com a fala, e o sistema conta as palavras de cada fala, aplica o ritmo do roteiro e calcula o total. O resultado é um número que dá para auditar.

O modelo decide

  • O texto das cenas e das falas.
  • A técnica de cada plano: enquadramento, altura, lente e movimento.
  • O tempo de ação que não acontece durante a fala.
  • As descrições visuais e os prompts de imagem e de vídeo.

O código decide

  • Quantas cenas existem e em que ordem. Todo documento recebe esse contrato.
  • IDs, numeração de planos e a duração total de cada um.
  • A grade do storyboard, composta por código a partir dos quadros, sem custo.
  • O que entra no contexto, e o preço congelado antes de cada geração.

Essa divisão também deixa a falha pequena. Na geração do storyboard, cada painel é salvo assim que a imagem chega, e a grade da cena só é composta quando todos existem. Se a geração cai no segundo painel, a retomada reaproveita o primeiro e pede só o que falta. Há um teste automatizado que interrompe a geração nesse ponto e confere.

Prompt se conserta na causa

A regra do projeto: antes de acrescentar uma proibição, achar a causa no payload que foi enviado, simplificar, gerar de novo e comparar.

Um curta meu em produção saiu com texto de máquina: ponto e vírgula demais, rótulos de planejamento no meio da cena, falas que começavam pelo nome de quem fala. Em vez de escrever “não faça isso” no fim do prompt, li os requests guardados no banco e rodei três versões da mesma cadeia.

Antes, em produção

INT. SALA DE DECODIFICAÇÃO - NOITE

Em close nos dedos sobre símbolos, a leitura avança. As telas revelam uma sequência cifrada que parece conter uma advertência: não atravessar a fronteira. O obstáculo é a interpretação de símbolos ambíguos; a tática é cruzar dados com mapas estelares para confirmar autenticidade.

DANTE

Dante Não atravessar a fronteira.

Depois, com a cadeia corrigida

INT. SALA DE DECODIFICAÇÃO - NOITE

Símbolos decifram-se diante dele; dados reverberam em padrões frios. A voz do futuro atravessa os sistemas. O aviso fica claro: não atravesse.

EU DO FUTURO

Não atravesse.

Saída real do modelo, mesma cena e mesmo projeto. Em destaque, o que o texto antigo fazia: narrar o plano da história em vez da cena, com rótulos de planejamento, e começar a fala pelo nome de quem fala.

O defeito nasce em cima e desce pela cadeia

Na tabela abaixo, a coluna do meio é a descoberta. Trocar só o prompt dos Rascunhos quase não muda nada, porque o modelo copia a Escaleta suja que recebe no contexto: os rótulos vão de 23 para 22. Quando a Escaleta corrigida entra na cadeia, eles vão para zero.

Medida no textoEm produçãoSó o prompt novoCadeia nova
Escaleta
Ponto e vírgula307origem
Caudas no gerúndio253origem
Rótulos de planejamento230origem
Tom e Visual
Ponto e vírgula313823
Travessões14274
Caudas no gerúndio1885
Rascunhos
Ponto e vírgula15135
Caudas no gerúndio993
Rótulos de planejamento23220
Roteiro Final
Ponto e vírgula14127
Caudas no gerúndio762
Rótulos de planejamento8140
Falas que começam pelo nome12 de 1200

Geração real com gpt-5-nano, nove chamadas. Uma amostra por célula: os números mostram direção e ordem de grandeza, não uma taxa. Na cadeia nova, a Escaleta corrigida é a origem do contexto, por isso não tem contagem própria.

Quando a primeira correção piora

No Tom e Visual, a primeira rodada dobrou os travessões, de 14 para 27. A causa estava no meu prompt: o formato pedido trazia um travessão entre título e orientação, em 21 itens, e o modelo copiou as linhas inteiras. Separei título e orientação, e o documento caiu para 4. Sem medir, eu teria achado que a regra nova estava funcionando.

A palavra que virou enredo

Um elemento do motor de cena se chamava “mudança de veredito”. A história de teste tinha um laudo de seguradora, e o modelo levou o termo para a trama: “o veredito da seguradora”. Pedir para ele “nomear” os elementos de cada cena teve efeito parecido, e os rótulos apareceram dentro do texto. Os cinco elementos viraram critério de conferência em silêncio, com outro nome. A rodada inteira custou 8 centavos de dólar, o que deixa esse jeito de testar barato o bastante para virar hábito.

Quanto custa um filme

Medi cada chamada de um curta completo, da logline aos prompts finais. Deu US$ 5,96, antes do vídeo.

O teste foi Andar Errado, uma comédia de 63 segundos, com 10 cenas e 28 planos. O total inclui as regenerações descartadas e as rodadas de ajuste, porque elas também são cobradas. Foram US$ 4,42 em 145 chamadas de texto com gpt-5.6-luna e US$ 1,54 em imagens.

EtapaCusto de textoUS$Chamadas
Roteiro Técnico1,4128
Escaleta0,8226
Preparação dos prompts de vídeo0,478
StoryboardDepois desta medição, a estrutura passou para o código.0,3711
Mapa de Continuidade0,317
Ficha de Personagens0,2019
Script Breakdown0,177
Tom e Visual0,168
Roteiro Final0,155
Rascunhos0,156
One-liner0,094
Universo da Obra0,031
Mapa de Locações0,033
Sinopse0,033
Logline0,024

A medição virou produto. Cada geração mostra o preço antes de confirmar, numa cotação congelada que o job respeita, incluindo modelo, contexto e tamanho. Vídeo fica de fora dos créditos: cada conta usa a própria chave no provedor escolhido, vê o prompt de cada plano e paga direto. Hoje o texto das contas comuns roda em gpt-5-nano, e só a preparação dos prompts de vídeo usa o gpt-5.6-luna.

Decisões de arquitetura

  1. A fila mora no Postgres

    Gerar é reservar créditos e enfileirar um job. Com pg-boss no mesmo banco, as duas coisas cabem numa transação, sem Redis para operar e sem crédito preso a um job que nunca entrou na fila.

    ADR-003

  2. Imagens ganharam fila própria

    Um estouro de memória em 22/08 limitou a fila geral a quatro execuções por processo, e as imagens passaram a disputar vaga com texto e vídeo. Agora têm consumidores próprios, e quem espera fica no banco, sem ocupar memória.

    ADR-022

  3. Vídeo roda com a chave do usuário

    Vídeo é caro, e o custo precisa ficar à vista. A plataforma cobra a preparação do prompt, nunca o vídeo, e a cotação registra zero crédito. Com isso a margem do produto não depende do preço de um provedor.

    ADR-024

  4. Uma trava antes de gastar storage

    O R2 não tem limite rígido de gasto. Todo upload passa por um decorator que lê um registro próprio de uso e recusa o arquivo com 10% de folga antes do fim da franquia gratuita.

    ADR-019

  5. Série é uma árvore, não um formato

    Cada projeto congela o tipo de produto e a versão da definição. Curta e longa têm um escopo só. Série vira série, temporada e episódio, cada nível com o próprio pipeline.

    ADR-015

  6. O código executa só o contrato atual

    Aliases e parsers antigos faziam o comportamento depender da data em que o projeto nasceu. Toda mudança incompatível agora é uma transformação versionada e idempotente, no padrão expand, transform, contract.

    ADR-012

Como dividi o trabalho com a IA

O repositório tem 348 mil linhas. Não escrevi a maior parte delas à mão, e é por isso que cuido tanto do que está em volta.

Ficou com a IA

  • Escrever a maior parte do código, dos testes e das capturas de tela, a partir da especificação.
  • Rodar as verificações com geração real, contar os defeitos e comparar as saídas.
  • Propor alternativas de arquitetura e de provedor, com custo e risco de cada uma.

Ficou comigo

  • Definir o produto, as regras e o escopo, e decidir o que fica de fora do lançamento.
  • Escolher entre as alternativas. Cada escolha virou um ADR.
  • Ler o que o modelo escreveu e dizer quando estava ruim. A auditoria de escrita começou com um curta meu.
  • Aprovar tela por tela pelo histórico visual, antes de considerar uma entrega pronta.

O que ainda falta

  • Ainda não tenho números de uso para mostrar. Este caso mede engenharia, não tração.
  • As rodadas de antes e depois são disparadas à mão e têm uma amostra por célula. Falta virar uma avaliação automática a cada mudança de prompt.
  • O app de iPhone roda no simulador e no meu aparelho. Ainda não foi para a App Store.
  • Kit de redes sociais, photoshoot, teaser e videoclipe existem, mas seguem internos.
  • Os filmes do início do caso são de julho. Falta gerar um filme novo com toda a cadeia corrigida.