Skip to content

BarujaFe1/ForecastOps

Repository files navigation

ForecastOps Logo

ForecastOps

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 OverviewPreviewScreenshotsStackArchitectureQuick StartAuthor

Next.js TypeScript Python FastAPI NumPy Uncertainty Aware

Live Demo GitHub

ForecastOps product overview

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.


🌐 Live Demo

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).


1. Visão Geral / Overview

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.


✨ Product Preview

ForecastOps Forecast Cockpit

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.


2. Por que este projeto importa? / Why this project matters

  • 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 diferencial do ForecastOps / What makes ForecastOps different

Português

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.

English

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.

🎯 Problema que resolve / The problem it solves

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.


🧩 Proposta / Analytical Pipeline

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 plan

📸 Screenshots

Forecast Cockpit
Forecast Cockpit — horizon forecast, KPIs and model controls.
Backtesting Board
Backtesting Board — temporal folds with MAE, MAPE, RMSE and coverage.
Model Comparison
Model Comparison — transparent baselines side by side before choosing a winner.
Interval Fan Chart
Interval Fan Chart — uncertainty widening with forecast horizon.
Scenario Simulator
Scenario Simulator — demand shocks, lead time and service level knobs.
Recommendation Cards
Recommendation Cards — order quantity, stockout risk and days of cover.

📄 Executive Memo / Action Plan

ForecastOps Executive Memo

O 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.

ForecastOps Action Plan


📌 Estudo de Caso / Case Study

📌 Estudo de Caso: SKU sintético de varejo local

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.

📌 Case Study: Synthetic local-retail SKU

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.


🧭 Visual Story / Jornada Analítica

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ção

⚙️ Funcionalidades Principais / Core Features

Forecast Cockpit

Painel inicial com horizonte de previsão, controles de modelo e leitura rápida da série demo.

Backtesting Board

Avaliação temporal com folds rolantes e métricas MAE, MAPE, RMSE e coverage do intervalo.

Model Comparison

Comparação lado a lado de naive, seasonal naive, moving average e Holt-Winters.

Interval Fan Chart

Faixa de incerteza que cresce com o horizonte para comunicar risco de previsão.

Scenario Simulator

Simulação “e se” com choque de demanda, lead time, service level e estoque atual.

Recommendation Cards & Action Plan

Tradução da previsão em pedido sugerido, risco de ruptura, dias de cobertura e próximos passos.


🛠️ Stack / Tecnologias

Frontend

  • Framework: Next.js 15 (App Router) & React 19
  • Linguagem: TypeScript
  • Estilização: CSS operacional premium (tokens próprios)
  • Gráficos: Recharts
  • Ícones: Lucide Icons

Backend

  • 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)

🧱 Arquitetura / Architecture

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

🧱 Visual Architecture

ForecastOps visual architecture

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.


🔁 Data Flow Pipeline

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

🚀 Quick Start / Início Rápido

Pré-requisitos

  • Node.js v20 ou superior.
  • Python v3.10 ou superior (preferencialmente Python 3.12).
  • Git

Opção 1 — Execução integrada no Windows

Na pasta raiz do projeto, dê dois cliques ou execute no console:

start.bat

Este 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.

Opção 2 — Execução manual

1. Backend FastAPI (apps/api)

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 8000

API ativa em http://127.0.0.1:8000. Docs interativos em /docs.

2. Frontend Next.js (apps/web)

cd apps/web
npm install
npm run dev

Frontend ativo em http://localhost:3000.


🧪 Scripts e Testes / Scripts and Testing

Rodar Testes de Backend (FastAPI/Pytest)

cd apps/api
.venv\Scripts\python -m pytest

Validações de Frontend (Next.js)

cd apps/web
npm run lint         # Verificação de lint
npm run typecheck    # Verificação estrita de TypeScript
npm run build        # Compilação de produção

Regenerar seed e assets placeholder

python scripts/generate_assets_and_seed.py

📊 Metodologia de Previsão / Forecasting Methodology

O 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.


🛡️ Segurança, Dados e Boas Práticas

  • 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.example versionado.

🧭 Roadmap do Produto

  • 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.

💼 Valor para Portfólio / Portfolio Value

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.


📚 Documentação Complementar


🖼️ GitHub Social Preview

Uma imagem para visualização social está disponível em:

assets/social-preview.png

Dimensão recomendada: 1280x640, <1MB. Faça upload em: Repository Settings → Social Preview.


🔖 GitHub Repository Metadata

About sugerido

MVP lab: operational forecasting with uncertainty — baselines, temporal backtesting, fan charts and inventory what-ifs on synthetic data. Not production financial forecasting.

Topics sugeridos

forecasting
time-series
backtesting
inventory
operations
fastapi
nextjs
typescript
python
decision-support
portfolio-project
data-visualization
scenario-simulation
uncertainty
lab-demo

👤 Autor / Author

Desenvolvido por Felipe Alirio Baruja.


📄 Licença / License

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.

About

MVP lab: operational forecasting with uncertainty — baselines, temporal backtesting, fan charts and inventory what-ifs on synthetic data. Not production financial forecasting.

Topics

Resources

License

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors