Spaces:
Running on Zero
A newer version of the Gradio SDK is available: 6.26.0
title: Smart Warehouse AI Assistant
emoji: π
colorFrom: blue
colorTo: indigo
sdk: gradio
sdk_version: 5.9.1
app_file: app.py
pinned: false
license: mit
short_description: LLM warehouse copilot with predictive maintenance
π Smart Warehouse AI Assistant
An LLM-powered, retrieval-grounded AI copilot for automated warehouse operations -- built as a portfolio / application project. Combines an LLM assistant (RAG), an intent classifier, an inventory/order query layer, and an Isolation-Forest predictive-maintenance model, with a full Model Evaluation tab reporting real accuracy/F1/ROC-AUC metrics on held-out test data.
π Live demo: add your Space URL here once deployed, e.g.
https://huggingface.co/spaces/<your-username>/smart-warehouse-ai
Tabs
- π¬ AI Assistant β ask free-text warehouse-ops questions; answers are grounded via TF-IDF retrieval over a small knowledge base and generated by a hosted LLM (Hugging Face Inference API, with a multi-model fallback chain), with a transparent retrieval-only fallback and a built-in "Test LLM connection" diagnostics button if no API key is configured or the call fails. Includes an "About the data" panel explaining the knowledge base and training data.
- π¦ Inventory & Order Query β natural-language queries over synthetic inventory / order tables (SKU, zone, order-id extraction), with an "About the data" panel describing the synthetic tables.
- β οΈ Predictive Maintenance β Isolation Forest anomaly detector over conveyor/crane motor sensor readings (temperature, vibration, current, belt speed), with an "About the data" panel describing the synthetic sensor dataset and failure patterns.
- π Model Evaluation β accuracy, macro-F1, confusion matrices,
ROC-AUC, retrieval hit-rate, and latency benchmarks, all computed on
held-out data by
build_artifacts.pyand rendered as charts (bar charts, confusion matrices, ROC curve, feature-distribution histograms) alongside the underlying tables. - βΉοΈ About β project write-up, architecture diagram, tech stack.
Quick start (local)
git clone <this-repo>
cd smart-warehouse-ai
pip install -r requirements.txt
# (re)generate datasets, train models, produce evaluation plots/metrics
python build_artifacts.py
# run the app
python app.py
Open the printed local URL (usually http://127.0.0.1:7860).
Enabling full LLM responses
The app works out of the box in retrieval-only fallback mode (no external API calls). To enable real LLM-generated answers:
- Create a Hugging Face access token: https://huggingface.co/settings/tokens
- Set it as an environment variable / Space secret named
HF_TOKEN. - (Optional) Set
LLM_MODEL_IDto override the default model (Qwen/Qwen2.5-7B-Instruct) with any chat-capable model available via HF Inference Providers.
export HF_TOKEN=hf_xxxxxxxxxxxxxxxxxxxx
python app.py
Deploying to Hugging Face Spaces
See DEPLOY.md for full step-by-step instructions.
Project structure
smart-warehouse-ai/
βββ app.py # Gradio app (5 tabs)
βββ build_artifacts.py # generates data, trains models, evaluates, saves plots
βββ requirements.txt
βββ src/
β βββ data_generation.py # synthetic intent / inventory / sensor datasets
β βββ knowledge_base.py # warehouse-ops knowledge base (RAG source docs)
β βββ retriever.py # TF-IDF retriever
β βββ intent_model.py # intent classifier (train/predict)
β βββ anomaly_model.py # Isolation Forest anomaly detector
β βββ llm_client.py # HF Inference API client + fallback
β βββ inventory_db.py # NL -> structured query helpers
βββ models/ # trained model artifacts (.joblib)
βββ data/ # generated datasets + evaluation JSON
βββ assets/ # evaluation plots (confusion matrices, ROC curve)
Evaluation summary
See the in-app Model Evaluation tab for full details (confusion matrices, per-class precision/recall, retrieval hit-rate table, latency benchmark). Headline numbers from the included run:
| Component | Metric | Score |
|---|---|---|
| Intent classifier | Accuracy | ~98% |
| Intent classifier | Macro F1 | ~97% |
| Anomaly detector | Precision | 100% |
| Anomaly detector | Recall | ~97% |
| Anomaly detector | F1 | ~98% |
| Anomaly detector | ROC-AUC | ~1.00 |
| RAG retriever | Hit-rate@2 | 100% |
(Computed on synthetic, held-out test data β see the Evaluation tab for methodology notes.)
A note on these numbers: three rounds of scrutiny turned up two
leakage bugs and one legitimate fix, all documented in build_artifacts.py:
- Train/test leakage (intent classifier). Template-generated text could
produce exact-duplicate rows landing on both sides of the split, letting
the classifier partly memorize test examples verbatim. Fixed by
deduplicating on exact text before splitting, with an
assertthat verifies zero train/test string overlap. - Threshold leakage (anomaly detector). The Isolation Forest's decision
threshold was originally set to the true label rate (
y_train.mean()) β not available in a real unsupervised deployment. Switching to scikit-learn's label-blind"auto"heuristic removed the leak, but dropped precision to 67% (F1 80%) β an honest but mediocre result. - The actual fix: calibrated threshold. The model is still fit fully
unsupervised (no labels touched during
.fit()). Its decision threshold is then calibrated by maximizing F1 on a small, separate labelled calibration split (140 examples, 14 confirmed anomalies) β analogous to tuning an alert threshold against a handful of confirmed historical incidents in production, a standard real-world practice. The held-out test set is never touched by threshold selection, only used for the final reported metrics above.
ROC-AUC staying at 1.00 throughout all three versions is the most telling number: it's threshold-independent by construction, so it confirms the model's ranking of anomalies was always excellent β the entire story here is about honestly picking the cutoff, not about detection ability.
License
MIT β feel free to fork and adapt.