EcoPackAI
A recommendation platform that ranks 25 packaging materials across 13 product categories by suitability, cost and carbon impact, and explains the ranking instead of just emitting a score.
Packaging choices trade three things against each other: fitness for the product, unit cost, and carbon footprint. Teams were making the call on intuition.
A single opaque score would not have been trusted, so the ranking needed an interpretable composite: biodegradability, recyclability and carbon impact folded into one eco-score you can decompose.
Feature engineering
15 engineered features over 2,275 samples, including a composite eco-score combining biodegradability, recyclability and carbon impact.
Model training
Random Forest and XGBoost trained and compared for suitability and CO₂ regression, serialised with joblib for serving.
Serving layer
Flask REST API with 11 endpoints over a normalised PostgreSQL schema via SQLAlchemy ORM, rate limited at 60 req/min/IP.
| Measure | Result | Method |
|---|---|---|
| Suitability prediction | 0.97+ R² | RF / XGBoost |
| CO₂ impact estimation | 0.98+ R² | XGBoost |
| Materials covered | 25 | 13 categories |
| Rate limit | 60/min | Per-IP middleware |
- Python
- Flask
- scikit-learn
- XGBoost
- Pandas
- NumPy
- PostgreSQL
- SQLAlchemy ORM
- REST API
- Chart.js
- Render
Deployed on Render with a managed PostgreSQL instance, structured error handling and input validation at the API boundary, plus a Chart.js analytics dashboard over the stored predictions.
- Add SHAP attributions per recommendation so the eco-score decomposition is visible in the response.
- Move model serving behind a versioned registry rather than joblib files on disk.
- Backfill real supplier cost data to replace the synthetic cost distribution.