Synaplan
Open-source AI platform for companies: self-hosted AI agents, GDPR-compliant chatbot widget, RAG knowledge base, WhatsApp and Outlook AI, MCP, multi-model routing. Docker, Kubernetes or hosted in Germ
AI-powered retail intelligence and early warning platform for multilingual store feedback.
BusinessPython · TypeScriptGitHub @bandarulokeshh-coderOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
The maker's introduction consists of the line above. Read the repository README for more details. Repository README ↗
Loading the full README.
Read the full README ↗Turning Store Feedback Into Intelligent Action
StorePulse AI is a demo-ready retail intelligence platform built for the TalentAP Mega Hackathon 2026 problem statement:
R5 — Turning Store Chatter Into Action: The Voice-of-Store Engine
The app processes multilingual retail feedback, detects operational issues, assigns department owners, flags policy-driven safety escalations, surfaces emerging incidents, and generates weekly regional action briefs.
Retail organizations receive large volumes of unstructured feedback from customer reviews, in-app comments, staff notes, and call-centre transcripts. StorePulse AI turns this feedback into operational action by:
The platform is designed to run locally and does not require any paid API.
Supports:
The analyzer uses:
Any feedback mentioning safety-related concerns such as:
is escalated to HIGH severity.
A store-level early-warning system that monitors:
It can detect incidents early even in small stores with low complaint volume.
For each region the app can generate:
Operational issues are routed to:
Every key alert explains:
The app groups probable duplicate incidents reported across multiple channels while keeping raw records intact.
Shows demonstration metrics for:
app.py) - This is the primary demo appparaphrase-multilingual-MiniLM-L12-v2)data/storepulse.sqlite, auto-regenerated)Note: PostgreSQL/Drizzle ORM configuration exists for future Next.js integration but is not used in the current Streamlit demo.
storepulse-ai-retail-platform/
├── app.py # Main Streamlit dashboard
├── requirements.txt
├── README.md
├── FINAL_REPORT.md
├── demo.py # Live demo runner
├── get_eval_metrics.py # Evaluation metrics script
├── data/
│ ├── storepulse.sqlite # Auto-generated demo database
│ └── synthetic_feedback.csv # Raw synthetic dataset
├── src/
│ ├── preprocessing.py # Text normalization, multilingual mappings
│ ├── classifier.py # FeedbackAnalyzer (rule/ML/hybrid modes)
│ ├── embeddings.py # Sentence-transformers semantic matching
│ ├── policy_engine.py # Safety escalation rules
│ ├── routing.py # Department routing, taxonomy loading
│ ├── emerging_detector.py # Store-level incident early warning
│ ├── weekly_report.py # Regional action brief generation
│ ├── duplicate_detector.py # Cross-channel duplicate grouping
│ ├── evaluation.py # Classification & emerging metrics
│ ├── holdout_evaluation.py # Train/test split utilities
│ ├── synthetic_data.py # Dataset generation (11,794 rows)
│ └── storage.py # SQLite persistence layer
├── config/
│ └── issue_taxonomy.json # Issue categories, keywords, departments
├── assets/
│ ├── logo.png
│ └── generate_logo.py
├── scripts/
│ └── download_models.py # Offline model caching
├── tools/
│ └── metrics_report.py # Metrics aggregation
└── tests/
├── test_policy_engine.py # Safety escalation tests
├── test_emerging_detector.py # Alert detection tests
├── test_routing.py # Department routing tests
├── test_regressions.py # Bug fix regression suite (30 cases)
├── test_embeddings.py # Semantic matching tests
├── test_evaluation.py # Metrics calculation tests
├── test_whole_word_matching.py # Keyword boundary tests
├── test_classifier_training.py # ML training tests
├── test_csv_upload.py # Upload handling tests
├── test_department_routing.py # Department consistency tests
├── test_alert_consistency.py # Dashboard/alerts page sync tests
└── smoke_all_pages.py # Full app integration test
python -m venv .venv
.venv\Scripts\Activate.ps1
python -m venv .venv
.venv\Scripts\activate.bat
python -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
streamlit run app.py
pytest -q
The app generates a labeled synthetic dataset with 11,794 feedback records spanning 12 weeks (Aug 4 - Oct 26, 2026). The dataset includes:
The dataset is marked as Synthetic Demonstration Data.
feedback_idstore_idregiontimestampchannelfeedback_textissue_categoryseverityactionabledepartmentdataset_modeincident_tagknown_incident_flaglanguage_hintweek_startYou can upload a CSV and map columns for:
Optional uploads:
Missing values and invalid dates are handled safely.
StorePulse AI uses a transparent layered approach:
Normalization
Rule-based classification
Optional multilingual embeddings
paraphrase-multilingual-MiniLM-L12-v2) provides semantic category
matching for feedback where keyword rules are weakOptional supervised ML
Policy-first severity logic
The app does not invent confidence percentages for pure rule-based decisions.
The early-warning system calculates, for each store and issue category:
minimum_support = 3 (raised from 2 to reduce alert fatigue on low-volume noise)growth_threshold = 2.5 (current rate must be 2.5× the historical baseline)spike_threshold = 3.0 (current rate must be 3 MAD above baseline for spike detection)lookback_weeks = 6 (compare current week against 6-week historical window)minimum_store_week_total = 5 (stores need at least 5 feedback items per week for reliable rate normalization)normalized_rate = issue_count / max(total_store_feedback, 1)
The detector compares the current week against the previous 4–6 weeks using a robust baseline. It handles zero-history stores safely and can still detect small but meaningful spikes.
data/LABEL_CHANGES.md for details.Run the automated tests:
pytest -q
Run the full-app page check (executes every Streamlit page headlessly and fails on any exception):
python tests/smoke_all_pages.py
Included scenarios:
StorePulse AI applies a policy-first safety escalation approach to ensure critical issues are never missed:
This split (Tasks 3-4, Oct 26 2026) reduced false HIGH escalations on routine cleaning issues while preserving detection of true safety concerns.
Performance on 11,794 labeled synthetic feedback records (80/20 train/test split, stratified by severity):
Notes:
Team Members: [Fill in actual names and roles before submission]
Example roles:
All work done on Oct 26, 2026 counts as PRE-BUILT preparation, not hackathon work.
app.py)config/issue_taxonomy.json)src/synthetic_data.py) - 11,794 rowssrc/classifier.py)src/emerging_detector.py)src/weekly_report.py)src/policy_engine.py)Bug fixes and improvements (Oct 26, 2026 - PRE-BUILT):
All changes tracked in 13 git commits (Oct 26, 2026).
[This section to be filled in during the actual hackathon event]
Examples of what might be added:
python -m venv .venv
.venv\Scripts\activate
pip install -r requirements.txt
streamlit run app.py
If Streamlit does not open automatically, copy the local URL into Chrome or Edge.