Software · Machine Learning · Automação

João HenriqueFlauzino Do dado ao modelo.
Do modelo ao sistema.

Desenvolvedor Júnior na Tech4Humans e bolsista FAPEMIG na UNIFEI. Trabalho com integrações e automação em Python e pesquiso redes neurais para previsão de séries temporais.

Busco oportunidades júnior em ML Engineering e Data Engineering.

  • Itajubá, MG
  • Remoto a partir do Brasil
  • Sistemas de Informação · UNIFEI — jun/2027

Casos selecionados

Pesquisa, integração e ferramentas próprias

Quatro trabalhos em que a decisão de engenharia importa tanto quanto o resultado. O primeiro é pesquisa aplicada; os demais vêm da operação e de projetos locais.

01

Pesquisa aplicada · Projeto STEAM · UNIFEI/FAPEMIG

Comparação de Modelos de Aprendizado Profundo com Estrutura Seq2Seq para a Predição da Velocidade do Vento com Dados LiDAR

jan/2026–atualartigo submetido ao SBSR

Previsão da velocidade do vento em horizontes de até seis horas com dados LiDAR do Complexo Eólico Delta Maranhão, comparando arquiteturas Seq2Seq com atenção contra baselines clássicos. O objetivo é estudar a antecipação de variações relevantes para a operação eólica.

12 h de entrada 6 h de saída avaliação rolling leitura por horizonte

Ficha do experimento

Dados
LiDAR · Complexo Eólico Delta Maranhão; coleta realizada pelo projeto de origem
Entrada
72 passos · 12 h · resolução de 10 min
Saída
36 passos · 6 h
Atributos
68
Divisão
Cronológica: 72,5% treino · 12,5% validação · 15% teste
Escalonamento
MinMax com parâmetros ajustados no treino
Modelos
LSTM e TCN Seq2Seq com atenção, incluindo variantes bidirecionais
Baselines
ARIMA, Random Forest e persistência
Avaliação
Rolling forecast; métricas globais e por horizonte
Stack
Python, TensorFlow/Keras, Optuna, scikit-learn, PyWavelets, statsmodels

Resultados no conjunto de teste

Resultados globais no conjunto de teste — agregados sobre os 36 passos de previsão, conforme tabela do manuscrito SBSR submetido.
Modelo R² RMSE (m/s)
LSTM 0,636 1,101
TCN 0,597 1,158
TCN bidirecional 0,579 1,185
LSTM bidirecional 0,496 1,296
ARIMA 0,570 1,195
Random Forest 0,497 1,292
Persistência 0,488 1,304

Linha destacada: LSTM, menor RMSE e maior R² da comparação. Métricas agregadas sobre os 36 passos, não uma métrica pontual em t+6 h. R² mede variância explicada, não acurácia percentual.

A LSTM teve o menor erro global nesta comparação. Modelos simples seguem competitivos em horizontes curtos, e a bidirecionalidade não trouxe ganho global. O resultado não implica superioridade universal nem vantagem estatística sobre todas as redes.

Problema, contribuição, decisões, evidência e limites

Problema

Prever a velocidade do vento em horizonte de até 6 horas a partir de dados LiDAR, para estudar a antecipação de variações relevantes à operação eólica.

O trabalho não foi implantado no parque eólico.

Contribuição

Preparação dos dados, engenharia de atributos, modelagem, execução dos experimentos, análise dos resultados e escrita, em colaboração. A coleta dos dados foi realizada pelo projeto de origem, não por mim.

Decisões

Janelas de 72 passos de entrada e 36 de saída, com split cronológico e escalonamento ajustado apenas no treino. Comparação entre LSTM e TCN em estrutura Seq2Seq com atenção, variantes bidirecionais e baselines ARIMA, Random Forest e persistência.

Avaliação por rolling forecast, com métricas globais e por horizonte, para não resumir o desempenho a um único ponto da série.

Evidência

Tabela reproduzida acima, extraída do manuscrito em coautoria submetido ao SBSR e ainda não publicado, com os artefatos de avaliação da rodada canônica.

Código de referência: github.com/zinoLath/wind-speed-forescasting. O repositório público é uma referência; o estado local de desenvolvimento pode divergir dele.

Limites

Avaliação offline, em recorte temporal e sítio específicos, sem deployment ou validação externa demonstrados. A rodada canônica usa seed única, e diferenças pequenas entre arquiteturas não foram tratadas como decisivas.

Fonte: artigo em coautoria submetido ao SBSR (título no cabeçalho do case), ainda não publicado. PDF e dados brutos não divulgados.

02

Experiência profissional · Desenvolvedor Júnior

De fluxos de atendimento a automações

out/2025–atualEm uso diário

Automações em Python e desenvolvimento de plataformas com React para atendimento, construídas a partir da análise das requisições que essas plataformas fazem. Integrações com Clicksign e Infocar e resolução de tickets em lote em operação diária.

Requisições dependências e fluxos pipelines de integração operação

Problema, contribuição, decisões, evidência e limites

Problema

Demandas operacionais distribuídas entre plataformas e APIs, com ações repetitivas executadas manualmente.

Contribuição

Análise das requisições feitas pelas plataformas, mapeamento de dependências e fluxos, e construção de pipelines de integração em Python, com interfaces em React, no contexto das integrações com Clicksign e Infocar.

A resolução de tickets em lote foi implementada e é utilizada no processamento diário.

Decisões

Analisar as requisições reais das plataformas para reconstruir dependências e fluxos antes da implementação. Organizar as automações como pipelines de integração e integrar a resolução de tickets em lote ao processamento diário.

Evidência

Uso operacional diário. Sem métricas consolidadas de economia de tempo, volume de tickets por dia ou SLA.

Limites

Não há reduções percentuais, ganho de tempo ou SLA medidos para divulgação. Código, nome do cliente e detalhes internos não são publicados. Não se trata de sistema de ML em produção.

03

Projeto pessoal · software com modelo de decisão pré-treinado local

File Sorter AI — classificação local, execução explícita

Projeto localOpen source · Apache-2.0

Organizador de arquivos com o modelo de decisão pré-treinado Julia-1, executado localmente, GUI Qt e core em Python com CLI. Um schema de pastas e a descrição dos arquivos alimentam a classificação; o plano de movimentação é separado da execução.

Analisar simular aplicar registrar no journal

Problema, contribuição, decisões, evidência e limites

Problema

Organizar arquivos locais sem entregar ao modelo a decisão irreversível de movê-los.

Contribuição

Core em Python com CLI e GUI Qt, schema de pastas, descrição dos arquivos e classificação flat/router. Geração de plano e journal das operações.

Integração com o modelo de decisão Julia-1, pré-treinado e usado como está: ele escolhe entre as opções de pasta oferecidas, sem geração livre de texto. Não houve treinamento nem ajuste de modelo pelo autor.

Decisões

Separar analisar e simular de aplicar movimentações, com journal para rastrear o que foi executado. O classificador principal não abstém: atribui a pasta mais provável.

Evidência

Código público: github.com/zinoLath/file-sorter-ai (Apache-2.0), snapshot da rodada canônica A20 com suíte de testes. Baseline medido em CPU (2026-11-06): 95,7% sintético e 76,1% local — metas de 90%/70% atingidas; metodologia e detalhes por classe no README do eval.

A worktree/branch experimental loop/planned-features tem rollback e recursão com testes escritos, mas a documentação dessa branch está defasada; não é o mesmo runtime do principal.

Limites

Projeto local, sem deploy nesta apresentação. Recursos da branch experimental não implicam funcionalidade pronta no runtime principal.

04

Projeto pessoal · infraestrutura de coordenação

ATLAS — estado rastreável para coordenar trabalho

Projeto localOpen source · MIT

CLI em Python com biblioteca padrão para capturar demandas, triar e operar uma base de conhecimento. Log transacional em JSONL, vistas derivadas em SQLite/FTS5 e Markdown, e reconstrução por replay.

Capturar triar operar log transacional vistas replay

Problema, contribuição, decisões, evidência e limites

Problema

Coordenar trabalho humano e agentes sem perder decisões, contexto e estado, e sem tratar a mensagem de um agente como prova de entrega.

Contribuição

CLI em Python com biblioteca padrão, log transacional em JSONL e vistas derivadas em SQLite/FTS5 e Markdown. Reconstrução do estado por replay, leases e fencing para entregas, além de saúde e backup.

Decisões

Núcleo determinístico, com o log como fonte de verdade e as vistas como derivadas. Cada entrega tem lease e epoch próprios; um ack de epoch antigo é rejeitado, então um worker que perdeu a lease não confirma no lugar de outro.

Evidência

Código público: github.com/zinoLath/atlas (MIT), snapshot da rodada M1c.1. Suíte executada no snapshot publicado: 292 testes verdes (152 s); cobertura medida de 66% — 13/19 suítes exercitam o código via subprocesso, fora do rastreio.

Limites

Roteador LLM sempre ativo é roadmap, não funcionalidade entregue: o repositório não contém chamada a modelo. Não é uma plataforma autônoma empresarial. Projeto sem deploy nesta apresentação.

Projetos em equipe

Dados, integrações e análise

Projetos em equipe durante a graduação, com código público. Em cada um, a parte que me cabe está descrita.

Em equipe · backend Node

Itachuva — risco de alagamento em Itajubá

Pipeline em Python com Docker baixa e prepara previsões meteorológicas do ECMWF (arquivos .grib); backend em Node/Express com PostgreSQL serve clima e previsão ao frontend em Next.js. Minha parte: reestruturação do backend em arquitetura de serviços e controladores e a integração dos dados de previsão do pipeline aos serviços de clima.

Em equipe · Banco de Dados II · ETL, modelagem e planejamento

Relatório ad hoc — desmatamento brasileiro

Análise do desmatamento em diferentes granularidades: um workflow ETL em KNIME atualiza a base automaticamente pelas APIs do TerraBrasilis e cruza com o BDIA (geologia, geomorfologia, vegetação e pedologia); o dashboard ad hoc traduz consultas dinâmicas em consultas com agregação, por município, estado ou bioma. Minha parte: o workflow ETL, a modelagem do banco em PostgreSQL — desmatamento e características por município, estado e bioma — e o planejamento da camada de consultas. O tradutor ad hoc com agregação é de dupla autoria: desenho conjunto do sistema, implementação majoritária no código do Gabriel Toti.

Método de desenvolvimento agêntico

Especificar, delegar, revisar, validar.

Uso agentes para exploração e implementação com escopo delimitado. Mantenho decisões e critérios de aceite explícitos, separo implementação de revisão e verifico os artefatos antes de aceitar a entrega. Não trato a conclusão de um agente como prova de entrega.

  1. 01

    Especificar

    Problema, escopo, contratos e critérios de aceite definidos antes do código.

  2. 02

    Delegar

    Tarefas delimitadas, com contexto, restrições e saída esperada.

  3. 03

    Revisar

    Implementação e revisão em etapas separadas; diff e decisões lidos antes da integração.

  4. 04

    Validar

    Testes, execução real do artefato e conferência de evidência antes de aceitar.

Agentes no processo de desenvolvimento

  • Previsão da velocidade do vento (projeto STEAM) — base de conhecimento indexada da literatura, protocolos e resultados, otimizada para o método de busca dos agentes (grep em pastas), com manejo automático de referências bibliográficas dos conceitos e distinção entre rodadas antigas e atuais.
  • File Sorter AI — specs, decisões e guia de agentes com contratos explícitos; implementação delegada, revisão separada e testes como gate.
  • ATLAS — estado e decisões explícitos, o que permite retomar contexto e cobrar entrega em vez de aceitar uma mensagem como conclusão.

IA em pesquisa e projetos

  • Previsão da velocidade do vento (projeto STEAM) — pipeline de treino e avaliação de redes LSTM e TCN integrada a um dashboard em terminal para análise das métricas por época, em iteração rápida.
  • File Sorter AI — integra o modelo de decisão pré-treinado Julia-1 para classificar arquivos entre opções de pasta; não há treinamento de modelo próprio.
  • ATLAS — organiza estado e contexto e ainda não chama modelo no runtime.

Trajetória

Trabalho, pesquisa e formação

Desenvolvimento de software desde 2023, com atuação atual em integrações e pesquisa aplicada em séries temporais.

  1. out/2025–atual
    Desenvolvedor Júnior · Tech4HumansIntegrações, automações em Python e desenvolvimento de plataformas com React para atendimento.
  2. jan/2026–atual
    Pesquisador bolsista FAPEMIG · UNIFEIPrevisão de séries temporais com redes neurais; artigo submetido ao SBSR.
  3. jan/2023–jan/2024
    BlinxelC#, Lua e Unity no desenvolvimento de aplicações mobile com realidade aumentada.
  4. 2023–jun/2027
    Bacharelado em Sistemas de Informação · UNIFEIConclusão prevista para junho de 2027.

Inglês avançado, sem certificação.

Contato

Vamos conversar sobre a vaga

Aberto a oportunidades júnior em ML Engineering e Data Engineering, no Brasil ou em trabalho remoto a partir do Brasil.

Respondo por e-mail e LinkedIn. Os currículos estão disponíveis em português e inglês, com as fontes LaTeX ao lado de cada PDF.

Currículos e fontes

O resume em inglês é voltado a processos internacionais com trabalho remoto a partir do Brasil. Os PDFs são gerados a partir dessas fontes LaTeX.