Relatório Diário Automatizado de Obra

Pipeline local automatizado que gera, todo dia útil às 06:30, um relatório executivo de progresso de obra — cruzando o diário de obras e a previsão do tempo com IA rodando on-premise, síntese de voz e entrega multicanal (Telegram + e-mail), sem intervenção manual.

n8nOllama · Qwen2.5:14bKokoro TTSTelegramGmail SMTP
Ygor Carvalho — engenheiro civil, em transição para Engenharia de IA · concepção, arquitetura e automação
3,5min
execução ponta a ponta (P50)
R$ 0
custo de IA por relatório
100%local
inferência de IA on-premise
~40min/dia
trabalho manual eliminado

Relatório Diário Automatizado de Progresso de Obra

Pipeline de automação on-premise que gera relatórios executivos diários de progresso de obra, cruzando o diário de obras com a previsão do tempo, gerando a análise com um LLM local, sintetizando o áudio e distribuindo em dois canais (Telegram + E-mail) — com zero intervenção manual.

Portal do projeto:

Sobre o autor: Ygor Carvalho, engenheiro civil, em transição para Engenharia de IA. O diagnóstico deste projeto foi construído a partir de normas técnicas, exigências legais e literatura setorial — as fontes estão citadas ao longo da documentação.


O Problema Real

Três decisões recorrentes de uma obra dependem, ao mesmo tempo, do que já aconteceu no canteiro e do que o tempo vai fazer nos próximos dias:

  • Quando concretar. A ABNT NBR 14931:2023 condiciona a concretagem sob chuva: precipitação fraca (abaixo de 2,5 mm/h, Tabela 7) dispensa medidas extras, mas acima disso a água interfere na superfície do concreto e a norma exige proteção — sob risco de delaminação, perda de resistência e fissuração.
  • Quando pintar ou impermeabilizar. A recomendação prática ABRACO RP PAC-001 é explícita: não se aplica pintura sob chuva, neblina ou com umidade relativa acima de 85% — nem quando houver expectativa de que esse valor seja atingido. Ou seja, a regra não pede o clima de agora; pede a previsão.
  • Que frente de serviço priorizar. A alocação de equipes depende do estágio de cada frente (registrado no diário) cruzado com a janela de tempo seco disponível.

O insumo dessas decisões existe e é formalizado: em obra pública, a Lei nº 14.133/2021 (art. 117, § 1º) determina que o fiscal do contrato anote "em registro próprio" todas as ocorrências da execução — o diário de obra. (Ressalva de atualidade: a exigência do Livro de Ordem pelo sistema CONFEA/CREA foi revogada em fevereiro de 2023; o registro diário permanece por força contratual e, na obra pública, por força da Lei de Licitações.)

O problema não é a ausência do dado — é que ele não é consultado na hora de decidir. A literatura setorial descreve o diário como frequentemente preenchido de forma superficial ou irregular na correria do canteiro, perdendo valor como ferramenta de controle. E o custo de garimpar informação de projeto é reconhecido e quantificado: o estudo Construction Disconnected (FMI/PlanGrid, 2018), com cerca de 600 profissionais do setor, apurou 5,5 horas por semana por pessoa apenas procurando dados de projeto. Esse número agrega a busca por normas, projetos, especificações e relatórios diversos — a consulta ao diário é só uma fatia dele —, então ele estabelece que o problema existe, sem dimensionar a tarefa específica que este pipeline automatiza.

Este pipeline elimina esse garimpo para o caso específico do planejamento diário: cruza sozinho o diário de obras com a previsão do tempo, todo dia útil às 06:30, e entrega o resultado em texto e áudio antes do início da jornada.

Sobre o baseline de ~40 minutos/dia usado nos cálculos de ganho e ROI: compõe-se de ~30 min da rotina do diário de obras (prática recomendada por fornecedores de RDO digital) mais ~10 min arbitrados para consultar a previsão e correlacioná-la com as frentes ativas. Vale a fronteira: o pipeline não captura o dado em campo — ele substitui a consolidação, a redação e o cruzamento com o clima. A nota metodológica na aba Diagnóstico e Objetivos detalha isso, e a análise de sensibilidade em Métricas e ROI recalcula o retorno para 20, 30 e 40 min/dia.


Como funciona

A orquestração é centralizada exclusivamente no n8n (17 nós) e executa todo dia útil, às 06:30:

Fluxo principal

  • Geocodifica a cidade da obra (OpenStreetMap Nominatim).
  • Coleta a previsão do tempo para os próximos 5 dias (OpenWeather API).
  • Gera a análise cruzando os apontamentos do dia anterior com a chuva prevista, produzindo um plano de ação para o dia (Ollama qwen2.5:14b, rodando localmente).
  • Sintetiza o áudio em português do Brasil, localmente e sem API externa, limpando as marcações de Markdown antes da locução (Kokoro TTS ONNX).
  • Distribui em paralelo:
  • Telegram: texto + áudio via Bot API.
  • E-mail (Gmail SMTP): relatório em HTML formatado para a lista de destinatários em CSV.

Preocupações transversais

  • Logging e auditoria: métricas de execução em JSON + histórico em CSV.
  • Error handling global: captura erros de qualquer nó, registra e notifica via Telegram.

Tempo de execução: mediana de 3,5 minutos ponta a ponta (P50, n = 9 execuções reais; teto de 5 min definido no RNF01).


Prova de conceito

Entrega real do sistema nos dois canais de distribuição — Telegram (áudio com player nativo + relatório em texto) e E-mail (relatório HTML formatado). Os prints e o trecho de áudio estão na aba Arquitetura e n8n do portal, seção Resultado Final e Prova de Conceito.


Números do projeto

MétricaValorOrigem
Latência mediana ponta a ponta (P50)3,5 min9 execuções reais medidas
Ganho sobre o processo manual≈ 11× (−91%)vs. baseline arbitrado de ~40 min de compilação manual
Aderência ao SLA (< 300 s)8 de 9 (88,9%)uma execução estourou o teto em 8 s
Confiabilidade modelada por execução≈ 97,9%produto das disponibilidades das dependências
Custo de IA por relatórioR$ 0inferência 100% local, sem API paga

Detalhamento completo (estatística descritiva, modelo de confiabilidade, payback e ROI) na aba Métricas e ROI.


Máquina de Referência (Desenvolvimento e Testes)

Hardware em que o projeto foi desenvolvido e em que todas as métricas deste portal foram medidas — isto não é um piso mínimo validado, é o que estava disponível.

ComponenteEspecificação
GPUGTX 1660 Ti — 6 GB VRAM
RAM32 GB
SOLinux

O modelo de 14B excede os 6 GB de VRAM e usa offloading para RAM/CPU — decisão consciente, ver aba Arquitetura e n8n. O sistema nunca foi testado abaixo desta configuração: o Canvas de Projeto declara um piso teórico de 4 GB de VRAM (RNF04), mas esse valor não foi validado empiricamente — trate-o como não confirmado até que alguém rode nele.

Software Necessário

ComponenteVersão / SetupNotas
Ollama0.21 (qwen2.5:14b)Modelo de homologação (testado). O sistema é agnóstico: basta alterar o .env para usar outros modelos (Llama 3, Phi-3, etc).
Node.js & n8n18+ / npm i -g n8nHost do orquestrador.
Python3.12 (.venv isolado)Motor de áudio (Kokoro) + microsserviço de e-mail.
espeak-ngsudo apt install espeak-ngBackend fonético obrigatório do TTS.

Topologia do Projeto


daily-construction-report-ai/
├── data/
│   ├── input/
│   │   └── registros_exemplo.json       # Simulação dos apontamentos de obra
│   ├── output/                          # Relatórios gerados, logs, áudios
│   └── email_recipients.csv             # Lista de destinatários de e-mail
├── docs/                                # Documentação do Projeto (Portal HTML)
├── models/                              # Modelos IA (Kokoro TTS ONNX)
├── n8n/
│   └── Relatório Diário de Obra.json    # Workflow Orquestrador (Multicanal)
├── scripts/
│   ├── generate_audio.py                # Microsserviço de TTS
│   ├── send_email.py                    # Microsserviço de E-mail (Gmail SMTP)
│   └── stress_test.py                   # Testes de stress e performance
├── .env                                 # Configurações de ambiente (ÚNICO ARQUIVO DE SETUP)
├── start_n8n.sh                         # Script de inicialização (Linux/WSL)
└── start_n8n.bat                        # Script de inicialização (Windows)

Como rodar o projeto

Guia único de instalação e execução. Ambiente de referência: Linux (ou WSL).

1. Modelos de IA (LLM e TTS)


# Ollama + modelo de linguagem
curl -fsSL https://ollama.com/install.sh | sh
ollama pull qwen2.5:14b

# Pesos do Kokoro TTS
mkdir -p models && cd models
wget https://github.com/thewh1teagle/kokoro-onnx/releases/download/model-files-v1.0/kokoro-v1.0.onnx
wget https://github.com/thewh1teagle/kokoro-onnx/releases/download/model-files-v1.0/voices-v1.0.bin
cd ..

2. Ambiente Python


python3 -m venv .venv
source .venv/bin/activate
pip install kokoro-onnx soundfile numpy requests
sudo apt install espeak-ng

3. Configuração (.env — fonte única de verdade)

  • Renomeie .env.example para .env.
  • Preencha as credenciais: TELEGRAM_BOT_TOKEN, TELEGRAM_CHAT_ID, OPENWEATHER_API_KEY e o bloco SMTP do Gmail.
  • O .env concentra também localização da obra, modelo do Ollama e caminhos dos modelos TTS.
  • Edite data/email_recipients.csv com os destinatários do e-mail, no formato nome,email (uma linha por destinatário).

4. Subir o n8n e importar o workflow


chmod +x start_n8n.sh
./start_n8n.sh          # no Windows: execute start_n8n.bat
  • Acesse http://localhost:5678.
  • Importe o workflow n8n/Relatório Diário de Obra.json.
  • Marque o toggle Active no canto superior direito para que o cron diário passe a rodar.

5. Testar

  • Com o workflow aberto no n8n, clique em "Test Workflow": o sistema lê o diário de obras, consulta o clima, gera o relatório com a IA local, sintetiza o áudio, envia ao Telegram e dispara o e-mail para os destinatários configurados.
  • Dry-run isolado do canal de e-mail:

python3 scripts/send_email.py --body-file data/output/temp_tts.txt \
  --recipients data/email_recipients.csv \
  --subject "Teste" --dry-run

6. Testes de stress (opcional)


python3 scripts/stress_test.py --all --rounds 3      # todos (requer Ollama rodando)
python3 scripts/stress_test.py --email-only --rounds 5
python3 scripts/stress_test.py --ollama-only --rounds 3
python3 scripts/stress_test.py --all --dry-run       # sem conexões reais

O relatório é salvo em data/output/stress_test_report.json.


Licença

Distribuído sob a licença MIT — ver LICENSE.

Diagnóstico do Problema e Objetivos

Contexto do Setor da Construção Civil

O setor de construção civil é historicamente caracterizado por baixa digitalização e processos manuais suscetíveis a falhas humanas. De acordo com o relatório "Reinventing Construction" da McKinsey Global Institute (2017), a construção civil aparece como um dos setores menos digitalizados do índice — penúltima posição, à frente apenas da agricultura e da caça —, com produtividade estagnada nas duas décadas anteriores. No Brasil, o atraso é estrutural: erguer um prédio residencial padrão, que poderia levar pouco mais de um ano, leva em média mais do que o dobro desse tempo (Deloitte/Fiesp, 2023); e, conforme reportado pela imprensa, a CBIC — Câmara Brasileira da Indústria da Construção estima que os atrasos no processo respondem por cerca de 12% do custo de uma obra. A assimetria de informação entre canteiro e gerência é um dos principais fatores contribuintes.

Fontes e ressalvas:

>

- McKinsey Global Institute, Reinventing Construction (2017). O índice de digitalização usado no relatório é construído sobre setores da economia norte-americana — por isso a formulação aqui é "um dos setores menos digitalizados", e não "do mundo". É uma referência de 2017 e, portanto, com quase uma década: continua sendo a citação canônica sobre o tema, mas deve ser lida como diagnóstico estrutural, não como retrato do ano corrente.

- CNN Brasil, "Burocracia e atrasos podem custar R$ 59 bi à construção até 2025, diz estudo" (27/09/2023) — reportagem sobre o estudo Deloitte/Fiesp e a estimativa de custo da CBIC. Fonte secundária: os números de Deloitte/Fiesp e CBIC são citados conforme reportado, sem acesso aos estudos originais. Disponível em: https://www.cnnbrasil.com.br/economia/macroeconomia/burocracia-e-atrasos-podem-custar-r-59-bi-a-construcao-ate-2025-diz-estudo/


O Problema Real

Três decisões operacionais recorrentes de uma obra dependem, simultaneamente, do que já aconteceu no canteiro e da previsão do tempo. Não é uma percepção genérica: em cada uma delas há norma técnica ou recomendação prática que condiciona a execução ao clima.

DecisãoPor que depende do climaReferência normativa
Quando concretar?A concretagem sob chuva é condicionada: precipitação fraca (< 2,5 mm/h) dispensa medidas extras, mas acima disso a água interfere na superfície do concreto e passa a ser exigida proteção — sob risco de delaminação, perda de resistência (fck) e fissuração.ABNT NBR 14931:2023, Tabela 7 (revisão que passou a tratar explicitamente a concretagem em períodos chuvosos)
Quando pintar ou impermeabilizar?Não se aplica pintura sob chuva, neblina ou com umidade relativa acima de 85% — e, textualmente, "nem quando houver expectativa de que esse valor seja atingido". A regra não pede o clima do momento: pede a previsão.ABRACO RP PAC-001 (Recomendação Prática — Pintura Anticorrosiva); ABNT NBR 9574 para execução de impermeabilização
Que frentes priorizar?A alocação de equipes depende do estágio de cada frente — informação que está no diário — cruzado com a janela de dias secos disponível.Decorrência operacional das duas anteriores

Para tomar essas decisões, o responsável precisaria:

  • Reler o diário de obras dos últimos dias para recuperar o que aconteceu (paralisações, avanços, problemas de material, etc.).
  • Consultar a previsão do tempo para os próximos 5 dias.
  • Cruzar essas duas informações e decidir o plano de ação.

O dado existe — o gargalo é consultá-lo

O registro diário não é opcional em obra pública: a Lei nº 14.133/2021 (art. 117, § 1º) determina que o fiscal do contrato anote "em registro próprio" todas as ocorrências relacionadas à execução, determinando o que for necessário para regularizar faltas ou defeitos. Em obra privada, o diário permanece como prática contratual e prova documental em disputas.

Ressalva de atualidade: a obrigatoriedade do Livro de Ordem no âmbito do sistema CONFEA/CREA (Resolução nº 1.024/2009, atualizada pela nº 1.094/2017) foi revogada pelo Plenário do Confea em fevereiro de 2023, a pedido da CBIC, por dificuldade dos CREAs em analisar os livros. Portanto, não é correto afirmar hoje que o diário de obras é obrigatório por resolução do conselho profissional — a obrigatoriedade que subsiste é a da obra pública (Lei de Licitações) e a de natureza contratual.

O problema, então, não é a ausência do dado — é que ele não é consultado na hora de decidir. Duas evidências setoriais sustentam isso:

  • O diário é frequentemente subutilizado. A literatura setorial (institutos de ensino em engenharia de custos e fornecedores de RDO digital) descreve como comum que, na rotina acelerada do canteiro, o diário seja negligenciado ou preenchido de forma superficial — perdendo valor tanto como ferramenta de controle quanto como prova documental. (Ressalva de qualidade de fonte: são publicações setoriais e de fornecedores, não estudos acadêmicos revisados por pares.)
  • Garimpar informação de projeto é um custo reconhecido e quantificado do setor. O estudo Construction Disconnected (FMI Corporation + PlanGrid, abril de 2018), com ~600 profissionais (500 nos EUA e 99 em Austrália, Nova Zelândia, Reino Unido e Canadá), apurou mais de 14 horas semanais por pessoa em atividades não-produtivas, das quais 5,5 h/semana apenas procurando dados de projeto.

Ressalva sobre o alcance deste dado — ele não dimensiona a tarefa deste projeto. Essas 5,5 h/semana agregam a busca por toda informação de projeto: normas técnicas, projetos executivos e construtivos, especificações, RFIs, relatórios diversos e registros de execução. A consulta ao diário de obras é apenas uma fatia desse conjunto, de tamanho desconhecido. A amostra é, além disso, majoritariamente norte-americana.

>

Ou seja: o estudo serve para estabelecer que o problema existe e tem custo mensurável, e não para validar o baseline de 40 min/dia adotado adiante. Uma inferência do tipo "40 min está abaixo dos ~66 min/dia do estudo, logo é conservador" seria indevida — compararia uma tarefa estreita com um agregado amplo, e a fatia realmente comparável poderia ser bem menor que 40 minutos.

O resultado prático: decisões tomadas sem dados atualizados, gerando paralisações evitáveis, retrabalho e atrasos.

Fontes desta seção:

>

- ABNT NBR 14931:2023 — Estruturas de concreto — Execução. A revisão de 2023 passou a tratar explicitamente a concretagem em períodos chuvosos (Tabela 7, classificação de intensidade de precipitação).

- ABNT NBR 9574:2008 — Execução de impermeabilização.

- ABRACO — Recomendação Prática RP PAC-001: Pintura Anticorrosiva. Disponível em: https://abraco.org.br/src/uploads/2017/12/RECOMENDAO-PRTICA.pdf

- Lei nº 14.133/2021, art. 117, § 1º — Lei de Licitações e Contratos Administrativos.

- Conselho Federal de Engenharia e Agronomia — Plenário do Confea revoga Livro de Ordem de obras e serviços (fev./2023). Disponível em: https://www.confea.org.br/plenario-do-confea-revoga-livro-de-ordem-de-obras-e-servicos

- FMI Corporation & PlanGrid — Construction Disconnected (2018). Disponível em: http://pg.plangrid.com/rs/572-JSV-775/images/Construction_Disconnected.pdf


Fatores Contribuintes

Os cinco fatores abaixo são o diagnóstico do porquê o cruzamento diário entre diário de obras e clima não acontece na prática. Não se trata de uma análise formal de causa-raiz (Ishikawa ou 5 Porquês) — é o levantamento dos fatores que sustentam o problema, derivados das evidências setoriais citadas acima e do desenho normativo das decisões afetadas pelo clima.

#FatorDescrição
C1Diário de obras não é consultado com frequênciaOs registros diários existem, mas o responsável raramente para para relê-los na hora de planejar o dia — são muitas anotações espalhadas
C2Previsão do tempo (OpenWeather) não é integrada ao planejamentoO engenheiro decide empiricamente quando concretar ou pintar, sem consultar previsões meteorológicas estruturadas
C3Ausência de síntese automáticaNão existe nenhuma ferramenta que consolide o que aconteceu + o que vai acontecer (clima) e sugira ações concretas
C4Informação chega tardeQuando o engenheiro finalmente compila as informações, a janela de ação corretiva já passou
C5Formato pouco acessívelRelatórios textuais longos não são lidos por quem está em campo. Um formato rápido (áudio, resumo curto) seria mais efetivo

Consequências Estimadas

ConsequênciaImpacto estimadoOrigem / status da estimativa
Decisões sem dados atualizadosConcretagens em dias chuvosos, pintura com chuva prevista, alocação de equipe desnecessáriaDecorrência das normas citadas acima (NBR 14931, ABRACO RP PAC-001): são os desvios que elas existem para evitar
Tempo gasto compilando informações manualmente~40 minutos por dia útil (~3,5 h/semana)⚠️ Premissa arbitrada — não medida. Ver nota metodológica abaixo
Retrabalho por falta de planejamento climático15–20% das jornadas improdutivas por condições meteorológicas não previstas⚠️ Hipótese a validar — sem fonte primária; não entra em nenhum cálculo deste documento
Baixa taxa de leitura pelos stakeholdersRelatórios longos não são lidos por quem está em campo; informação se perdePremissa de produto — motiva o formato em áudio, não é usada em cálculo

Nota metodológica — de onde vêm os ~40 minutos

Este número sustenta todo o cálculo de valor da aba Métricas e ROI, então precisa ser declarado pelo que é: uma premissa de trabalho arbitrada, não uma medição.

Não houve medição. Não há cronometragem em canteiro nem coleta com engenheiros em atividade.

Não existe estudo que isole exatamente esta tarefa. O dado da FMI/PlanGrid citado acima não serve para dimensioná-la, porque agrega a busca por normas, projetos executivos, especificações e relatórios diversos — a fatia correspondente ao diário de obras é desconhecida e pode ser bem menor. O que existe é um ponto de referência adjacente, sobre o qual o baseline foi construído em duas parcelas:

Parcela da rotina diáriaEstimativaBase da estimativa
Rotina do diário de obras — consolidar o que aconteceu no dia e registrar~30 minPrática recomendada de forma recorrente por fornecedores de RDO digital: reservar os últimos ~30 minutos do expediente para o preenchimento. (Fonte comercial, não acadêmica.)
Consultar a previsão dos próximos dias e correlacioná-la com as frentes ativas para planejar as atividades~10 minArbitrado — não há fonte
Total adotado como baseline~40 min/dia útil

Fronteira do ganho — o que o pipeline efetivamente substitui

Esta distinção importa para não superestimar o retorno, e por isso vem antes dos cálculos:

O pipeline não vai a campo e não observa a obra. A captura do que aconteceu — andar no canteiro, apurar efetivo, medir avanço, registrar ocorrências — continua sendo trabalho do engenheiro, e não é eliminada. O que a automação remove é a consolidação, a redação e o cruzamento: transformar apontamentos em um resumo legível, buscar a previsão, correlacionar chuva com frentes de serviço, derivar o plano do dia e formatar tudo para distribuição — entregue pronto, em texto e áudio.

Portanto, quanto do baseline de 40 min é de fato recuperado depende de como a rotina do cliente está organizada. Se o preenchimento do RDO permanecer integralmente manual, o tempo efetivamente devolvido ao engenheiro se aproxima da faixa inferior da análise de sensibilidade (20 min/dia) em vez dos 40 min cheios. Essa é precisamente a razão de a aba Métricas e ROI apresentar o retorno em uma matriz de cenários, e não em um número único.

Como o documento lida com a incerteza. Em vez de tratar o baseline como constante, a aba Métricas e ROI o trata como variável: a análise de sensibilidade recalcula payback e ROI para 20, 30 e 40 min/dia, e o retorno permanece positivo no primeiro ano em 8 das 9 combinações testadas. A conclusão econômica do projeto não depende de acreditar nos 40 minutos.

>


A Solução: Relatório Diário Automatizado

O objetivo do relatório é simples e direto:

  • Relembrar o responsável do que aconteceu nos últimos dias, com base no diário de obras, para que ele não precise voltar às anotações.
  • Informar a previsão do tempo (OpenWeather) dos próximos 5 dias, para que ele planeje ações sensíveis ao clima (concretagem, pintura externa, impermeabilização, etc.).
  • Sugerir um plano de ação técnico para o dia, cruzando automaticamente as informações anteriores.
  • Manter o responsável atualizado de forma prática, sem recorrer ao diário de obras e já com sugestões concretas para os próximos dias.
  • Entregar o resumo em texto e áudio a gestores e demais responsáveis não-técnicos do empreendimento, em formato consumível antes do início da jornada.

Planejamento Macro (PMC)

A estruturação executiva e modelagem lógica de negócios e desenvolvimento deste projeto foi concebida utilizando a metodologia Project Model Canvas (PMC). Para uma visualização interativa e holística com todos os blocos fundamentais (Por Quê, O Quê, Quem, Como, Quando e Quanto), acesse a página Canvas de Projeto.

Em resumo: o pipeline transforma dados dispersos (diário + clima) em uma orientação técnica acionável, entregue automaticamente toda manhã (em dia útil), em texto e áudio.


Contextualização do Desafio

Este projeto se insere no contexto de uma obra de edificação residencial multifamiliar de médio porte na cidade de São Paulo, com as seguintes características simuladas para validação do protótipo:

  • Tipo: Edifício residencial — 4 pavimentos
  • Fase atual: Estrutura e acabamento (concretagem de lajes e alvenaria)
  • Equipe: 10 a 15 operários por dia útil
  • Engenheiro residente: 1 profissional responsável por diário de obras e relatórios

Nota: os registros do diário de obras são simulados — 15 apontamentos com datas fixas entre 06/04 e 20/04/2026, cobrindo 3 cenários de teste (rotina normal, chuva intensa e problema logístico) para validação reprodutível do pipeline.


Objetivos SMART

Objetivo Principal

Desenvolver um pipeline que, automaticamente, relembre o responsável do que aconteceu na obra, informe a previsão do tempo (OpenWeather) e sugira um plano de ação técnico para o dia — reduzindo o tempo de consolidação de informações de ~40 minutos por dia (manual) para menos de 5 minutos (automatizado; mediana medida de 3,5 min, P50), ao final da fase de prototipagem.

Objetivos Específicos

#ObjetivoEspecíficoMensurávelAlcançávelRelevantePrazoFrenteStatus
O1Automatizar a coleta de dados climáticos via APIs públicasIntegrar OpenWeather (previsão 5 dias) e Nominatim (geocodificação)100% das consultas meteorológicas via API, zero consulta manualAPIs públicas gratuitas e documentadasPermite planejar concretagem, pintura e impermeabilização com base em dados reaisFim da prototipagemInfraestrutura✅ Atingido
O2Gerar relatório com resumo do diário + previsão + sugestão técnicaConsolidar diário de obras + clima (OpenWeather) em relatório de 3 seções usando LLM local (Ollama)Relatório gerado em < 60 segundos, com sugestões acionáveisModelos de 4-14B parâmetros rodam em GPU de 6 GBResponsável recebe orientação prática sem precisar reler o diárioFim da prototipagemNúcleo de IA⚠️ Não atingido na métrica de tempo — ver abaixo
O3Sintetizar áudio do resumo executivoConverter resumo em arquivo .wav usando Kokoro TTS localArquivo de áudio funcional gerado automaticamenteModelo ONNX roda localmente sem API externaPermite consumo rápido por gestores em campo ou deslocamentoFim da prototipagemNúcleo de IA✅ Atingido
O4Distribuir relatório automaticamenteEnviar pacote (texto + áudio) via Telegram Bot todo dia útil às 06:30Entrega sem intervenção humanaBot API gratuita, infraestrutura local já existenteResponsável começa o dia já atualizado e com plano de açãoFim da prototipagemIntegração✅ Atingido (ampliado para 2 canais: Telegram + e-mail)

O2 não foi atingido na métrica de tempo — e isso é uma decisão, não um acidente.

>

O objetivo O2 estabeleceu "relatório gerado em < 60 segundos". A medição real do nó do Ollama ficou em ~72 s de média, com pico de 139 s no payload longo (aba Testes de Stress). O alvo de 60 s não foi cumprido.

>

A causa é a escolha deliberada do Qwen 2.5:14B sobre modelos de 7B/8B: o 14B excede os 6 GB de VRAM da GTX 1660 Ti e força offloading para RAM/CPU, o que custa tempo. Os modelos menores testados rodariam dentro dos 60 s, mas não entregaram a mesma qualidade de relatório — coerência técnica, aderência aos dados e formatação limpa para locução (justificativa completa na aba Arquitetura e n8n).

>

Como o pipeline roda uma vez por dia, de madrugada, sem ninguém esperando, o requisito que de fato governa o negócio é o RNF01 (< 300 s ponta a ponta) — esse sim atingido em 8 de 9 execuções, com mediana de 208 s. Em retrospecto, o alvo de 60 s foi mal calibrado na etapa de planejamento: fixou um limite de componente antes de conhecer o custo real de inferência do modelo escolhido.

>

O caminho para cumpri-lo sem perder qualidade está no roadmap (aba Métricas e ROI, Prioridade 2): LLM quantizado mais leve ou inferência em GPU dedicada, com expectativa de cortar o tempo do Ollama pela metade.



POR QUÊ? 1. Justificativa

O engenheiro responsável por uma obra precisa, diariamente, tomar decisões como: quando concretar, quando pintar ou impermeabilizar, que frentes de serviço priorizar. Para isso, ele precisa reler o diário de obras, consultar a previsão do tempo e cruzar mentalmente essas informações — um processo repetitivo, manual e frequentemente negligenciado.

Segundo a McKinsey (2017), a construção civil aparece como um dos setores menos digitalizados do índice — penúltima posição, à frente apenas da agricultura e da caça (o índice é construído sobre setores da economia norte-americana; ver a ressalva completa na aba Diagnóstico e Objetivos). No Brasil, erguer um prédio residencial padrão — que poderia levar pouco mais de um ano — leva em média mais do que o dobro desse tempo (Deloitte/Fiesp, 2023), e a CBIC estima que os atrasos no processo respondem por cerca de 12% do custo de uma obra.

O que motivou este projeto: Entregar ao responsável da obra, toda manhã (em dia útil), um resumo prático do que aconteceu + previsão do tempo + sugestão técnica para o dia — sem que ele precise abrir o diário de obras.

POR QUÊ? 2. Objetivo SMART

Desenvolver um pipeline de automação inteligente que reduza o tempo de geração do relatório diário de progresso de obra de ~40 minutos por dia para menos de 5 minutos (mediana medida de 3,5 min, P50), operando de forma autônoma, ao final da fase de prototipagem.

# Objetivo Específico Métrica Fase
O1 Automatizar a coleta de dados climáticos 100% via API (zero manual) Infraestrutura
O2 Gerar relatório executivo (LLM local) Gerado em < 60 segundos — ⚠ meta de tempo não atingida (~72 s medidos; escolha deliberada do modelo de 14B, ver aba Diagnóstico e Objetivos) Núcleo de IA
O3 Converter resumo em áudio PT-BR Arquivo .wav funcional Núcleo de IA
O4 Distribuir via canal de comunicação Entrega autônoma todo dia útil 06:30 Integração

POR QUÊ? 3. Benefícios

# Benefício Valor Gerado
B1 Responsável sempre atualizado Começa o dia sabendo o que aconteceu, sem reler o diário
B2 Planejamento climático Sabe quais dias são favoráveis para concretagem, pintura, impermeabilização
B3 Sugestão técnica automática Plano de ação concreto cruzando histórico + previsão
B4 Formato prático Texto + áudio no Telegram, consumíveis em 2 min
B5 Rastreabilidade Histórico em CSV para auditorias
B6 Sem custo de IA nem de licença Stack open-source rodando localmente — R$ 0 por relatório (ver bloco 13 para o que não está contabilizado)

O QUÊ? 4. Produto

Um pipeline de automação inteligente end-to-end composto por:

  • Workflow n8n: 17 nós (pipeline de IA + distribuição multicanal + tratamento de erros).
  • Microsserviço de áudio: Motor TTS neural local em Python (Kokoro).
  • Base de dados histórica: Registro cumulativo em CSV.

O QUÊ? 5. Requisitos

Funcionais

  • RF01 - Coletar dados climáticos retroativos e preditivos via API.
  • RF02 - Geocodificar cidade em coordenadas automaticamente.
  • RF03 - Gerar relatório analítico via LLM local (Ollama).
  • RF04 - Sintetizar resumo em áudio .wav via TTS local.
  • RF05 - Enviar output via Telegram Bot API.

Não Funcionais

  • RNF01 - Performance: execução ponta a ponta em < 300 segundos (5 minutos).
  • RNF02 - Privacidade: 100% inferência local (IA generativa).
  • RNF03 - Custo de operação: sem API paga nem licença — R$ 0 de custo de IA por relatório.
  • RNF04 - Portabilidade: GPU de 4 GB+ VRAM — meta não validada empiricamente (única máquina testada tem 6 GB, ver README).
  • RNF05 - Idioma: todo output (texto e áudio) em Português Brasileiro — voz pf_dora.

QUEM? 6. Stakeholders

Stakeholder Tipo Interesse Influência
Engenheiro Residente Usuário direto Reduzir tempo gasto com relatórios Alta
Gerente de Obras Usuário indireto Receber relatórios com recomendações Alta
Diretoria Estratégico Visibilidade do progresso Média
Órgãos de fiscalização Regulatório Conformidade documental (diários de obra, medições) Baixa (protótipo)

QUEM? 7. Equipe

Ygor (Autor): Engenheiro de Sistemas de IA, responsável pela arquitetura, desenvolvimento do n8n, integração de APIs, configuração do Ollama/Kokoro, microsserviços Python e documentação.

COMO? 8. Premissas

  • P1 - Servidor local disponível todo dia útil, 06:30.
  • P2 - APIs públicas (OpenWeather e Nominatim) manterão gratuidade e termos de uso atuais.
  • P3 - LLM capaz de gerar português brasileiro coerente.

COMO? 9. Entregas (EAP)

 Relatório Diário Automatizado de Obra
├── 1. Diagnóstico e Planejamento
├── 2. Infraestrutura e Setup
├── 3. Pipeline de Automação (n8n)
├── 4. Dados e Testes
└── 5. Documentação e Análise

COMO? 10. Restrições

  • R1 - Hardware limitado a 6 GB VRAM.
  • R2 - Orçamento estritamente zero.
  • R3 - Protótipo limitado a dados simulados (integração com fontes reais prevista na evolução do produto).

QUANDO E QUANTO? 11. Riscos

Risco Mitigação
Rate limiting de APIs Consulta 1x por dia útil (~21x/mês), muito abaixo dos limites do Nominatim (1 req/s) e do OpenWeather (~1.000 req/dia).
Alucinação do LLM Prompt restritivo com dados fechados, limite de tokens e validação humana no 1º mês.
Gargalo de hardware Execução estritamente sequencial (LLM e TTS não concorrem).

QUANDO E QUANTO? 12. Fases do Projeto

  • Diagnóstico: investigação do problema e arquitetura da solução.
  • Infraestrutura: instalação do n8n, Ollama e TTS e validação de APIs.
  • Protótipo core: construção do workflow de automação.
  • Integração e entrega: Telegram, e-mail, testes E2E e documentação.

São fases de trabalho, não um cronograma com datas: o único esforço apurado é o total de ~150 h (pesquisa, desenvolvimento, testes e documentação). Distribuir semanas por fase retroativamente seria estimativa sem base.

QUANDO E QUANTO? 13. Custos

Desembolso em software, APIs e licenças: R$ 0,00 — e custo de IA por relatório: R$ 0.

Justificativa: todo o stack tecnológico (n8n, Ollama, Kokoro, Python) é open-source e roda localmente, sem cobrança por token ou requisição. As APIs utilizadas (OpenWeather, Nominatim, Telegram Bot) possuem free-tiers que suprem com folga as necessidades do protótipo e de uma operação em produção.

O que não está contabilizado: energia elétrica, depreciação do hardware e as ~150 h de desenvolvimento. Numa implantação real há ainda custo de capital recomendado (mini-PC dedicado e no-break) — motivo pelo qual o payback calculado na aba Métricas e ROI parte de um custo de implantação, e não de zero.

Arquitetura do Processo de Automação n8n

A arquitetura do projeto foi concebida de forma nativa e centralizada no motor n8n. A escolha por esta ferramenta deveu-se à sua capacidade de orquestração visual e declarativa, permitindo a integração fluida entre APIs externas (Clima e Geolocalização), processamento de lógica de negócio e a coordenação de microsserviços especializados.

Topologia Computacional

A infraestrutura é 100% on-premise: o n8n roda localmente, orquestrando microsserviços abertos e inferência de IA executada na própria máquina (LLM e TTS). São 17 nós — um pipeline sequencial de dados e IA, a distribuição multicanal/auditoria em paralelo e um fluxo dedicado de tratamento de erros — disparados via cron schedule.

Nota de terminologia: este sistema não é serverless. Serverless designa execução em infraestrutura gerenciada de nuvem, sob demanda e sem servidor próprio — o oposto do que acontece aqui. O termo correto é on-premise (ou edge): há um servidor, ele é físico, e é o notebook do desenvolvedor. Essa escolha é justamente o diferencial de privacidade do projeto (ver aba Ética e LGPD).

Detalhamento dos Nós da Orquestração (n8n)

Workflow n8n
Workflow orquestrado no n8n (17 nós)

O workflow é composto por 17 nós, organizados em três blocos: um pipeline sequencial de dados e IA (1–10), a distribuição multicanal e auditoria em paralelo (11–14) e um fluxo dedicado de tratamento de erros (15–17).

Pipeline sequencial (dados → IA → áudio)

  • Trigger Diário (06h30) — Schedule Trigger: Disparo automático programado para todo dia útil, às 06:30. Garante que o engenheiro receba o relatório antes de iniciar a jornada do dia.
  • Configurações Iniciais (Code - JS): O "cérebro" de configuração. Lê o arquivo .env local diretamente do disco (via fs.readFileSync, com NODE_FUNCTION_ALLOW_BUILTIN=fs habilitado pelo start_n8n.sh), extrai o caminho absoluto do projeto e as chaves de API, e exporta esses dados para os nós seguintes.
  • Nominatim - Geocodificação (HTTP Request): Converte o nome da cidade (vinda do .env) em coordenadas geográficas (Lat/Long) via OpenStreetMap, permitindo que a previsão do tempo seja precisa para o canteiro de obras.
  • OpenWeather - Previsão (HTTP Request): Coleta a previsão meteorológica detalhada para os próximos dias, utilizando a chave de API dinâmica capturada no nó inicial.
  • Consolidação de Dados (Code - JS): Realiza o processamento pesado de dados:
  • Lê o arquivo registros_exemplo.json (Simulação do Diário de Obras).
  • Filtra os registros do dia anterior (o último dia com apontamento, pulando fins de semana/feriados sem registro).
  • Agrupa e formata a previsão do tempo por dia.
  • Monta o prompt final (injetando os dados) para a Inteligência Artificial.
  • Ollama - Gerar Relatório (HTTP Request): Envia o prompt para o modelo de LLM rodando localmente. Solicita a geração do relatório em texto corrido e natural.
  • Parsear Output do LLM (Code - JS): Captura a resposta da IA e extrai os metadados (obra, cidade, período) para compor a mensagem final.
  • Preparar Texto para TTS (Code - JS): Prepara o ambiente para a síntese de voz. Grava o texto do relatório em um arquivo temporário no disco, evitando problemas de caracteres especiais em linha de comando.
  • Kokoro TTS - Gerar Áudio (Execute Command): Aciona o ambiente virtual Python e executa o microsserviço generate_audio.py. Transforma o texto em um arquivo .wav de alta fidelidade usando modelos ONNX.
  • Preparar Saída Final (Code - JS): Consolida os caminhos dos arquivos gerados e valida se todos os componentes estão prontos. É o ponto de ramificação: a partir dele, os quatro nós seguintes são disparados em paralelo.

Distribuição multicanal e auditoria (em paralelo)

  • Telegram - Enviar Áudio (Execute Command): Utiliza curl para enviar o áudio via API de Bot do Telegram, configurando o player nativo com título e autor, e enviando o relatório em texto logo em seguida.
  • Gmail - Enviar Relatório (Execute Command): Aciona o microsserviço send_email.py, enviando o relatório em HTML formatado via SMTP do Gmail para a lista de destinatários (email_recipients.csv). Configurado com continueOnFail — se o Telegram cair, o e-mail ainda sai (e vice-versa).
  • Gravar Histórico em CSV (Execute Command): Registra a execução em historico_relatorios.csv, criando um índice tabular que relaciona o áudio gerado ao dia correspondente.
  • Logger - Métricas de Execução (Code - JS): Persiste a duração total e os canais ativados em execution_log.json — base para a análise de performance (ver aba Métricas e ROI).

Tratamento de erros (fluxo paralelo, sob falha)

  • Error Trigger: "Escuta" qualquer falha fatal em qualquer nó do pipeline.
  • Error Handler Global (Code - JS): Estrutura o erro (nó, mensagem, timestamp) e o persiste em error_log.json.
  • Notificar Erro via Telegram (Execute Command): Alerta imediatamente o administrador com o stack trace do erro, garantindo observabilidade sem depender da interface do n8n.

Especificações de Modelagem LLM (Qwen 2.5:14B) e TTS

Por que um modelo local, e por que o Qwen 2.5 (14B)?

A escolha por um modelo local não é uma alegação de superioridade técnica sobre modelos hospedados. Um Qwen 2.5 de 14B não compete com GPT-5 ou Claude em raciocínio complexo, e afirmar o contrário seria insustentável. A escolha foi feita por dois motivos concretos, que a tarefa em questão torna decisivos:

  • Privacidade. O diário de obras é dado operacional do cliente — apontamentos, ocorrências, eventualmente nomes. Com inferência local, esse conteúdo nunca sai da máquina rumo a um modelo de terceiro. É a base do RNF02 e o argumento central da aba Ética e LGPD.
  • Custo marginal zero. Não há cobrança por token nem por requisição: gerar o relatório nº 1.000 custa o mesmo que gerar o nº 1. Isso é o que torna a replicação para novas obras economicamente trivial.

Dentro dessa restrição — "tem que rodar aqui" —, o Qwen 2.5 de 14 bilhões de parâmetros foi o ponto de equilíbrio: entre os modelos testados que cabem em hardware de consumo, foi o que entregou aderência aos dados e formatação de saída limpa o suficiente para locução direta. A tarefa também ajuda: resumir apontamentos estruturados e cruzá-los com previsão de chuva é um problema delimitado, com o contexto inteiro fornecido no prompt — exatamente o tipo de trabalho em que um modelo médio local rende bem.

Decisão de projeto (trade-off consciente — qualidade × velocidade): o modelo de 14B excede a VRAM da GPU disponível (6 GB, GTX 1660 Ti), o que força parte da inferência para a RAM/CPU e aumenta o tempo de execução. Ainda assim, ele foi escolhido deliberadamente: os modelos menores (7B/8B) testados não entregaram a mesma qualidade de relatório — coerência técnica, aderência aos dados e formatação limpa para a leitura em áudio (TTS). Como o workflow roda uma vez por dia, de madrugada e sem intervenção humana, esse tempo extra de inferência não se torna uma limitação prática: prioriza-se a qualidade do relatório sobre a velocidade. Caso o cenário evolua para uso interativo/on-demand, a recomendação é migrar para um modelo quantizado mais leve ou para inferência em GPU dedicada/nuvem (ver o roadmap de melhorias na aba Métricas e ROI).

O Prompt de Engenharia (System Instructions)

Para extrair um output perfeito e formatado para leitura de áudio, o n8n utiliza um meta-prompt unificado injetado na API do Ollama:


Você é o assistente de planejamento diário do Engenheiro Ygor, responsável pela obra "{obra}", em {cidade}.

Sua função é gerar um relatório diário prático, que o engenheiro possa ouvir em áudio ou ler, e que o ajude a planejar o dia de trabalho. O relatório deve ser escrito em texto contínuo e fluente, como se estivesse falando diretamente com o engenheiro. 

IMPORTANTE: Escreva o relatório em texto corrido, sem usar títulos em negrito, sem marcadores como asteriscos (*), sem hífens decorativos (-), sem símbolos ou abreviações. O texto deve ser natural para ser ouvido em voz alta (TTS), evitando qualquer caractere que cause ruído na leitura.

Os dados abaixo são as únicas fontes de informação que você deve usar. Não invente, não suponha, não extrapole.

DIÁRIO DE OBRAS — dia anterior ({dataRefStr}):
{registrosFormatados}

PREVISÃO DO TEMPO — hoje e próximos dias:
{previsaoFormatada}

O relatório deve conter:
1. O que aconteceu no dia anterior (atividades, progresso, operários, ocorrências).
2. Previsão do tempo de hoje e dos próximos dias e impacto na obra.
3. Sugestão técnica concreta de ação para hoje e os próximos dias.

Português brasileiro. Linguagem técnica, porém natural para locução.

Lacuna conhecida — o nome do engenheiro está fixo no prompt. A obra e a cidade vêm de variáveis ({obra}, {cidade}), mas o nome do responsável está escrito diretamente no texto do prompt, dentro do nó Consolidação de Dados. Isso contradiz o princípio de "ponto único de verdade no .env" defendido na aba Robustez e Escala: da forma atual, replicar o pipeline para outra obra exigiria editar o JSON do workflow, e não só trocar o .env. A correção é pequena — ler um ENGENHEIRO_NOME do .env no nó de configuração e interpolá-lo no prompt — e está registrada no roadmap (aba Métricas e ROI, Prioridade 3, multi-tenant e onboarding templatizado). Está documentada aqui porque o requisito de multi-tenant do documento só se sustenta depois dessa mudança.

Tratamento de Áudio com Kokoro-ONNX

O output primário é enviado ao microsserviço assíncrono mantido em Python (scripts/generate_audio.py), que recebe o texto limpo, processa a síntese via API neural local em ONNX e gera o arquivo .wav com voz nativa do Português do Brasil.


Resultado Final e Prova de Conceito

Abaixo, a demonstração da entrega final realizada pelo sistema, em paralelo, nos dois canais de distribuição: Telegram (áudio com player nativo + relatório em texto) e E-mail (relatório HTML formatado).

Ouça o relatório. Este é o áudio gerado pelo pipeline — voz sintetizada localmente pelo Kokoro TTS (pf_dora, pt-BR), a partir do texto que o LLM produziu. Trecho de 40 segundos da execução de 22/06/2026, sem edição:

Áudio gerado pelo Kokoro TTS ONNX · 40 s · sem edição
Entrega via Telegram
Entrega via Telegram (áudio + texto)
Entrega via E-mail
Entrega via E-mail (HTML)

Duas ressalvas honestas sobre esta prova de conceito.

>

1. As datas do relatório vêm da base de teste, não do calendário. No áudio e no print acima, o sistema apresenta como "ontem" um apontamento de 20 de abril de 2026, enquanto o "hoje" da previsão do tempo é 23 de junho. Isso é esperado neste ambiente: o diário usado é a fixture registros_exemplo.json, com 15 registros fixos entre 06/04 e 20/04/2026, criada para reproduzir três cenários controlados. Ela não avança com o calendário, então toda execução posterior a 21/04 seleciona 20/04 como último dia com apontamento. A previsão do tempo, essa sim, vem da API em tempo real — daí a distância entre as duas datas.

>

O ponto que de fato merece atenção é outro: o nó de consolidação não impõe limite de idade ao registro que seleciona. Isso é inócuo com dados de teste, mas em produção significa que um diário sem preenchimento há uma semana produziria um relatório apresentando dado velho como recente, com sugestão de ação em cima dele. A guarda de frescor que resolve isso está detalhada na aba Análise e Limitações e consta do roadmap.

>

2. Os prints são de uma versão anterior do bot. O nome que aparece no Telegram (Relatório_Semanal_...) é resquício da fase em que o projeto rodava semanalmente; a cadência atual é diária. As capturas também estão em tela de celular (com barra de status e de navegação) e o e-mail aparece em modo escuro, o que prejudica a leitura do HTML formatado. Refazer os prints — bot renomeado, Telegram Web e Gmail Web em modo claro, com dados coerentes — está pendente.

Análise Crítica e Limitações Estruturais

Apesar do elevado grau de automação e integração autônoma construído por este projeto, existem potenciais fragilidades técnicas e logísticas na infraestrutura que precisam ser monitoradas e mitigadas antes da submissão a um patamar Enterprise-Grade de larga escala ou SaaS.


APIs Públicas em Free-Tier

Risco: O pipeline consome abertamente as rotas globais do OpenStreetMap Nominatim e da OpenWeather API.

  • Nominatim: Os Terms of Use do OpenStreetMap desencorajam ativamente consultas pesadas e automatizações de massa, operando com regras estritas de limitação de taxa (ex: 1 request/segundo). Caso mais workflows passem a invocar esse recurso de maneira simétrica, é provável a inserção do Endereço IP do container em listas de negação/bloqueio.
  • OpenWeather: A API gratuita suporta limites generosos de requisições diárias (~1.000/dia no free tier), muito acima da necessidade atual de 1 requisição por dia útil. Exige chave de API configurada.

Mitigação implementada:

  • Header de identificação: Configurado o User-Agent personalizado (relatorio-obra/1.0) conforme exigido pelos termos do Nominatim.
  • Frequência de consulta controlada: O pipeline executa 1x por dia útil (~21x/mês), mantendo-se muito abaixo de qualquer limite de taxa do Nominatim (1 req/s) e do OpenWeather (~1.000 req/dia no free tier).

Mitigação pendente (roadmap):

  • Cache de geocodificação: como as coordenadas de uma obra não mudam, o par lat/lon deveria ser resolvido uma única vez e fixado no .env (ou em um cache local), eliminando por completo a dependência recorrente do Nominatim. Ainda não implementado — hoje o pipeline consulta o Nominatim a cada execução. Consta como item da Prioridade 3 do roadmap (aba Métricas e ROI). O risco atual é baixo (1 requisição por dia útil, muito abaixo do limite), mas a dependência é evitável e desnecessária.

O Preço da Alucinação Generativa

Risco: Modelos de 4 a 14 bilhões de parâmetros geram texto plausível, não verificado. O risco concreto aqui é a correlação espúria: o modelo recebe "4 mm de chuva prevista" e pode concluir que a concretagem da laje deve ser suspensa — mas essa relação não é automática no mundo físico. Ela depende da drenagem do canteiro, da fase da cura, da cobertura disponível e da janela de aplicação, informações que não estão no dado enviado ao modelo. Ele infere a partir do que soa razoável no texto, sem acesso à realidade da obra. Quanto menor o modelo, maior a tendência a preencher essa lacuna com o que é estatisticamente comum em vez do que é tecnicamente correto.

Mitigação implementada:

  • Prompt Engineering restritivo: O prompt delimita estritamente 3 seções (dados, previsão, recomendação) e instrui explicitamente "não invente, não suponha, não extrapole", reduzindo a margem para divagação ou correlações espúrias.
  • Limite de tokens (num_predict: 2048): Impede respostas excessivamente longas, onde alucinações tendem a se acumular.
  • Validação humana no primeiro mês: Recomenda-se que o engenheiro residente revise os relatórios nas primeiras 4 semanas antes de confiar plenamente no output automatizado. A decisão técnica permanece, em qualquer cenário, do responsável pela obra (ver aba Ética e LGPD).

Sobre a temperatura de 0.7 — trade-off assumido, não mitigação.

>

O pipeline roda com temperature: 0.7. Esse valor é alto para geração factual ancorada em dados: a prática comum em tarefas que não podem inventar é 0.1–0.3, e seria desonesto apresentar 0.7 como se fosse uma calibragem de segurança contra alucinação. Não é — é o oposto.

>

A escolha foi deliberada e tem um motivo específico deste projeto: o texto é feito para ser ouvido, não lido. Em temperaturas baixas, o modelo produziu relatórios corretos porém repetitivos e telegráficos, com estrutura previsível frase a frase — algo tolerável em tela, mas cansativo em locução de dois minutos. A 0.7 o texto ganha variação de construção e soa como alguém falando, que é o requisito de produto (o relatório concorre com o rádio do carro a caminho da obra).

>

O custo desse ganho é maior variabilidade, e ele é pago com as outras três barreiras: prompt restritivo com dados fechados, limite de tokens e validação humana no primeiro mês. É um trade-off consciente entre fluidez de locução e determinismo, e não uma afirmação de que 0.7 protege contra alucinação.

>

Próximo passo (roadmap): rodar uma bateria comparativa a 0.2, 0.3 e 0.7 sobre os mesmos três cenários de teste, avaliando (a) aderência aos dados e (b) qualidade percebida da locução, para trocar esta justificativa por uma medição.


Bloqueio Temporal de Hardware (Concorrência Sequencial)

Risco: O TTS roda via executeCommand porque o n8n não tem nó nativo para o Kokoro — a síntese é delegada a um script Python isolado (generate_audio.py). O efeito colateral é que as bibliotecas kokoro_onnx e soundfile carregam o modelo ONNX na memória a cada execução, logo depois de o LLM liberar a sua. Em hardware limitado, essas duas cargas disputam a mesma VRAM (ou a RAM compartilhada), e uma sobreposição entre elas causaria falha por falta de memória. Em máquinas edge mais fracas, o encadeamento das duas inferências também gera aquecimento sustentado e consequente throttling térmico.

Mitigação implementada:

  • Execução sequencial garantida: O pipeline de dados e IA é linear (10 nós em série, do gatilho à preparação da saída), garantindo que o TTS só inicia após o LLM terminar completamente, evitando concorrência por VRAM. A distribuição multicanal ocorre apenas depois, em paralelo.
  • Timeout de segurança (300s): O nó de requisição ao Ollama tem timeout de 5 minutos, prevenindo travamentos em caso de modelo lento.
  • Trade-off de hardware assumido conscientemente: O modelo de 14B excede os 6 GB de VRAM (GTX 1660 Ti) e usa offloading para RAM/CPU — uma escolha deliberada por qualidade do relatório (modelos menores 7B/8B não atingiram o mesmo nível). É viável porque a execução é diária e off-line, tornando o tempo extra irrelevante (ver aba Arquitetura e n8n, "Especificações de Modelagem LLM e TTS"). O timeout de 300s cobre com folga a inferência resultante. O custo dessa decisão está registrado abertamente: o objetivo O2 (< 60 s de geração) não foi atingido — ver aba Diagnóstico e Objetivos.

Ausência de Guarda de Frescor no Dado de Entrada

Risco: O nó Consolidação de Dados seleciona o último registro do diário anterior à data de execução, sem verificar há quanto tempo esse registro foi feito. A regra existe para pular fins de semana e feriados sem apontamento — comportamento correto e desejado —, mas não tem limite superior. O pipeline não sabe distinguir "não há registro de ontem porque foi feriado" de "não há registro de ontem porque ninguém preencheu o diário há duas semanas": nos dois casos ele volta no tempo até achar algo e apresenta o que encontrar como o dia anterior.

Como isso ficou visível — e o que ele não significa. O relatório demonstrado na aba Arquitetura e n8n narra como "ontem" um apontamento de 20 de abril e situa o "hoje" em 23 de junho. Esse descompasso é um artefato do ambiente de teste, não um defeito em operação: a base registros_exemplo.json é uma fixture estática com 15 registros fixos entre 06/04 e 20/04/2026, construída para reproduzir três cenários controlados (rotina normal, chuva intensa e problema logístico). Datas fixas são exatamente o que se quer de uma base de teste — sem elas, os cenários não seriam reproduzíveis. Como a fixture não acompanha o calendário, qualquer execução posterior a 21/04 seleciona 20/04, e a distância cresce com o tempo. O pipeline fez precisamente o que foi programado para fazer.

O que o episódio de fato revela é uma lacuna de projeto que a base de teste apenas tornou observável: em produção, com um diário real, a mesma regra de seleção apresentaria um apontamento de uma semana atrás como se fosse de ontem, caso o engenheiro deixasse de preencher. E aí importa. O sistema não erraria ao gerar o texto — erraria ao selecionar o dado, e o LLM narraria fielmente o que recebeu. Nenhuma das mitigações de alucinação descritas acima protege contra isso, porque o dado é legítimo, apenas está vencido. O resultado seria um plano de ação construído sobre uma frente de serviço que já mudou — o cenário de "alucinação com consequência física" descrito na aba Ética e LGPD, com origem no dado e não no modelo.

Mitigação proposta (não implementada — item de roadmap):

  • Guarda de frescor no nó de consolidação: comparar a data do último registro com a data de execução. Se a defasagem exceder N dias úteis (sugestão: 3), não tratar o registro como "ontem".
  • Degradação explícita no relatório: nesse caso, o prompt deve receber a defasagem como dado ("último apontamento: 12 dias atrás") e instruir o modelo a declará-la abertamente na abertura do relatório.
  • Supressão da sugestão técnica: com dado defasado, a seção de plano de ação deve ser substituída por um alerta de diário desatualizado — melhor não sugerir do que sugerir sobre base vencida.
  • Alerta ao responsável: reaproveitar o canal de notificação de erro já existente para avisar que o diário está sem preenchimento.

Como efeito colateral bem-vindo, a guarda também resolve o incômodo da demonstração: com ela, uma execução sobre a fixture de abril passaria a declarar a defasagem em vez de silenciá-la.


Relatório de Testes de Stress — Pipeline Multicanal

Gerado em: 25/05/2026 às 16:12

Como ler estes números — limitações do desenho do teste.

>

- n = 3 rodadas por combinação componente × payload. É amostra pequena: suficiente para dimensionar ordens de grandeza e identificar o gargalo dominante, insuficiente para estimar caudas de distribuição ou percentis com confiança. Onde este documento afirma "média", leia "média de três medições" — a mesma ressalva de amostra que a aba Métricas e ROI aplica ao intervalo de Wilson vale aqui.

- A coluna RAM MB é ocupação total do sistema, não do processo. Os ~14–15 GB reportados nas linhas do Ollama e do TTS são a memória em uso na máquina inteira durante a medição, não o consumo do modelo isolado — o que explica por que aparecem valores acima dos 6 GB de VRAM da GPU. Com os 32 GB de RAM da máquina de referência, esse patamar representa pouco menos da metade da capacidade total — folga confortável, não saturação. Serve para mostrar a ordem de grandeza do offloading para RAM/CPU quando o modelo excede a VRAM, não um sinal de risco de memória.

- Ambiente: notebook com GTX 1660 Ti (6 GB VRAM), 32 GB RAM, execução local, rede residencial. Sem isolamento de carga: outros processos do sistema operacional estavam ativos.

Resumo por Componente

ComponentePayloadRodadasMín (s)Méd (s)Máx (s)CPU %RAM MBStatus
ollamacurto (55)33.0434.7277.24265.313897.4✅
ollamamedio (810)360.99778.442104.16894.314654.0⚠
ollamalongo (1105)3119.618132.763139.42399.814368.8⚠
ttscurto (140)34.9715.3715.79475.414689.3✅
ttsmedio (1184)329.67731.03633.02078.215151.5✅
ttslongo (3504)372.64278.01183.20173.915164.0⚠
smtpconnection (—)31.6581.7051.799——✅
smtpsmall_500 (500)33.0483.2553.420——✅
smtpmedium_2000 (2000)33.1103.1403.166——✅
smtplarge_8000 (8000)33.1173.3073.613——✅
telegramcurto (38)30.73610.75630.777——✅
telegrammedio (694)30.7651.1101.788——✅
telegramlongo (2954)30.7420.7510.760——✅
telegramaudio_upload (9.26)33.6383.9484.445——✅

Análise de Gargalos

MétricaComponenteTempo Médio
Mais lentoollama71.977s
Mais rápidosmtp2.852s

Ranking de Latência (maior → menor)

ComponenteProgresso VisualTempo Médio
ollama██████████████████████████████71.977s
tts███████████████░░░░░░░░░░░░░░░38.139s
telegram█░░░░░░░░░░░░░░░░░░░░░░░░░░░░░4.141s
smtp█░░░░░░░░░░░░░░░░░░░░░░░░░░░░░2.852s

Teste de Rajada (Burst) — SMTP

MétricaValor
E-mails enviados6
Falhas0
Tempo total18.308s
Média por e-mail3.051s
Degradação (último - primeiro)-0.015s

Reflexão Crítica sobre os Resultados

Com base nos resultados dos testes executados em 25/05/2026, apresenta-se a seguinte análise crítica do pipeline:

>

1. Qual é o gargalo real do pipeline?

O gargalo incontestável é o componente local de Inteligência Artificial, primariamente o Ollama (LLM), com média de ~72s (chegando a picos de 139s no payload longo, com CPU atingindo 99.8%), seguido pelo Kokoro TTS (~38s, com pico de 78s para textos de 3504 caracteres). Eles dominam quase 100% do tempo de execução. Para o otimizar, seria essencial diminuir a parametrização do modelo local (ex: de 14B para 7B/8B) ou mover a inferência de CPU para uma GPU robusta.

>

2. Existe correlação entre tamanho do payload e latência?

Sim, forte e linear para componentes de IA. No TTS, o tempo saltou de ~5.4s (140 chars) para ~78s (3504 chars). No Ollama, a latência cresce de ~4.7s (55 chars) para ~132.8s (1105 chars). Em contrapartida, os canais de rede (SMTP e texto do Telegram) apresentam tempos praticamente constantes (~3.1s e ~0.75s respectivamente), revelando que a latência de transferência de pequenos KB não é impactada pelo tamanho real do payload.

>

3. O que explica o outlier de 30,8 s no Telegram com payload curto?

Essa linha merece explicação porque é a maior anomalia da tabela: mín 0,736 s, méd 10,756 s, máx 30,777 s — variação de ~40× em uma mensagem de 38 caracteres. As outras três combinações do Telegram (médio, longo, upload de áudio) são estáveis, com tempos entre 0,74 s e 4,4 s e desvio irrelevante. Como a rodada de payload curto é a primeira chamada da bateria do Telegram, a hipótese mais provável é custo de conexão fria: resolução DNS, handshake TLS com api.telegram.org e possivelmente uma retentativa por timeout de rede — as duas rodadas seguintes, com a conexão já aquecida, voltaram a ~0,75 s. Um throttle do lado da API é menos provável, já que o volume era de uma mensagem.

Ressalva: isso é hipótese, não diagnóstico — o script não registra o tempo de handshake separadamente, então não há como confirmar pelos dados coletados. O que se pode afirmar com segurança é que a média de 10,756 s não representa o comportamento típico do canal; a mediana das três rodadas (~0,75 s) representa. Instrumentar a fase de conexão e repetir com n maior é o que fecharia essa questão.

Em termos de impacto: mesmo que o pior caso de 30 s se repetisse todo dia, ele consumiria ~10% do SLA de 300 s, e o canal de e-mail seguiria entregando em paralelo.

>

4. O teste de rajada SMTP revelou degradação?

Não. O envio em massa de 6 e-mails levou apenas ~18.3 segundos no total (média de ~3.05s por e-mail), com uma degradação negativa (-0.015s), confirmando que a conexão TLS aquecida mantém performance estável. Não há throttle evidente do Gmail para essa volumetria.

>

5. Quais otimizações seriam prioritárias para escalar?

* Adoção de um LLM quantizado mais veloz (Llama 3 8B q4) para cortar o tempo do Ollama pela metade.

* Uso de ThreadPools caso múltiplos áudios pequenos precisassem ser gerados (o script Python atual do TTS é sequencial).

* Manter a conexão SMTP (Session Pooling) se o sistema for usado para disparos para milhares de pessoas de forma individualizada.

>

6. O sistema está pronto para produção?

Sim, para o escopo definido (cronjob diário rodando de madrugada). Como a execução de ~3,5 minutos (mediana) ocorre às 06:30 localmente e sem intervenção humana, antes do início da jornada, a latência do Ollama é tolerável. Se o cenário mudar para uma API interativa em tempo real (on-demand), será mandatório migrar a inferência de IA para nuvem (OpenAI / Groq) ou para servidor físico com GPUs dedicadas.

Robustez, Escalabilidade e Boas Práticas

Para que um sistema de automação deixe de ser apenas um script utilitário e alcance o patamar Enterprise-Grade (preparado para produção e escalabilidade), ele precisa ser resiliente a falhas, facilmente monitorável e configurável sem alteração de código.


Tratamento de Erros e Resiliência (Error Handling)

A manipulação de erros foi projetada em duas camadas (Orquestrador e Microsserviços), visando garantir que o engenheiro sempre saiba o que aconteceu, sem que falhas parciais quebrem o fluxo inteiro.

Como foi implementado:

  • Error Handler Global (n8n): Existe um fluxo de gatilho de erro (Error Trigger) que "escuta" qualquer falha fatal no pipeline. Caso o Nominatim negue a conexão ou o Ollama sofra um timeout, o nó de notificação via Telegram é acionado imediatamente com a stack trace do erro, avisando o administrador.
  • Fallbacks de Continuidade (continueOnFail): Os nós paralelos de distribuição (Telegram e Gmail SMTP) estão configurados para continuar em caso de falha. Se a API do Telegram estiver fora do ar, o envio de E-mail acontece normalmente, garantindo que a informação chegue por pelo menos um canal.
  • Retry com Exponential Backoff (Python): O microsserviço send_email.py intercepta exceções transitórias (ex: smtplib.SMTPException) e tenta o envio até 3 vezes, aguardando 2s, 4s e 8s entre as tentativas, abortando apenas em erros definitivos de autenticação.

Justificativa Arquitetural

Em ambientes de microsserviços integrados a APIs públicas em free-tier (OpenWeather, Nominatim, Telegram), a instabilidade de rede é uma certeza estatística, não uma probabilidade. Se o pipeline falhar silenciosamente por causa de uma queda de 5 segundos no SMTP, o engenheiro perderá o relatório de planejamento daquele dia. O graceful degradation (falhar graciosamente) garante confiança no sistema.


Logs Interpretáveis e Auditoria Estruturada

O monitoramento não depende da interface gráfica do n8n; ele gera telemetria agnóstica para ingestão externa.

Como foi implementado:

  • JSON de Execução: O arquivo data/output/execution_log.json é populado a cada execução bem-sucedida, registrando a duração total do pipeline e os canais que foram ativados com sucesso.
  • Log de Erros Isolado: Caso o Error Handler Global seja acionado, o erro é estruturado e persistido em error_log.json.
  • Histórico CSV: A execução adiciona uma linha no arquivo historico_relatorios.csv, criando um índice tabular rápido de relacionar um áudio .wav gerado ao dia correspondente.
  • Standard Out/Err (Python): Os microsserviços utilizam a biblioteca logging nativa do Python, entregando logs padronizados (INFO, WARNING, ERROR) diretamente ao terminal do orchestrator.

Justificativa Arquitetural

Depender do banco de dados SQLite interno do n8n para histórico de execuções é um gargalo de observabilidade. Ao persistir os logs em JSON e CSV no file system, a infraestrutura fica pronta para uma stack de observabilidade convencional, sem adicionar sobrecarga ao n8n. O caminho seria um coletor lendo os arquivos e uma camada de visualização por cima — por exemplo, Promtail → Loki → Grafana, ou Filebeat → Elasticsearch → Kibana. (Vale a precisão: o Grafana não faz ingestão de arquivos; ele consulta uma fonte de dados. Quem lê o arquivo é o coletor.) Com isso, alertas de degradação de latência ou de queda na taxa de sucesso passam a ser configuráveis sem tocar no workflow.


Uso Consistente de Variáveis de Ambiente (.env)

O código e o ambiente estão estritamente separados, seguindo os princípios do Twelve-Factor App.

Como foi implementado:

  • Ponto Único de Verdade: Todas as chaves de API, credenciais SMTP, modelo LLM em uso e até a cidade alvo da obra estão armazenados unicamente no arquivo .env.
  • Injeção via Wrapper: O arquivo de inicialização start_n8n.sh faz o _source_ do .env e habilita NODE_FUNCTION_ALLOW_BUILTIN=fs antes de levantar o orquestrador.
  • Nó de Configuração Inicial: o nó 1 (Configurações Iniciais) lê o arquivo .env diretamente do disco com fs.readFileSync, faz o parse das chaves e propaga os valores pelo restante do fluxo. É por isso que o start_n8n.sh precisa liberar o módulo fs — sem essa permissão, o nó falha.
  • Proteção de Repositório: O arquivo real é ignorado pelo .gitignore, e um arquivo documentado .env.example é disponibilizado para integração de novos desenvolvedores.

Justificativa Arquitetural

Hardcoding (chumbar variáveis no código) impede a portabilidade. O uso estrito do .env permite que este pipeline seja clonado e rodado para várias obras ao mesmo tempo: bastaria instanciar N containers, injetando um .env diferente em cada um (com cidades, tokens e chats específicos), sem alterar o JSON do workflow.

Ressalva honesta sobre esse "sem alterar uma linha". Hoje ainda não é verdade por completo: o nome do engenheiro responsável está escrito diretamente no texto do prompt, dentro do nó Consolidação de Dados (ver aba Arquitetura e n8n). Enquanto esse valor não vier do .env, replicar para outra obra exige editar o workflow — e o princípio de "ponto único de verdade" descrito acima vale para tudo, menos para esse campo. A correção é pequena e está no roadmap; até lá, o registro correto é este.


Organização Escalável via Microsserviços

Em vez de centralizar toda a lógica num único script monolítico de Python ou tentar forçar o n8n a processar áudio nativamente, adotou-se uma arquitetura de orquestração delegada.

Como foi implementado:

  • O n8n atua puramente como "Maestro" (Orquestrador de rede, Cronjob e HTTP routing).
  • Processamentos pesados de CPU (Síntese Neural Kokoro TTS) e fluxos stateful complexos (SMTP Timeout Handshake) são delegados via subprocessos para Workers em Python (generate_audio.py, send_email.py).

Justificativa Arquitetural

Essa organização abre um caminho claro para escalar horizontalmente — vale registrar que é um caminho projetado, não um resultado demonstrado: até aqui o sistema rodou apenas em uma máquina, e nenhuma execução distribuída foi testada. O desenho, porém, é o que torna essa evolução barata: se amanhã o modelo TTS Kokoro ficar pesado demais para a CPU local, o script generate_audio.py pode ser movido para uma GPU alugada na nuvem, e o n8n apenas trocará um comando local por uma chamada de API ou execução remota via SSH, sem quebrar o workflow principal. Cada ferramenta faz apenas o que foi desenhada para fazer melhor.

Métricas de Performance, Confiabilidade e ROI

Esta seção analisa quantitativamente o desempenho do pipeline em produção (latência real ponta a ponta), modela a taxa de sucesso considerando os riscos de uma operação on-premise, e quantifica o valor gerado para o cliente (tempo de engenharia recuperado, payback e ROI) junto com a viabilidade econômica da solução. Ao final, propõe um roadmap de melhorias priorizadas.


Latência: Tempo Real de Ponta a Ponta

Como o sistema opera localmente e de forma assíncrona (cronjob de madrugada), a métrica de latência relevante para o negócio é o tempo total decorrido entre o disparo do workflow e a entrega multicanal (Telegram + E-mail). Esse valor é registrado automaticamente em data/output/execution_log.json a cada execução bem-sucedida.

Número de manchete usado em todo o portal: a mediana (P50) de 3,5 min. A média (3,66 min) aparece somente na tabela de estatística descritiva abaixo. Onde este documento, o hero ou os painéis de síntese citarem "3,5 min", trata-se sempre da mediana das 9 execuções medidas.

Execuções reais medidas (n = 9)

Estas 9 execuções são de homologação, não de operação contínua. Sete delas ocorreram em ~45 minutos do dia 19/05 e as outras duas em 25/05 — são rodadas de teste disparadas manualmente para medir o pipeline, e não 9 dias de produção. Nenhuma conclusão deste documento depende de tratá-las como série temporal.

#TimestampDuração total (s)Dentro do SLA (< 300s)?
12026-05-19 12:07271,10✅
22026-05-19 12:27183,13✅
32026-05-19 12:32173,31✅
42026-05-19 12:40220,16✅
52026-05-19 12:52169,04✅
62026-05-25 14:55190,38✅
72026-05-25 22:14208,14✅
82026-05-25 22:33308,11⚠ (+8s)
92026-05-25 22:44253,38✅

Estatística descritiva da latência ponta a ponta

MétricaValor (s)Valor (min)
Mínimo169,042,82
Média (x̄)219,643,66
Mediana (P50)208,143,47
Máximo308,115,14
Desvio-padrão (σ)≈ 45,6≈ 0,76
Aderência ao SLA (< 300s)8 de 9 → 88,9%—

Leitura crítica: A latência mediana real (≈ 3,5 min) está confortavelmente dentro do requisito não-funcional RNF01 (< 5 min / 300s). Apenas 1 das 9 execuções (a #8, com 308s) ultrapassou o teto em ~8 segundos — provavelmente por um relatório mais longo combinado com pressão de memória. Esse resultado confirma que o protótipo é apto para o cenário de uso definido (entrega diária de madrugada, antes do início da jornada), onde mesmo 5 minutos são imperceptíveis para o usuário.

>

Nota sobre a cadência diária: estas 9 execuções foram medidas com o gatilho de homologação processando uma janela maior de dados. No modo diário, cada execução consolida apenas o dia anterior (≈ 1/7 do volume de registros), o que reduz o tamanho do prompt enviado ao LLM. Portanto, os números acima são um teto conservador — a latência diária tende a ser igual ou menor.

Decomposição da latência (onde o tempo é gasto)

Cruzando o tempo ponta a ponta com os testes de stress por componente (aba Testes de Stress), fica claro que a inferência de IA local domina o orçamento de tempo:

ComponenteTempo médio (s)% do pipelineNatureza
Ollama (LLM Qwen 2.5:14B)~72~50–65%CPU/GPU-bound
Kokoro TTS (síntese de voz)~38~17–25%CPU-bound
APIs externas (Nominatim + OpenWeather)~2–4~2%Rede
SMTP (Gmail)~3~1,5%Rede
Telegram (texto + upload de áudio)~4~2%Rede
Orquestração n8n + I/O de discorestante~10%Overhead

Conclusão: ~85% do tempo é consumido por dois nós de IA on-device. Otimizar a rede ou o n8n teria efeito desprezível; toda alavanca de melhoria de latência está na camada de modelos.

Efeito colateral registrado: é essa mesma escolha de modelo que faz o objetivo O2 (< 60 s de geração) não ser atingido — o nó do Ollama mede ~72 s de média. O alvo de negócio (RNF01, < 300 s ponta a ponta) é cumprido; o alvo de componente, não. A discussão completa está na aba Diagnóstico e Objetivos.

Ganho sobre o processo manual (baseline)

CenárioTempo de consolidaçãoFonte
Manual (rotina do diário + consulta e correlação do clima, por dia)~40 min (2.400 s)⚠️ Premissa composta: ~30 min da rotina do RDO (referência setorial) + ~10 min arbitrados de consulta e correlação climática. Ver nota metodológica e a fronteira do ganho na aba Diagnóstico e Objetivos; tratada como variável na análise de sensibilidade
Automatizado (pipeline)3,5 min (208 s, mediana P50)Medido (n = 9)
Redução−91,3%≈ 11,5× mais rápido

A premissa mais sensível do documento é o baseline de 40 minutos, não a latência medida — e ela é composta a partir de uma referência setorial adjacente, não medida diretamente. Soma-se a isso a fronteira do ganho: parte dessa rotina (a captura do dado em campo) não é substituída pelo pipeline, o que puxa o tempo efetivamente recuperado para baixo do teto de 40 min. Se o tempo manual real for de 20 minutos, o ganho cai para ~5,8× e o valor anual gerado cai pela metade, sem ainda assim inverter a conclusão econômica (ver a análise de sensibilidade adiante). É justamente por não ser um número apurado que ele entra na matriz de sensibilidade como variável, em vez de ser tratado como dado.


Taxa de Sucesso e Confiabilidade (Operação On-Premise)

Premissa adotada (conforme alinhamento): como o sistema roda em hardware local, a "taxa de sucesso" não se resume a o software funcionar — ela precisa incorporar os riscos físicos de uma operação on-premise: queda de energia, indisponibilidade da máquina, travamento de SO/processo, falha de rede e instabilidade das APIs públicas.

Sucesso observado vs. confiabilidade modelada

  • Sucesso observado (controlado): 9 de 9 execuções concluídas (100%), todas com os 3 canais ativados (telegram, email, csv).
  • Ressalva estatística honesta: com apenas 9 amostras, não é defensável afirmar "100% de confiabilidade". O intervalo de confiança de Wilson (95%) para 9/9 tem limite inferior de ~70%. Por isso, modelamos a confiabilidade esperada em regime contínuo a partir das taxas de falha de cada dependência.

Modelo de confiabilidade por execução

Cada execução só é bem-sucedida se todas as etapas críticas ocorrerem. O sistema falha graciosamente (multicanal + retry), então a falha de um único canal não derruba o pipeline — só há falha total se um componente crítico cair ou se ambos os canais falharem.

Fator de riscoDisponib. estimada por execuçãoJustificativa / fonte
Máquina ligada e SO saudável no gatilho99,5%Risco de a máquina estar suspensa/desligada às 06:30 (ver "O risco dominante", a seguir)
Energia elétrica durante a janela (~4 min)99,9%DEC nacional ANEEL ≈ 10–13 h/ano de interrupção (~0,12% do tempo); janela curta. Em notebook, a bateria atua como no-break
Internet disponível99,5%Banda larga residencial; janela curta
Compute de IA sem crash/OOM (Ollama+TTS)99,0%Risco vem da CPU a ~99,8% no pico (offloading do modelo de 14B), não da RAM — com 32 GB no total, os ~15 GB usados por Ollama+TTS deixam folga confortável (ver aba Testes de Stress)
Ao menos 1 canal entrega (Telegram ou E-mail)99,95%2 canais independentes + retry com backoff exponencial

Cálculo composto (produto das probabilidades):


P(sucesso) ≈ 0,995 × 0,999 × 0,995 × 0,990 × 0,9995 ≈ 0,9787
Métrica de confiabilidadeValor estimado
Taxa de sucesso por execução≈ 97,9%
Execuções por ano (dias úteis)≈ 252
Execuções bem-sucedidas esperadas/ano≈ 247
Relatórios perdidos esperados/ano≈ 5 (baixo impacto — ver nota)
MTBF (intervalo médio entre falhas)≈ 1 falha a cada ~47 execuções (~9 semanas úteis)

Leitura crítica: Uma taxa de ~98% por execução é mais que adequada para uma cadência diária — e, ao contrário do modelo semanal, a falha de um dia tem baixo impacto: o relatório do dia seguinte cobre a lacuna (auto-recuperação natural da cadência diária). Os ~5 relatórios perdidos/ano se diluem em 252 execuções. O elo mais fraco não é o código, e sim a infraestrutura física (máquina ligada + energia). O graceful degradation já implementado (multicanal, retry, error handler global) protege bem contra falhas de rede/canal; o que falta endereçar é a disponibilidade do host.

O risco dominante: disponibilidade do host pessoal

O maior risco para uma operação on-premise em notebook pessoal é simplesmente a máquina não estar ligada/acordada todo dia útil às 06:30. A premissa P1 (aba Canvas de Projeto) assume o servidor disponível, mas em uso real isso é frágil — e numa cadência diária a exigência de disponibilidade é ainda maior. As mitigações estão no roadmap ao final desta aba: máquina dedicada always-on, wake timer/BIOS, watchdog com re-disparo e fallback opcional para nuvem.


Valor Gerado e Viabilidade Econômica

Importante: os valores abaixo são estimativas paramétricas com premissas explícitas para o mercado brasileiro. São facilmente ajustáveis — basta alterar a taxa-hora, os dias úteis ou o custo de implantação de referência. O objetivo é demonstrar a lógica de viabilidade econômica, não cravar um número exato.

Valor gerado para o cliente (construtora)

Custo-hora do engenheiro residente (base legal verificável): salário de 8,5 salários mínimos × R$ 1.621,00 = R$ 13.778,50/mês. Com jornada de 8 h × 21 dias úteis = 168 h/mês, o custo-hora é ≈ R$ 82,00/h — ou ≈ R$ 55,00 a cada 40 minutos.

Fontes dos dois números:

>

- 8,5 salários mínimos não é uma estimativa de mercado: é o salário mínimo profissional dos engenheiros previsto na Lei nº 4.950-A/1966, que fixa 6 salários mínimos para jornada de 6 horas e 8,5 salários mínimos para jornada de 8 horas — piso legal fiscalizado pelo sistema CONFEA/CREA. Usar o piso legal, e não uma pesquisa salarial, torna a premissa verificável e conservadora — a remuneração praticada para o cargo costuma ficar acima do piso.

- R$ 1.621,00 é o salário mínimo nacional vigente em 2026, reajustado a partir de 1º de janeiro de 2026 (era R$ 1.518,00 em 2025). Se este documento for lido em ano posterior, é este o valor a atualizar.

>

Duas ressalvas metodológicas:

>

1. O divisor de 168 h/mês (8 h × 21 dias úteis) é o mais desfavorável ao cálculo do que se usa como referência a jornada legal de 44 h semanais (~191 h/mês), que produziria ≈ R$ 72/h e economia de ~R$ 48 por execução. A conclusão econômica não muda — ver a análise de sensibilidade adiante.

2. O cálculo usa o salário-base, sem encargos. Com encargos sociais (~+70%: FGTS, INSS, 13º, férias), o custo real para a construtora seria ~R$ 140/h e a economia ~R$ 93/execução. Portanto, R$ 55 é um piso seguro, não uma projeção otimista.

A cada execução, o engenheiro economiza os ~40 minutos que gastaria compilando o diário e o clima manualmente — tempo redirecionado para atividades de maior valor agregado (gestão de equipe, análise, decisão em campo). Como o relatório agora é diário (todo dia útil), o valor se acumula:

PeríodoCálculoEconomia (só tempo)
Por execução (1 dia)40 min × R$ 82/hR$ 55
Por semanaR$ 55 × 5 dias úteisR$ 275
Por mêsR$ 55 × 21 dias úteis~R$ 1.155
Por anoR$ 55 × 252 dias úteis≈ R$ 13.860 / obra

(Upside não contabilizado neste piso: os encargos sociais elevariam o valor a ~R$ 23 mil/ano; e o retrabalho evitado — concretagem ou pintura externa programadas em dia de chuva — costuma ser o maior valor financeiro na construção. Também não monetizados: melhor comunicação com a diretoria, rastreabilidade e decisões mais bem informadas.)

Retorno para o cliente (payback e ROI)

O retorno depende de duas premissas que não são medidas, e sim arbitradas: o custo de implantação (não há venda realizada — não existe preço praticado) e o baseline de 40 min/dia (premissa arbitrada, ver aba Diagnóstico e Objetivos). Fixar um número único para cada uma e anunciar "ROI de 208%" transformaria duas suposições em um resultado. Em vez disso, o quadro abaixo mostra como a conclusão se comporta quando as duas premissas variam.

ROI no 1º ano — sensibilidade cruzada

Custo de implantação ↓ / Baseline manual →20 min/dia (R$ 6.930/ano)30 min/dia (R$ 10.395/ano)40 min/dia (R$ 13.860/ano)
R$ 3.000+131%+247%+362%
R$ 4.500 (referência)+54%+131%+208%
R$ 8.000−13%+30%+73%

Payback (meses) — mesma matriz

Custo de implantação ↓ / Baseline manual →20 min/dia30 min/dia40 min/dia
R$ 3.000~5,2~3,5~2,6
R$ 4.500 (referência)~7,8~5,2~3,9
R$ 8.000~13,9~9,2~6,9

O que a matriz mostra: em 8 das 9 combinações o investimento se paga dentro do primeiro ano. A única célula negativa é o pior cenário simultâneo — implantação cara (R$ 8.000) e baseline manual de apenas 20 minutos —, e mesmo ali o retorno vira positivo no segundo ano, já que o custo recorrente de operação é ~R$ 0. Ou seja: a conclusão "vale a pena" é robusta às premissas, e não uma consequência de escolher os números certos.

Métrica (cenário de referência)CálculoResultado
PaybackR$ 4.500 ÷ ~R$ 1.155/mês≈ 3,9 meses
ROI no 1º ano(R$ 13.860 − R$ 4.500) ÷ R$ 4.500≈ 208%
Custo recorrente de operaçãoIA 100% local, sem APIs pagas≈ R$ 0/mês

Todo o retorno acima considera apenas o tempo de engenharia recuperado — o retrabalho evitado (uma concretagem ou pintura externa cancelada a tempo por causa da previsão de chuva), tipicamente o maior componente de valor na construção, entraria como upside e não está em nenhuma célula das tabelas.

Viabilidade econômica da solução

Do lado da construção da solução, o esforço total foi de ~150 h (pesquisa, desenvolvimento, testes e documentação) sobre uma stack 100% open-source, sem custos de licença ou de API. Disso decorrem duas propriedades econômicas que sustentam a viabilidade:

  • Custo marginal de operação próximo de zero: toda a inferência (LLM + TTS) roda localmente; não há cobrança por token, por requisição ou por usuário — gerar o relatório nº 1.000 custa o mesmo que gerar o nº 1.
  • Custo de replicação baixo: implantar o sistema em uma nova obra se resume a configurar variáveis de ambiente e canais de entrega. Num cenário comercial, o investimento de desenvolvimento se dilui rapidamente ao replicar a solução em poucas obras ou clientes, com esforço incremental mínimo por implantação.

Propostas de Melhoria (Roadmap Priorizado)

Melhorias derivadas diretamente das métricas acima, ordenadas por impacto × esforço.

Prioridade 0 — Lacunas conhecidas (precedem qualquer otimização)

Itens abertos que fecham lacunas já identificadas e documentadas neste portal. Não otimizam nada — apenas alinham o sistema ao que a documentação afirma sobre ele:

  • Guarda de frescor no nó Consolidação de Dados: a seleção do "dia anterior" não impõe limite de idade ao registro, então um diário sem preenchimento recente produziria um relatório apresentando dado vencido como atual. Inócuo com a base de teste, relevante em produção — detalhamento e correção proposta na aba Análise e Limitações.
  • Parametrizar o nome do engenheiro no prompt: valor hoje fixo no workflow, o que bloqueia a replicação multi-obra prometida pelo desenho de .env (ver abas Arquitetura e n8n e Robustez e Escala).
  • Bateria comparativa de temperatura (0.2 / 0.3 / 0.7) sobre os três cenários de teste, para substituir a justificativa qualitativa do parâmetro por medição.
  • Refazer as capturas de tela da prova de conceito com o bot renomeado, dados coerentes e captura em desktop no modo claro.

Prioridade 1 — Confiabilidade do host (maior risco, baixo esforço)

  • Máquina dedicada always-on (mini-PC ou servidor) em vez de notebook pessoal — elimina o risco #1 (máquina desligada/suspensa).
  • No-break (UPS) ou operação em notebook com bateria saudável — protege a janela de execução contra quedas de energia.
  • Watchdog + re-disparo automático: se o execution_log.json não registrar sucesso até X horas após o gatilho, re-executar e/ou alertar (potencial de elevar a taxa de sucesso de ~98% para ~99,5%+).

Prioridade 2 — Latência (alto impacto técnico)

  • LLM quantizado mais leve (ex.: Llama 3 8B / Qwen 2.5 7B em q4): expectativa de cortar o tempo do Ollama pela metade (~72s → ~35s), reduzindo a latência ponta a ponta de ~220s para ~130–150s.
  • Inferência em GPU dedicada (offload do Ollama) em vez de CPU.
  • TTS paralelizado (ThreadPool) caso múltiplos áudios passem a ser gerados.

Prioridade 3 — Escalabilidade & negócio

  • Cache de geocodificação (fixar lat/lon no .env/DB) — remove a dependência recorrente do Nominatim. Ainda não implementado, apesar de a aba Análise e Limitações já descrever o mecanismo.
  • Fallback para nuvem (Groq/OpenAI) acionado só quando o LLM local falhar — eleva confiabilidade sem custo recorrente em regime normal.
  • Multi-tenant + onboarding templatizado — reduz o esforço de implantação por obra/cliente, pré-requisito para escalar a solução comercialmente (modelo SaaS).
  • Dashboard de monitoramento (ingestão dos logs JSON/CSV em Grafana) para acompanhar latência e taxa de sucesso ao longo do tempo.

Resumo executivo desta seção: Latência mediana real de 3,5 min (P50) — ~11× mais rápida que o baseline manual estimado de ~40 min e dentro do SLA de 300 s em 8 de 9 execuções; confiabilidade modelada de ~98% por execução, limitada pela infraestrutura física e não pelo software, com falhas de baixo impacto na cadência diária; e ~R$ 13.860/ano de valor gerado por obra só em tempo de engenharia recuperado — payback de ~3,9 meses e ROI de ~208% no primeiro ano no cenário de referência, resultado que se mantém positivo em 8 das 9 combinações da análise de sensibilidade, com custo de operação próximo de zero. Em aberto e registrado: o objetivo O2 (< 60 s de geração) não foi atingido e há correções de defeito pendentes na Prioridade 0. As melhorias seguintes atacam primeiro a disponibilidade do host (maior risco) e depois a latência da camada de IA (maior consumo de tempo).

Síntese dos Resultados

Síntese visual dos resultados do projeto — de ~40 minutos por dia de compilação manual (baseline arbitrado, ver nota metodológica na aba Diagnóstico e Objetivos) para um relatório de obra gerado por IA local em 3,5 minutos de mediana, sem custo de API ou licença. Os números abaixo conectam cada métrica ao objetivo: transformar dados dispersos (diário + clima) em orientação técnica acionável, entregue automaticamente todo dia útil.

3,5 min
Latência mediana ponta a ponta (P50, n = 9)
~11×
Mais rápido que os ~40 min manuais
~97,9%
Taxa de sucesso por execução
R$ 0
Custo de IA por relatório (100% local)
~3,9 meses
Payback para o cliente (cenário de referência)
~208%
ROI do cliente no 1º ano (positivo em 8 de 9 cenários)

Onde o tempo é gasto?

Tempo médio por componente (testes de stress, em segundos)

Ollama (LLM) gargalo
72,0s
Kokoro TTS
38,1s
Telegram
4,1s
SMTP
2,9s
~85% do tempo é a IA local (LLM + TTS). É exatamente onde estão as alavancas de otimização.

Latência real ponta a ponta

9 execuções de homologação · linha tracejada = SLA de 300s (5 min)

SLA 300s
271
183
173
220
169
190
208
308
253
8 de 9 dentro do SLA (88,9%). Média 220s · mediana 208s. A barra vermelha (#8, 308s) estourou o teto em 8s — mostrada, não escondida.

O ganho que importa para o negócio

Compilação manual diária × pipeline automatizado

~40 min
engenheiro compilando diário + clima, por dia
→ −91%
3,5 min
mediana medida (P50), sem intervenção humana

Confiabilidade (operação local)

Produto das disponibilidades de cada dependência crítica

97,9%por execução
Observado: 9/9 (100%) em teste
~247 de 252 relatórios/ano (dias úteis)
~5 perdidos/ano — o dia seguinte cobre
Risco maior: a máquina estar ligada

Valor gerado (ROI do cliente)

Custo marginal ~zero (IA local): operar e replicar quase não custa

Valor/ano por obra (40min arbitrados × R$82 × 252d)~R$ 13.860
Custo de implantação (premissa arbitrada)R$ 4.500
Payback≈ 3,9 meses
ROI no 1º ano≈ 208%
O custo de implantação e o baseline de 40 min são premissas, não medições. Na análise de sensibilidade cruzada (aba Métricas e ROI), o retorno segue positivo no 1º ano em 8 das 9 combinações — a conclusão não depende de escolher os números certos. Considera só o tempo de engenharia recuperado; o retrabalho evitado entra como upside.
Em uma frase: uma solução de IA on-premise que entrega relatórios diários de obra ~11× mais rápido que o processo manual, com ~98% de confiabilidade modelada, R$ 0 de custo de IA por relatório e retorno para o cliente que se sustenta mesmo nos cenários pessimistas de premissa.

Data Storytelling e Síntese dos Resultados

Esta seção apresenta a narrativa dos dados do projeto: o objetivo não é apenas mostrar números, mas contar a história que os números revelam, conectando cada métrica ao objetivo do projeto — transformar dados dispersos do canteiro em uma orientação técnica acionável, entregue automaticamente todo dia útil.


A História dos Dados

Bons dados contam uma história com começo, meio e fim — e a do Assistente de Obra IA começa por um número simples, ainda que estimado: cerca de 40 minutos por dia, todo dia útil, para cada obra.

O problema. A construção civil é um dos setores menos digitalizados do índice da McKinsey (2017) e, no Brasil, erguer um prédio residencial padrão leva em média mais do que o dobro do tempo que poderia levar (Deloitte/Fiesp, 2023). No dia a dia, isso se traduz numa tarefa concreta: reler o diário de obras e cruzá-lo manualmente com a previsão do tempo antes de decidir se pode concretar, pintar ou impermeabilizar — decisões que as próprias normas técnicas condicionam ao clima previsto (NBR 14931:2023; ABRACO RP PAC-001). É um trabalho repetitivo que, pela correria do canteiro, acaba negligenciado, e cuja categoria de custo é reconhecida no setor: o estudo FMI/PlanGrid (2018) apurou 5,5 h/semana por pessoa procurando informação de projeto em geral — normas, projetos, relatórios —, da qual a consulta ao diário é uma fatia. O resultado é concretagem em dia de chuva, retrabalho e decisões "no escuro".

A solução e a prova. O pipeline automatiza esse cruzamento e entrega o relatório em texto e áudio — e os dados mostram que funciona. A latência mediana é de 3,5 minutos ponta a ponta, cerca de 11× mais rápido que os ~40 minutos manuais, medida em 9 execuções reais com 88,9% dentro do SLA de 5 minutos. Desse tempo, ~85% é a IA local (LLM + TTS): não é um defeito, e sim o preço de não depender de nuvem paga e manter os dados da obra dentro de casa. A confiabilidade modelada é de ~97,9% por execução — o equivalente a ~247 de 252 relatórios entregues por ano (dias úteis), sendo que a falha de um dia é naturalmente coberta pelo relatório do dia seguinte. E o custo por relatório é de R$ 0, já que toda a IA roda localmente. Em resumo: o que se estima custar 40 minutos do dia passou a custar 3,5 minutos medidos e zero reais.

O valor e o futuro. Traduzindo para o negócio: para a construtora, o sistema gera cerca de R$ 13.860/ano de valor por obra só em tempo do engenheiro recuperado (baseline arbitrado de 40 min/dia × R$ 82/h × 252 dias úteis), com payback de ~3,9 meses e ROI de ~208% no primeiro ano — antes mesmo de contar o retrabalho evitado, e mantendo-se positivo em 8 das 9 combinações da análise de sensibilidade. E, como toda a IA roda localmente, o custo marginal de operação é próximo de zero: replicar a solução em uma nova obra praticamente não adiciona custo. À frente, o roadmap eleva a confiabilidade (host dedicado + watchdog) e corta a latência pela metade (LLM quantizado), abrindo caminho para escalar como produto (SaaS multi-tenant). É uma solução sem custo de IA nem de licença, pronta para democratizar o planejamento inteligente em construtoras de pequeno e médio porte.


Conexão entre Métrica, História e Objetivo

A tabela abaixo amarra cada métrica à mensagem que ela transmite e ao objetivo original do projeto — garantindo que nenhum número exista por si só, mas sempre a serviço da narrativa. Os valores não são repetidos aqui: estão na aba Métricas e ROI, com a memória de cálculo completa.

MétricaO que conta na históriaObjetivo conectado
Latência mediana (P50)"É praticamente instantâneo para quem usa"RNF01 (< 5 min) ✅
Ganho sobre o manual"Devolve ~40 min do dia ao engenheiro, todo dia"Objetivo principal (40 min → minutos) ✅
Aderência ao SLA"Consistente — e o outlier que estourou o teto está mostrado, não escondido"Confiabilidade do protótipo
Tempo de geração do LLM"A qualidade do relatório custou o alvo de 60 s, e a escolha está documentada"O2 ⚠️ não atingido
Taxa de sucesso modelada"Confiável para a cadência diária; a falha de um dia é coberta pelo dia seguinte"Robustez e Escalabilidade
Custo de IA por relatório"Diferencial competitivo: sem custo de API nem de licença"RNF03 (custo de operação) ✅
Payback e ROI do cliente"O retorno se sustenta mesmo quando as premissas pioram"Sustentabilidade econômica

Impacto Ético, LGPD e IA Responsável

Esta seção analisa em profundidade os impactos éticos, legais e sociais do Assistente de Obra IA. Aplica a LGPD (Lei nº 13.709/2018) ao fluxo concreto de dados do pipeline, mapeia o sistema contra princípios de IA Responsável, identifica riscos e propõe ações de mitigação acionáveis. A análise parte de um princípio: tecnologia em construção civil lida com pessoas (operários, engenheiros, gestores) e com decisões que afetam segurança e dinheiro — logo, responsabilidade não é acessório, é requisito.


Mapeamento de Dados Pessoais no Pipeline (Data Mapping)

O primeiro passo de qualquer análise de conformidade é saber quais dados pessoais o sistema realmente trata. Mapeamento do fluxo atual:

DadoOnde estáÉ dado pessoal?Categoria LGPD
Nome e e-mail dos destinatáriosdata/email_recipients.csvSimDado pessoal (art. 5º, I)
Chat ID do Telegram.envSim (identifica um dispositivo/pessoa)Dado pessoal
Nome do engenheiro responsávelregistros_exemplo.jsonSimDado pessoal
Nº de operários, horas, etapa, ocorrênciasregistros_exemplo.jsonNão (dados operacionais agregados)Dado não-pessoal
Cidade da obra / coordenadas.envNão (dado de local, não de pessoa)Dado não-pessoal
Credenciais (tokens, senha SMTP).envSensível do ponto de vista de segurançaSegredo (não é dado pessoal, mas exige proteção)

Risco latente em produção (dado sensível)

Hoje o diário de obras não contém nomes de operários nem detalhes de saúde. Porém, em uso real, ocorrências do tipo "acidente de trabalho com o operário Fulano" introduziriam dados pessoais sensíveis (saúde — art. 5º, II da LGPD), elevando o nível de exigência legal. Recomendação: o diário deve registrar ocorrências de forma anonimizada/agregada (ex.: "1 afastamento por acidente leve") salvo quando houver base legal e finalidade específica para identificar a pessoa.


Aplicação da LGPD ao Projeto

Papéis e bases legais

Conceito LGPDAplicação no projeto
Controlador (art. 5º, VI)A construtora que opera o sistema e decide as finalidades (a quem enviar, quais dados usar).
Operador (art. 5º, VII)Quem roda a infraestrutura (no protótipo, o próprio desenvolvedor/engenheiro). Em modelo SaaS, o fornecedor seria operador.
Titulares (art. 5º, V)Engenheiro, gestores e demais destinatários dos relatórios; eventualmente operários citados no diário.
Base legal (art. 7º)Execução de contrato / legítimo interesse (art. 7º, V e IX) para o envio de relatórios a profissionais da própria obra. Para terceiros externos, recomenda-se consentimento (art. 7º, I).

Princípios do art. 6º — autoavaliação

Princípio (art. 6º)Como o projeto atendeLacuna / ação
FinalidadeDados usados só para gerar/entregar o relatório diário✅ Documentar finalidade por escrito (aviso de privacidade)
Adequação & Necessidade (minimização)Coleta apenas nome+e-mail/chat e dados operacionais✅ Não coletar dados além do necessário; evitar nomes no diário
Livre acessoLista de destinatários é editável no CSV⚠️ Criar processo simples de consulta pelo titular
Transparência—❌ Adicionar disclaimer de que o conteúdo é gerado por IA e como pedir descadastro
Segurança (art. 46).env fora do Git; inferência local⚠️ Reforçar (ver "Segurança da informação", abaixo)
PrevençãoError handler, validação humana no 1º mês✅
Não discriminaçãoSistema não decide sobre pessoas✅ (baixo risco — ver "Análise de IA Responsável")
Responsabilização (accountability)Logs em JSON/CSV registram cada execução✅ Trilha de auditoria existente (ver aba Robustez e Escala)

Direitos dos titulares (art. 18) — como atender

DireitoImplementação proposta
Confirmação e acessoResponder a pedidos sobre quais dados constam no email_recipients.csv
CorreçãoEditar nome/e-mail no CSV
Eliminação / oposiçãoDescadastro: remover a linha do CSV; incluir instrução "responda SAIR para deixar de receber" no rodapé do e-mail/Telegram
PortabilidadeExportar os dados do titular (CSV é nativamente portável)
Informação sobre compartilhamentoInformar que a entrega usa Telegram e Gmail (ver transferência internacional)

Segurança da informação (art. 46) — estado atual e melhorias

MedidaEstadoMelhoria recomendada
Segredos fora do versionamento✅ .gitignore cobre .env—
Senha SMTP⚠️ Texto plano no .envUsar senha de app dedicada (já é o padrão Gmail) e cofre de segredos em produção
Dados em repouso⚠️ CSV/logs/áudios sem criptografiaCriptografar disco / restringir permissões de arquivo
Dados em trânsito✅ HTTPS (APIs) + TLS (SMTP/Telegram)—
Retenção / descarte❌ Áudios e logs acumulam indefinidamentePolítica de retenção: expurgar áudios/logs após N meses
Controle de acesso⚠️ Máquina localRestringir acesso físico/lógico ao host

Transferência internacional de dados (art. 33)

Ponto central e diferencial do projeto:

  • ✅ A IA (LLM Ollama + TTS Kokoro) roda 100% localmente. Nenhum dado do diário de obras é enviado a APIs de IA de terceiros (OpenAI, Google, etc.). Isso elimina a maior fonte de exposição de dados em projetos de IA e é uma vantagem decisiva de privacidade (RNF02).
  • ⚠️ Canais de entrega usam servidores no exterior: Telegram e Gmail (Google) processam o conteúdo do relatório e os dados de contato em infraestrutura internacional. Isso configura transferência internacional e deve ser informado aos titulares; ambos os provedores possuem salvaguardas contratuais, mas a construtora deve declarar esse fluxo em seu aviso de privacidade.
  • ✅ APIs OpenWeather/Nominatim recebem apenas a cidade/coordenadas da obra — dado não-pessoal.

Síntese LGPD: o ponto mais sensível de um projeto de IA — enviar dados a um modelo na nuvem — não existe aqui, pois a IA é local. As lacunas remanescentes (disclaimer, retenção, descadastro, criptografia em repouso) são de baixa complexidade e estão endereçadas no plano de ação de conformidade, ao final desta aba.


Análise de IA Responsável

O sistema é classificado, em termos de risco, como um sistema de IA de risco limitado/mínimo: ele apoia decisões (gera sugestões para um engenheiro avaliar), não decide automaticamente sobre pessoas, crédito, contratação ou segurança. Mesmo assim, aplicam-se princípios consagrados (OCDE, UNESCO) e as diretrizes do PL 2.338/2023 — Marco Legal da IA brasileiro.

Status legislativo do PL 2.338/2023 (verificado em agosto de 2026): o projeto foi aprovado pelo Senado Federal em 10 de dezembro de 2024 e segue em tramitação na Câmara dos Deputados, ainda sem votação final e sem sanção — portanto não é lei em vigor. O texto adota o modelo do AI Act europeu: classificação por nível de risco (excessivo, alto, baixo/moderado), direitos dos afetados (transparência, explicação, contestação) e criação de um sistema nacional de governança de IA. Como a tramitação pode mudar, esta seção declara a data da verificação em vez de afirmar um status permanente. A obrigação legal hoje vigente e aplicável a este projeto é a LGPD (Lei nº 13.709/2018), tratada nas seções anteriores.

Princípio de IA ResponsávelSituação no projetoMitigação implementada / proposta
Supervisão humana (human-in-the-loop)A sugestão é consultiva; o engenheiro decide✅ Validação humana recomendada no 1º mês (aba Análise e Limitações); a IA nunca aciona obra sozinha
Transparência / explicabilidadeDestinatário pode não saber que é texto de IA❌→ Adicionar disclaimer "relatório gerado por IA com base no diário e na previsão; confira antes de decidir"
Robustez e segurançaRisco de alucinação (correlação espúria clima×obra)✅ Prompt restritivo com dados fechados, limite de tokens, "use só os dados fornecidos". ⚠️ A temperatura de 0.7 é um trade-off por fluidez de locução, não uma mitigação (aba Análise e Limitações)
Justiça / não-discriminaçãoNão há decisão sobre indivíduos✅ Baixo risco; o output é sobre cronograma físico, não sobre pessoas
ResponsabilizaçãoNecessário saber quem responde por erro✅ Logs/auditoria; ⚠️ definir responsável formal (o engenheiro valida e assume a decisão final)
Privacidade desde a concepção (privacy by design)IA local por decisão de arquitetura✅ Inferência 100% local — privacidade é uma escolha estrutural, não um remendo
ConfiabilidadeOutput pode variar; dado de entrada pode estar defasado✅ Parsing validado; ❌ falta guarda de frescor no dado do diário — lacuna aberta e documentada (aba Análise e Limitações); ⚠️ monitorar qualidade ao longo do tempo

O risco mais importante: alucinação com consequência física

Uma sugestão errada ("pode concretar quinta") tomada como verdade absoluta pode gerar prejuízo material e até risco de segurança. Por isso, o princípio mais crítico aqui é a supervisão humana: o sistema é explicitamente posicionado como assistente de planejamento, e a decisão final é — e deve continuar sendo — do engenheiro responsável, que possui o registro profissional (CREA) e a responsabilidade técnica pela obra.


Impacto Social

Impactos positivos

  • Democratização tecnológica: por ser open-source e não ter custo de IA nem de licença, leva IA aplicada a construtoras de pequeno e médio porte, que normalmente ficam de fora da transformação digital do setor.
  • Acessibilidade da informação: o formato em áudio (TTS) torna o relatório consumível por quem está em campo, em deslocamento, ou tem menor familiaridade com leitura de relatórios técnicos longos — aproximando o canteiro do escritório.
  • Redução de desperdício: menos retrabalho (concretagem/pintura mal planejadas) significa menos consumo de material e energia — um ganho ambiental indireto.
  • Valorização do trabalho humano: ao automatizar a tarefa repetitiva de compilação, devolve ao engenheiro tempo para o trabalho de maior valor (análise, decisão, gestão de equipe).

Riscos sociais e mitigação

Risco socialAnáliseMitigação
Excesso de confiança na IA (automation bias)Usuário pode aceitar sugestões sem checarDisclaimer + cultura de validação + posicionar como "assistente"
Deslocamento de funçãoReceio de substituir o engenheiroO sistema aumenta, não substitui: não há decisão técnica autônoma; o profissional segue indispensável
Exclusão digitalRequer máquina, internet e algum letramento técnicoSetup simples via .env; formato em áudio reduz barreira; roadmap de onboarding assistido
Vieses do modeloLLMs podem carregar vieses de treinoBaixa exposição (domínio técnico restrito); supervisão humana como salvaguarda

Plano de Ação de Conformidade (Checklist Acionável)

Consolidação das lacunas identificadas, com prioridade. Itens de alta prioridade são de baixo esforço e alto retorno de conformidade.

#AçãoPrioridadeEsforço
1Adicionar disclaimer de IA no rodapé do relatório (texto e e-mail): conteúdo gerado por IA, confira antes de decidir🔴 AltaBaixo
2Incluir instrução de descadastro ("responda SAIR / clique aqui") nas mensagens🔴 AltaBaixo
3Redigir aviso de privacidade declarando finalidade, base legal, uso de Telegram/Gmail e direitos do titular🔴 AltaMédio
4Definir e implementar política de retenção (expurgo de áudios/logs após N meses)🟠 MédiaBaixo
5Orientar registro anonimizado de ocorrências com pessoas no diário🟠 MédiaBaixo
6Criptografia em repouso e restrição de permissões dos arquivos de dados🟡 BaixaMédio
7Em modelo SaaS: formalizar contrato controlador-operador (art. 39) com cláusulas LGPD🟡 FuturoMédio

Conclusão da seção: O Assistente de Obra IA nasce com uma vantagem ética e legal estrutural — a IA é local, então os dados da obra nunca saem para um modelo de terceiros. Isso resolve, por design, o problema mais grave de privacidade em projetos de IA. As lacunas restantes (transparência, descadastro, retenção, segurança em repouso) são pontuais e de baixo custo, e estão organizadas em um plano de ação priorizado. Eticamente, o sistema se mantém no lugar correto: um assistente que potencializa o engenheiro, sem jamais substituir o julgamento humano sobre uma decisão que envolve segurança, dinheiro e pessoas.