A powerful Streamlit-based web application for demand forecasting that combines the strengths of Prophet and N-Beats models, enhanced with Gemini AI for intelligent pattern detection and analysis.
🔄 Multi-Model Forecasting:
📊 Interactive Analysis:
🤖 AI-Powered Insights:
💾 Export Options:
Prophet is a forecasting procedure developed by Meta (formerly Facebook) that:
N-Beats is a deep learning approach that:
https://github.com/user-attachments/assets/9fc5bf11-8f60-4780-8e4d-2280cb09943a
Clone the repository:
git clone https://github.com/yourusername/demand-forecasting-app.git cd demand-forecasting-app
Create and activate a virtual environment:
python -m venv venv source venv/bin/activate # On Windows use `venv\Scripts\activate`
Install dependencies:
pip install -r requirements.txt
Set up environment variables:
.env
file in the root directoryGOOGLE_API_KEY=your_api_key_here
Run the application:
streamlit run multipage.py
Date
and Sales
columnsCSV files must contain:
Date
column (formats supported: DD-MM-YYYY
, MM/DD/YYYY
, etc.)Sales
column with numerical valuesDate,Sales
01/01/2023,100
01/02/2023,150
01/03/2023,200
demand-forecasting-app/
├── main.py # Main forecasting functionality
├── multipage.py # Multi-page app configuration
├── image_bot.py # Image analysis with Gemini
├── data_bot.py # Data analysis with Gemini
├── prophet_script.py # Prophet model utilities
├── nbeats.py # N-Beats model implementation
├── .env.example # Environment variables template
├── requirements.txt # Dependencies
└── README.md # This file
Factor | Prophet | N-Beats |
---|---|---|
Data Size | Works well with limited data | Better with more historical data |
Seasonality | Excellent at detecting multiple seasonal patterns | Good for complex, non-linear seasonality |
Noise Handling | Robust to missing data and outliers | May need cleaner data |
Computation | Faster training | More computationally intensive |
Best For | Business data with clear seasonal patterns | Complex relationships and patterns |
For any questions or issues, please open an issue on GitHub: @Siddharth Mishra
Made with ❤️ and lots of ☕