Desenvolvido para empresas

Sistema de acompanhamento de projetos de IA

ÁreaIA sobre os dados
O que fazAntes, o piloto se arrastava sem resposta. Agora cada projeto só avança com meta definida e resultado medido.
FunçõesAprovação por etapas · Retorno real medido · Ganho contado uma vez
HabilidadesGovernança de projetos · Regras de aprovação · Medição de retorno · Alertas automáticos
Como foi construídoLevantei com o comitê como os pilotos de IA eram aprovados e acompanhados. Desenhei as etapas de aprovação, o business case e o painel, construí o cálculo de retorno e os alertas e implantei, ajustando as etapas com o uso.

O que o sistema cobre.

Sistema que acompanha os projetos de IA da empresa do pedido de orçamento até o resultado em produção. O business case entra em campos estruturados, o projeto passa por duas etapas de aprovação, o piloto termina com veredito e o ganho é medido contra o prometido. Feito para a diretoria e o comitê que decidem onde investir em IA.

Para quem

Diretoria, comitê de investimento e escritório de projetos de empresas que aprovam e acompanham vários projetos de IA.

O que mudou na empresa

O piloto só abre com meta e termina com veredito. O ganho prometido é medido depois da implantação, e o desvio de prazo ou gasto chega ao comitê antes da reunião, sem planilha paralela.

Módulos e funções.

8 partes do sistema, cada uma com o que faz.

Business case estruturado

Objetivo, premissas, retorno esperado, orçamento, responsáveis, cronograma e riscos em campos, não em anexo.

Aprovação do piloto

O piloto só abre com meta, linha de base e critério de sucesso. Termina com veredito.

Aprovação de implantação

O comitê decide com o resultado do piloto e congela escopo, custo, prazo e ganho prometido.

Cálculo de retorno

Retorno e payback saem das premissas cadastradas com vigência. Ganho repetido entre projetos conta uma vez.

Execução e acompanhamento

Marcos, despesas e status lançados no sistema, com histórico de quem mudou o quê e quando.

Medição do ganho realizado

Após implantar, o indicador prometido é medido contra a linha de base, com data e responsável.

Vigilância semanal

Regras checam prazo, gasto, silêncio e ganho medido. A IA classifica a gravidade e sugere ação.

Painel do portfólio

Projetos ativos, retorno potencial e realizado, investimento comprometido, pilotos, produção e atrasados, em foto semanal.

Três telas.

O design é meu. Cada legenda diz o que a tela faz.

Painel que compara o ganho prometido com o ganho medido
Tela 1Painel que compara o ganho prometido com o ganho medido
As duas etapas de aprovação e a meta congelada do projeto
Tela 2As duas etapas de aprovação e a meta congelada do projeto
Lista de alertas da semana com gravidade e ação sugerida
Tela 3Lista de alertas da semana com gravidade e ação sugerida

Como funciona por dentro.

Plataforma onde a empresa decide quais projetos de IA financia, e onde a própria IA vigia o que foi prometido no comitê contra o que está de fato acontecendo.

  1. Business caseObjetivo, premissas, ROI esperado, orçamento, responsáveis, cronograma e riscos entram como campos estruturados, não como anexo. O ROI é derivado das premissas, nunca digitado como total.
  2. Gate de POCPrimeira trava, barata: sem métrica, linha de base congelada e limiar de sucesso declarados, a POC não abre. É o gate que mata a POC eterna.
  3. POC medidaRoda contra a linha de base e termina em veredito pelo limiar declarado, passou, não passou, passou parcialmente. O resultado vira fato do dossiê, com id.
  4. Gate de implantaçãoO comitê decide com resultado de POC na mão. Aprovar congela o baseline, escopo, custo, cronograma e benefício prometido, numa versão imutável. É contra isso que tudo será medido.
  5. Execução e coletorMarcos, backlog e despesas são lançados sob RLS, cada escrita deixando linha na trilha append-only. Job semanal monta o dossiê determinístico: fatos com id, deltas desde o último ciclo, resumo anterior no lugar da história inteira.
  6. Motor de regrasSinais determinísticos com o número já calculado: marco vencido, burn acima do avanço físico, silêncio, orçamento comprometido além do limiar, benefício medido abaixo do prometido.
  7. Leitura da IA e dedupO LLM recebe dossiê e sinais e devolve JSON: template, severidade, causa provável, ação e fact_id. Os percentuais chegam prontos nos slots do sinal. Achado repetido casa pela chave e muda de estado em vez de gerar alarme novo.
  8. Realização e dashboardEm produção, o indicador declarado é medido periodicamente contra a linha de base congelada. Snapshot semanal materializado: ativos, ROI potencial e realizado, investimento, POC, produção, atrasados.

O problema e a saída.

O problema

Iniciativas de IA aprovadas em slide e nunca reabertas: cronograma no MS Project, gasto no ERP, status no WhatsApp. A POC não falha, só continua. E dois projetos prometem os mesmos FTEs do mesmo centro de custo, o total não se defende diante do CFO.

A saída

Dois gates: POC não abre sem linha de base, implantação congela o baseline. ROI é função pura em centavos, testado por propriedade e sem benefício somado duas vezes. A regra dá o número; o texto da IA congela por hash do dossiê, não na temperatura.

Arquitetura.

Como as partes se encaixam.

O núcleo não é o dashboard, é a máquina de estados, e ela tem dois gates. O projeto vai de ideia a business case e para no primeiro: o gate de POC não abre sem métrica declarada, linha de base congelada e limiar de sucesso. A POC roda contra essa linha de base e termina em veredito, não em prorrogação. Só então vem o segundo gate, o de implantação, o comitê decide com resultado de POC na mão. É esse gate que congela o baseline: escopo, custo, cronograma e benefício prometido viram uma versão imutável, e tudo que vem depois é comparado com ela. Cada gate congela uma coisa diferente: o de POC congela a linha de base e o critério de sucesso, para que ninguém mude a régua no meio do teste; o de implantação congela a promessa financeira, para que ninguém reescreva o ROI depois de errar a estimativa. Revisar qualquer um dos dois é pedido formal com aprovador, não edição de campo.

Dinheiro e prazo são calculados, nunca digitados como total. ROI, payback e curva de caixa saem de uma função pura sobre premissas versionadas, custo-hora, câmbio e taxa de desconto são linhas de tabela com vigência, não constantes no código. Valores são inteiros em centavos. Depois da implantação a mesma função roda de novo, trocando o benefício prometido pelo medido: o indicador declarado no business case volta como série periódica, query agendada no sistema de origem ou lançamento assinado, sempre com valor, data, quem mediu e a query registrada, comparada com a linha de base congelada no gate de POC. Isso não resolve atribuição causal, e o sistema não finge que resolve: mostra série, linha de base e promessa lado a lado, e deixa a discussão acontecer sobre números com procedência. Na agregação do portfólio entra o dedup de benefício: dois projetos que prometem os mesmos FTEs do mesmo centro de custo não somam duas vezes; o segundo entra com o ganho marginal declarado. O dashboard lê views materializadas e um snapshot semanal, não recomputa a história a cada abertura de página.

A vigilância roda em três etapas. Um coletor monta o dossiê do projeto, fatos com id: marcos, despesas aprovadas, atualizações de status, itens de backlog, veredito da POC, medições de benefício. Um motor de regras varre o dossiê e emite sinais determinísticos com os números já calculados: marco de baseline vencido, burn acima do avanço físico, silêncio há N dias, orçamento comprometido além do limiar, benefício medido abaixo do prometido. Só então o LLM recebe dossiê e sinais e devolve JSON validado por schema: template de achado, severidade, causa provável, ação sugerida e a lista de fact_id que sustenta cada frase. O texto do achado é template com slots, os percentuais entram preenchidos pelo sinal da regra; o modelo escolhe o template e a leitura, nunca digita número. O parser derruba achado que cite fact_id inexistente, e vale dizer com todas as letras o alcance disso: garante que o achado aponta para fatos reais do dossiê, não que a leitura desses fatos esteja certa. Três fact_id válidos podem sustentar uma inferência errada. Por isso cada achado chega na tela grudado no sinal que o originou, para o revisor conferir a inferência em dois cliques. E achado repetido não vira alerta novo, a chave (projeto, tipo, objeto) casa com o que já está aberto e ele só muda de estado: novo, persistente, resolvido.

Diário de construção.

Por onde comecei, onde travou e o que mudou no caminho.

Comecei pelo modelo de dados, sem tela nenhuma. Projeto, gate, baseline, premissa, marco, despesa, medição de benefício e achado nasceram como tabelas, com as chaves e as políticas de RLS já no lugar. Em seguida veio o cálculo financeiro, isolado como função pura e coberto por testes de propriedade: soma das partes igual ao total, arredondamento em centavos que não cria dinheiro, taxa de desconto que move o VPL na direção certa. Só depois disso desenhei a primeira página.

A ordem dos gates mudou depois da primeira versão. Eu tinha um gate só, de aprovação, antes da POC, herança de PMO. Na prática o comitê aprovava no papel e descobria o resultado meses adiante. Quebrei em dois: gate barato libera a POC exigindo métrica, linha de base e limiar; gate caro, de implantação, só abre com veredito de POC registrado, e é ele que congela o baseline. O dashboard, no mesmo período, virou SQL e depois snapshot semanal materializado, porque, sem isso, editar o orçamento de março mudava o formato do passado inteiro e a curva de previsto contra realizado deixava de significar coisa alguma. Foto congelada de sexta resolve o histórico; a leitura ao vivo continua vindo das views.

A parte difícil foi fazer a IA parar de escrever risco genérico. A primeira versão recebia o projeto inteiro em texto corrido e devolvia "risco de escopo" e "baixo engajamento das áreas" para todo mundo, verdade sempre, útil nunca. Três mudanças resolveram: entregar os sinais das regras já prontos, com os números calculados, para o modelo interpretar em vez de descobrir; transformar o achado em template com slots, para que nenhum percentual saia do decoder; e exigir fact_id em cada frase, com descarte no parser. Montei junto um conjunto de dossiês rotulados à mão (risco real / ruído) que roda a cada mudança de prompt; prompt que perde precisão nesse conjunto não sobe.

Tecnologias e o porquê.

CamadaEscolhaPor quê
BancoPostgreSQL com RLS por org_id e trilha append-only particionada por mêsMulti-tenant sem duplicar infraestrutura, e o filtro de empresa vive no banco. Se o app esquecer o WHERE, a policy segura. Orçamento e salário-base ficam atrás de papel, não de if no front.
DinheiroInteiros em centavos e tabela de premissas com vigênciaFloat acumula erro e destrói a confiança no total do portfólio. Premissa versionada permite recalcular o passado com a regra da época, não com a de hoje, e é o que faz prometido e realizado serem comparáveis.
Fila e jobsFila no próprio Postgres com SELECT ... FOR UPDATE SKIP LOCKEDO volume é baixo: dezenas de projetos por empresa, um ciclo semanal e execuções sob demanda. Um broker separado seria mais um ponto de falha para nada, e a fila herda a transação de graça.
VigilânciaMotor de regras determinístico antes do modelo, com achado em template de slotsNenhum número de tela vem do modelo, todos saem das regras e do SQL. O texto do achado vem do LLM e fica congelado pelo cache por hash do dossiê: enquanto o dossiê não muda, o painel não muda de texto.
LLMClaude com JSON Schema, temperatura baixa, prompt versionado e cache por hash do dossiêDossiê inalterado não paga token de novo nem reescreve o risco sem motivo. Temperatura baixa reduz variação, mas não promete saída idêntica, por isso o congelamento é feito no cache, não na fé no decoder. Cada achado grava model_id e prompt_version para ser reauditado depois: dá para reabrir dossiê, sinais, prompt e a resposta exata que gerou aquele achado.
ObservabilidadeOpenTelemetry com trace por ciclo e log de custo por achadoQuando o comitê contesta um risco, dá para reabrir a execução: dossiê, sinais, prompt, resposta e quanto custou. Sem isso o alerta vira opinião.

Decisões de projeto.

Dois gates: a POC prova, a aprovação congela

Larguei o gate único do PMO. Custa um estágio a mais e teto de gasto só para a POC; em troca o dinheiro grande só é comprometido depois da evidência, não antes dela.

Foto semanal, não event sourcing

Event sourcing daria replay exato e custaria evento por campo. Fiquei com foto semanal materializada, trilha append-only mensal e fila SKIP LOCKED: histórico de sete dias, leitura barata.

Evidência por existência, não por sentido

Derruba fact_id inexistente: custa recall e aceito. Mas garante fato real, não leitura certa, três ids válidos sustentam inferência errada; daí o rótulo à mão e o achado colado ao sinal.

Escopo.

O que o sistema cobre

  • Business case estruturado em campos: objetivo, premissas, ROI esperado, orçamento, responsáveis, cronograma e riscos, nada como anexo solto.
  • Dois gates com checagem real: POC não abre sem métrica, linha de base e limiar de sucesso; implantação não aprova sem veredito de POC registrado.
  • Baseline congelado na aprovação da implantação e comparado com o realizado, marco a marco e real a real, com trilha append-only de quem mudou o quê, quando e com qual justificativa.
  • Benefício realizado medido periodicamente contra a linha de base congelada, não contra a promessa reescrita, com data, autor e query da medição.
  • Dashboard do portfólio calculado em SQL: ativos, ROI potencial e realizado, investimento comprometido, POC, produção e atrasados.
  • Ciclo automático de vigilância: sinais de regra com o número e achados da IA com severidade, evidência e ação sugerida, sem repetir alarme já aberto.

O que não está publicado

  • Nome da empresa e números de operação não são divulgados aqui.
  • O código não é público. O que dá para ver: o processo, as telas e as decisões.

Da mesma faixa.

IA sobre os dados

Quer ver este sistema de perto?

Mostro o processo que mudou, os módulos, as telas e como foi construído.

Contato

Quer ver isso de perto?

Diegorafacarvalho@gmail.com +55 47 98801-8335

Santa Catarina, Brasil, remoto. Costumo responder no mesmo dia.

Sem formulário

  • Recrutador não preenche formulário, copia o e-mail. Ele está aí em cima.
  • A versão rápida é uma página só, imprime em A4 e serve para encaminhar ao tech lead.
  • Qualquer sistema daqui eu mostro em chamada: o processo que mudou, os módulos, as telas e como foi construído.
  • Os sistemas foram desenvolvidos para empresas e o código não é público. Este site também é meu, do motor de scroll ao design: veja como funciona.