O edital entra em PDF e sai como processo, com prazo e dono
Sistema de operação para uma assessoria de licitações: o agente de IA analisa o edital em quinze blocos, cria a licitação, publica os prazos na agenda e leva a disputa até o registro do resultado.
O que doía
Licitação é um negócio em que o prazo não perdoa. Cada edital traz dezenas de datas — credenciamento, esclarecimentos, impugnação, sessão, entrega —, e perder uma delas custa a disputa inteira.
A leitura desses editais era trabalho manual e repetido: alguém abria o PDF, procurava item por item, anotava o que importava e transportava as datas para um calendário.
O resultado do certame, que é o dado que o cliente mais quer ver, ficava para depois — e depois não chegava. O pipeline era mantido em dia e o desfecho, não.
O que fizemos
O edital é enviado ao sistema e um agente de IA faz a análise no padrão da casa, em quinze blocos independentes, criando a licitação já com os campos preenchidos.
Ao concluir, ele publica na agenda os prazos que encontrou — inclusive os relativos, calculados em dias úteis com margem de feriado e marcados como estimativa.
A equipe revisa na tela, com a formatação que vai para o PDF e para o Word, e marca cada seção como conferida.
A licitação anda por um pipeline com status, e o certame que já passou muda de situação sozinho. O resultado é registrado numa tela própria, junto com o status — porque separar as duas coisas era o que deixava o desfecho vazio.
O cliente recebe um relatório com gráficos, linha do tempo e detalhamento por período.
A jornada
- 1Diagnóstico
O gargalo era a leitura, e ele se repetia a cada edital
Acompanhamos o trabalho como ele era: abrir o PDF, procurar item por item, anotar, transportar data para calendário. Não era falta de capacidade da equipe — era volume de leitura repetida, do tipo que não se resolve pedindo mais empenho a quem já está no limite.
- 2Processo
O padrão da análise foi escrito antes de existir agente
Quais seções a análise precisa ter, o que vai em cada uma, qual item tem campo dono e quais campos podem repetir de propósito. Sem esse padrão escrito, um agente de IA só produz texto plausível — e texto plausível num documento de licitação é pior que campo vazio.
- 3Pessoas
A IA propõe; quem conferiu assina
Cada seção é marcada como conferida por uma pessoa, e só análise com seções conferidas pode virar exemplo de treino do agente. A primeira versão trazia o edital inteiro e a equipe descartava a maior parte das linhas — medimos isso nas revisões e reconstruímos o agente em volta do que ela MANTÉM, não do que o edital diz.
- 4Tecnologia
Campo em branco sempre diz por quê
Esta é a regra que sustenta a confiança no sistema: o que o agente não localizou recebe uma frase explicando, o que falhou na geração aparece em aviso vermelho, e data que o edital não traz fica como "—" em vez de ser preenchida com o instante do processamento. Dado ausente alguém pergunta; dado inventado no calendário ninguém percebe.
- 5Acompanhamento
O desfecho deixou de ser opcional
A tela de resultados abre nas licitações cujo certame já passou — por status ou por data — e a contagem de pendências aparece na tela de trabalho, com atalho. Antes, o registro do resultado dependia de alguém lembrar de visitar a tela, e foi exatamente assim que o campo ficou vazio na base inteira.
O que foi entregue
- Agente de análise de edital: PDF e Office entram, análise no padrão da casa sai
- Criação automática da licitação a partir da análise, com os campos preenchidos
- Agenda com os prazos publicados pelo agente, inclusive prazos relativos calculados em dias úteis
- Pipeline de licitações em tabela e kanban, com status editável na própria linha
- Mudança automática de status quando a data do certame passa
- Tela de resultados do certame, que grava desfecho e status na mesma ação
- Prorrogação de certame: errata comparada à análise atual ou reanálise completa
- Treinador do agente: a análise revisada pela equipe vira exemplo de treino
- Certidões por cliente com catálogo de tipos e log de auditoria
- Relatório do cliente com gráficos, períodos e exportação em PDF
- Acesso por perfil (técnico, gestor e analista), restrito à equipe
Produtos EN1 usados
O que entrou neste projeto, e dá para contratar o mesmo.
O que continua
O que segue acontecendo hoje:
- O agente é treinado com as análises que a própria equipe revisou e marcou como conferidas — ele melhora com o uso, não com deploy.
- A qualidade da extração é medida por script, com critério escrito para trocar de modelo: sem bater o número, o modelo não entra.
- O que ainda falta está no registro de mudanças do projeto, versão por versão, com a data e o motivo de cada escolha.
Decisões de arquitetura
Quinze blocos independentes, e um que confere o conjunto
Cada seção da análise é uma chamada própria ao modelo — assim uma falha não derruba o documento inteiro. Como nenhum bloco vê o que o outro escreveu, cada um recebe a lista do que já foi citado, e uma varredura final remove a repetição que sobrou. Duas seções podem repetir de propósito: o alerta de risco e o índice de prazos.
O processamento não mora no navegador
A análise roda como job no servidor: fechar a janela não perde o trabalho, e o cronômetro na tela parte do horário registrado no servidor, não do momento em que a página abriu. Era o reenvio do edital por quem achava que havia travado que criava licitação duplicada.
A espera promete o que a medição mostra
A tela dizia "de 1 a 5 minutos" e isso era falso — pelo nosso histórico de análises, a mediana é bem maior. Hoje há um relógio correndo e uma faixa de tempo por quantidade de arquivos, tirada do próprio histórico. Promessa que a ferramenta não cumpre é a origem do retrabalho.
Prazo estimado é marcado como estimado
Prazo relativo ("até três dias úteis antes da sessão") é calculado com feriados nacionais e antecipado em um dia útil como margem; a data literal do edital sempre vence a conta. Prazo ancorado em evento que ainda não aconteceu não é estimado — a tela mostra de que evento ele depende, porque campo vazio não distingue "o edital é omisso" de "o prazo não começou a correr".
Como foi construído
- Next.js
- TypeScript
- Firebase
- Python + LangGraph
- Cloud Run
- Google Gemini
- Google Calendar