Previsão operacional com incerteza, backtesting e simulação de cenários para decisão de estoque e capacidade.
Operational forecasting with uncertainty, backtesting and scenario simulation for inventory and capacity decisions.
PT-BR / English Overview • Preview • Screenshots • Stack • Architecture • Quick Start • Author
Caveat / Escopo do lab
O ForecastOps é um MVP lab de previsão operacional com dados sintéticos (baseline, backtest temporal, fan chart e what-if de estoque). Não é um sistema de previsão financeira de produção, nem deve ser usado para ordens automatizadas de compra/investimento sem revisão humana.
| Surface | URL |
|---|---|
| Web cockpit (lab) | https://barujafe1.github.io/ForecastOps/ |
| Homepage portfolio | https://barujafe.vercel.app (card Lab) |
| GitHub | https://github.com/BarujaFe1/ForecastOps |
A demo pública roda em modo lab snapshot (dados sintéticos pré-computados via GitHub Pages). Scaffolding dual-Vercel (forecastops + forecastops-api) está no repositório; o deploy Vercel ficou bloqueado temporariamente pela cota diária do plano Hobby (api-deployments-free-per-day).
O ForecastOps (também referido como ForecastOps Simulator) é um produto de previsão operacional com incerteza. Ele ajuda operações a decidir compra, estoque e capacidade com baselines transparentes, backtesting temporal, intervalos de confiança e cenários “e se”.
Em vez de olhar só a média passada, o ForecastOps transforma vendas diárias em um cockpit de decisão: previsão com fan chart, comparação de modelos, risco de ruptura e plano de ação — com limitações explícitas.
O projeto foi desenvolvido por Felipe Alirio Baruja como peça de portfólio, conectando experiência operacional, ciência de dados aplicada e produto de decisão.
Responsible Forecasting Notice
O ForecastOps é suporte à decisão operacional com dados demo/sintéticos ou uploads controlados. Ele não deve emitir pedidos de compra ou escala de equipe de forma automatizada sem revisão humana das métricas de erro e das limitações do modelo.
O ForecastOps apresenta uma experiência operacional premium: Forecast Cockpit, backtesting board, comparação de modelos, fan chart de incerteza, scenario simulator e recommendation cards.
- Decisões ainda olham só a média: Compra e escala costumam ser feitas sem previsão avaliada nem intervalo de confiança.
- Modelo sem avaliação é teatro: O diferencial não é o algoritmo mais complexo — é backtesting temporal, métricas de erro e comunicação de incerteza.
- Cenários tornam a previsão acionável: Um fan chart vira pedido sugerido, risco de ruptura e dias de cobertura.
- Produto full-stack, não notebook: FastAPI + Next.js com fluxo ponta a ponta para demo e entrevista.
O ForecastOps não é apenas um gráfico de série temporal. Ele combina limpeza temporal, baselines, backtesting, intervalos e simulação de cenário em uma experiência de decisão.
Ele mostra não apenas a previsão pontual, mas também:
- quão bem o modelo se saiu no passado (MAE, MAPE, RMSE, coverage);
- qual baseline é competitivo o suficiente;
- onde a incerteza cresce no horizonte;
- o que muda se a demanda subir ou cair;
- quais ações operacionais fazem sentido — e quais limites impedem automação cega.
ForecastOps is not just a time-series chart. It combines temporal cleaning, baselines, backtesting, intervals and scenario simulation into one decision experience.
It shows not only the point forecast, but also:
- how the model performed in the past (MAE, MAPE, RMSE, coverage);
- which baseline is competitive enough;
- where uncertainty grows over the horizon;
- what changes if demand rises or falls;
- which operational actions make sense — and which limits block blind automation.
Em operações reais, decisões de estoque e capacidade costumam sofrer com:
- uso exclusivo da média histórica;
- ausência de backtesting temporal;
- previsões sem intervalo de confiança;
- modelos opacos sem baseline comparável;
- cenários “e se” feitos em planilha frágil;
- relatórios que não explicam limites de interpretação.
O ForecastOps cria uma camada auditável entre a série bruta e a decisão operacional.
O ForecastOps processa vendas diárias e entrega previsão, avaliação e plano de ação:
CSV Upload / Demo Daily Sales
↓
Limpeza e regularização temporal
↓
Baselines (naive, seasonal naive, MA, Holt-Winters)
↓
Backtesting temporal (rolling folds)
↓
Previsão com intervalo (fan chart)
↓
Comparação de modelos
↓
Scenario simulator (“e se”)
↓
Recommendation cards & Action planO memo executivo consolida previsão, métricas de backtest, cenário escolhido, recomendações e limitações em um artefato pronto para conversa com operação e liderança.
O dataset demo simula 365 dias de vendas diárias de um SKU com sazonalidade anual, efeito de dia da semana e picos promocionais. O ForecastOps regulariza a série, compara baselines, gera previsão de 28 dias com intervalo e estima pedido sugerido sob choque de demanda.
A camada de avaliação usa backtesting temporal (sem shuffle). Os resultados são apresentados como suporte à decisão operacional, nunca como ordem automática de compra.
The demo dataset simulates 365 days of daily sales for one SKU with yearly seasonality, weekday effects and promo spikes. ForecastOps regularizes the series, compares baselines, produces a 28-day interval forecast and estimates a suggested order under a demand shock.
The evaluation layer uses temporal backtesting (no shuffle). Results are decision support, never an unattended purchase order.
A experiência do ForecastOps foi pensada como uma jornada de decisão:
1. Carregar o dataset demo de vendas diárias (ou preparar upload)
2. Abrir o Forecast Cockpit e escolher um baseline
3. Ler MAE/MAPE/coverage no Backtesting Board
4. Comparar modelos antes de confiar na curva
5. Inspecionar o fan chart de incerteza
6. Simular um choque de demanda no Scenario Simulator
7. Ler recommendation cards (pedido, risco, cobertura)
8. Revisar limitações e action plan com a operaçãoPainel inicial com horizonte de previsão, controles de modelo e leitura rápida da série demo.
Avaliação temporal com folds rolantes e métricas MAE, MAPE, RMSE e coverage do intervalo.
Comparação lado a lado de naive, seasonal naive, moving average e Holt-Winters.
Faixa de incerteza que cresce com o horizonte para comunicar risco de previsão.
Simulação “e se” com choque de demanda, lead time, service level e estoque atual.
Tradução da previsão em pedido sugerido, risco de ruptura, dias de cobertura e próximos passos.
- Framework: Next.js 15 (App Router) & React 19
- Linguagem: TypeScript
- Estilização: CSS operacional premium (tokens próprios)
- Gráficos: Recharts
- Ícones: Lucide Icons
- Framework API: FastAPI & Uvicorn (Python 3.12)
- Modelagem & Validação: Pydantic v2
- Processamento: Pandas / NumPy
- Séries Temporais: baselines + Holt-Winters aditivo leve (NumPy)
- Suite de Testes: Pytest
- Deploy: Vercel (web + API Python)
O projeto adota uma arquitetura monorepo simplificada e desacoplada:
ForecastOps/
├── apps/
│ ├── web/ # Frontend Next.js (App Router)
│ │ ├── app/ # Página principal do cockpit
│ │ ├── components/ # ForecastChart e UI de decisão
│ │ ├── lib/ # API client
│ │ └── types/ # Tipos TypeScript
│ │
│ └── api/ # Backend FastAPI
│ ├── app/
│ │ ├── api/ # Endpoints (/forecast, /scenario, /demo)
│ │ ├── models/ # Schemas Pydantic
│ │ └── services/ # Forecasting + demo data
│ └── tests/ # Pytest
│
├── data/
│ └── seed/ # daily_sales_demo.csv
│
├── docs/ # Metodologia e pitch de portfólio
├── assets/ # Ícone, hero, screenshots, social preview
├── start.bat # Inicializador Windows
└── README.md # Esta documentação
ForecastOps follows a traceable operational flow: daily sales enter the pipeline, get temporally cleaned, forecasted with baselines, evaluated by backtesting, stress-tested in scenarios and exported as decision cards.
Raw Daily Sales / Demo Seed
↓
Date parsing & frequency regularization
↓
Baseline model selection
↓
Rolling temporal backtest
↓
Horizon forecast + residual intervals
↓
Model comparison board
↓
What-if scenario (shock, lead time, service level)
↓
Recommendation cards / Action plan / Executive memo- Node.js v20 ou superior.
- Python v3.10 ou superior (preferencialmente Python 3.12).
- Git
Na pasta raiz do projeto, dê dois cliques ou execute no console:
start.batEste script cria/ativa o ambiente virtual Python, instala dependências, sobe o backend FastAPI na porta 8000, o frontend Next.js na porta 3000 e abre o navegador.
cd apps/api
python -m venv .venv
.venv\Scripts\activate # Windows
source .venv/bin/activate # Linux/macOS
pip install -r requirements.txt
uvicorn app.main:app --reload --port 8000API ativa em http://127.0.0.1:8000. Docs interativos em /docs.
cd apps/web
npm install
npm run devFrontend ativo em http://localhost:3000.
cd apps/api
.venv\Scripts\python -m pytestcd apps/web
npm run lint # Verificação de lint
npm run typecheck # Verificação estrita de TypeScript
npm run build # Compilação de produçãopython scripts/generate_assets_and_seed.pyO ForecastOps prioriza transparência e avaliação correta:
- Naive / Seasonal Naive / Moving Average: baselines honestos e interpretáveis.
- Holt-Winters: tendência + sazonalidade semanal em implementação leve (NumPy), adequada ao lab/demo.
- Backtesting temporal: folds rolantes sem embaralhar o tempo.
- Intervalos: aproximação normal com largura crescente no horizonte.
- Cenários: choque de demanda + buffer de service level para pedido sugerido.
Detalhes em docs/methodology.md.
- Demo sintético por padrão: sem PII de clientes reais.
- Uploads locais ignorados no Git:
data/uploads/permanece fora do versionamento. - Sem automação cega: recomendações exigem leitura de limitações e métricas.
- Segredos fora do repo: apenas
.env.exampleversionado.
- MVP: demo diário, baselines, backtesting, fan chart, cenário e action plan.
- Fase 2: eventos/calendário, feriados, sazonalidade avançada, anomalias, alertas de estoque.
- Fase 3: multi-produto, hierarquia de previsão, Sheets/POS/API e monitoramento de drift.
- Fora de escopo do diferencial: deep learning complexo como peça central.
O ForecastOps demonstra competências críticas para Data Science, Analytics Engineering e Product Analytics:
- Séries temporais aplicadas: baselines + Holt-Winters com avaliação temporal.
- Comunicação de incerteza: intervalos e coverage, não só ponto previsto.
- Decisão operacional: tradução de forecast em pedido, risco e cobertura.
- Arquitetura full-stack: Next.js 15 + FastAPI em monorepo demonstrável.
Roteiro de entrevista: docs/portfolio_pitch.md.
- docs/methodology.md — protocolo de backtesting e limites do modelo.
- docs/portfolio_pitch.md — roteiro de demo e talking points.
Uma imagem para visualização social está disponível em:
assets/social-preview.pngDimensão recomendada: 1280x640, <1MB. Faça upload em: Repository Settings → Social Preview.
MVP lab: operational forecasting with uncertainty — baselines, temporal backtesting, fan charts and inventory what-ifs on synthetic data. Not production financial forecasting.forecasting
time-series
backtesting
inventory
operations
fastapi
nextjs
typescript
python
decision-support
portfolio-project
data-visualization
scenario-simulation
uncertainty
lab-demoDesenvolvido por Felipe Alirio Baruja.
- Portfolio: barujafe.vercel.app
- GitHub: @BarujaFe1
- LinkedIn: Gustavo Felipe Alirio Baruja
MIT License. Copyright (c) 2026 Felipe Alirio Baruja.
O código está disponível sob a licença MIT caso o arquivo LICENSE esteja presente no repositório.









