Built for HackUTA 2025 π
A comprehensive AI-powered shopping assistant that combines voice interaction, interactive store mapping, and intelligent product search to revolutionize the in-store shopping experience. Built with ElevenLabs ConvAI API, Pinecone Vector Database, FastAPI, and React.
When new incoming students or residents visit local Walmart stores or any superstore, they often face a frustrating shopping experience:
- Lost and Confused: Navigating large stores with thousands of products across multiple aisles can be overwhelming
- Time Wasted: Customers spend valuable time wandering around trying to locate specific items
- Limited Help: Finding store employees for assistance is often difficult, especially during peak hours
- Language Barriers: International students and new residents may struggle to communicate their needs
- Inefficient Shopping: The traditional "search and wander" approach leads to longer shopping trips and reduced customer satisfaction
StorePal revolutionizes the in-store shopping experience with a comprehensive suite of features:
- Natural Conversation: Speak naturally and get instant, accurate product location information
- Real-time Transcription: See your words transcribed live as you speak
- Audio Responses: Hear clear, spoken directions and product information
- Multilingual Support: Break language barriers with AI-powered understanding
- Visual Navigation: Interactive store map with real-time product location pins
- Aisle Highlighting: Products are highlighted on the map with color-coded pins
- Smart Routing: Get visual guidance to your desired products
- Department Overview: Navigate by store sections and departments
- Product Analytics: View detailed product information and availability
- Search History: Track your previous searches and recommendations
- Store Insights: Get insights about store layout and popular products
- Semantic Search: Powered by Pinecone vector database for intelligent product matching
- Natural Language: Ask questions like "Where can I find organic almond milk?" and get precise aisle and section information
- Context Awareness: Understand vague descriptions and provide relevant suggestions
Simply walk up to a kiosk, ask "Where can I find organic almond milk?" and get both spoken directions and visual map guidance instantly!
Click the thumbnail above to watch our StorePal demo video!
- Problem: ElevenLabs Knowledge Base can't handle large retail datasets (100k+ products) and lacks semantic search capabilities
- Solution: Custom integration of Pinecone vector database with ElevenLabs ConvAI for intelligent product search
- Technical Implementation:
- Pinecone handles semantic search across 500+ products with millisecond response times
- ElevenLabs ConvAI processes natural language and triggers Pinecone searches via function calls
- Vector embeddings enable understanding of product relationships and synonyms
- Real-time search results fed back to ElevenLabs for natural conversation flow
- Why This Matters: Enables natural queries like "organic almond milk" to find products even with vague descriptions
- Performance: Sub-second search + natural voice responses create seamless shopping experience
- Problem: Traditional chatbots can't trigger visual map updates or perform complex actions
- Solution: ElevenLabs ConvAI with function calling allows the AI to decide when to show maps, search products, or provide directions
- Implementation: AI agent uses function calls to trigger map pin placement and product search based on user queries
- Benefit: Seamless voice-to-visual interaction without manual UI controls
- Problem: Static images can't show dynamic product locations or provide interactive navigation
- Solution: Custom SVG store layouts with programmatic pin placement
- Technical Implementation:
- SVG allows precise coordinate-based pin placement at exact aisle locations
- Real-time pin updates based on search results
- Zoom/pan functionality for large store navigation
- Color-coded pins for different product categories
- UI Points: Precisely positioned at aisle intersections and department entrances for customer guidance
- Problem: Traditional kiosk interfaces look outdated and uninviting to modern users
- Solution: Glassmorphism design with frosted glass effects, subtle transparency, and modern iOS-style aesthetics
- Technical Implementation:
- CSS backdrop-filter for glassy blur effects
- Semi-transparent backgrounds with subtle gradients
- Smooth animations and micro-interactions
- Modern typography and spacing following iOS design principles
- User Experience: Creates premium, approachable interface that encourages interaction
- Problem: HTTP requests create lag in voice interactions
- Solution: WebSocket streaming for instant audio processing
- Benefits:
- Sub-200ms response times for natural conversation flow
- Real-time transcription display
- Instant map updates as user speaks
- Bidirectional audio streaming for seamless interaction
User: "Where's the milk?"
β
ElevenLabs ConvAI processes speech
β
Function Call: search_products("milk")
β
Pinecone vector search returns dairy products
β
Function Call: show_on_map(aisle_7, dairy_section)
β
SVG map updates with pin at exact aisle location
β
AI responds: "I found milk in the dairy section, aisle 7. Let me show you on the map..."
- Scalability: Pinecone handles enterprise-scale product catalogs (100k+ items)
- Performance: Sub-second search + real-time voice interaction
- User Experience: Natural conversation with instant visual feedback
- Accuracy: Semantic search finds products even with vague descriptions
- Flexibility: Function calling allows complex multi-step interactions
- Voice-Activated Search: Simply speak to find products
- Natural Language Understanding: Ask questions like you would to a human
- Real-time Transcription: See your words transcribed live as you speak
- Audio Responses: Hear clear, spoken directions and product information
- Multilingual Support: Help customers in multiple languages
- Conversation History: Track your interaction history
- Visual Store Layout: Interactive SVG-based store map
- Real-time Product Pins: Products highlighted with color-coded pins on the map
- Aisle Navigation: Visual guidance to specific aisles and sections
- Department Overview: Navigate by store sections and departments
- Smart Pin Management: Automatic pin placement and removal
- Map Controls: Zoom, pan, and interact with the store layout
- Product Analytics: View detailed product information and availability
- Search History: Track your previous searches and recommendations
- Store Insights: Get insights about store layout and popular products
- Real-time Status: Connection status and system health monitoring
- User Interface: Clean, modern dashboard for data visualization
- Semantic Search: Pinecone vector database for intelligent product search
- Context-Aware Responses: Understand vague descriptions and provide relevant suggestions
- Product Matching: Advanced algorithms for finding the right products
- Inventory Integration: Real-time product database with 500+ items
- AI-Powered Conversations: ElevenLabs ConvAI for natural dialogue
- Real-Time Communication: WebSocket-based low-latency interactions
- Robust API: FastAPI backend with comprehensive endpoints
- Modern UI: Beautiful React interface with live transcripts and speaking indicators
- Automatic Audio Processing: PCM 16kHz format handling
- Cross-Platform: Web-based interface accessible on kiosks or mobile devices
- Responsive Design: Optimized for various screen sizes and devices
- Python 3.8+ (recommended: Python 3.9 or 3.10)
- Node.js 16+ (recommended: Node.js 18 LTS)
- Microphone and speakers/headphones for voice interaction
- Modern web browser with WebSocket and Web Audio API support
- ElevenLabs API account with API key and Agent ID (Get Started)
- Pinecone API key for vector database (Get Started)
git clone <your-repo-url>
cd StorePalcd backend
python -m venv .venv
# Activate virtual environment:
# Windows:
.venv\Scripts\activate
# macOS/Linux:
source .venv/bin/activatepip install -r requirements.txt- Windows:
pip install pipwin && pipwin install pyaudio - macOS:
brew install portaudiothenpip install pyaudio - Linux:
sudo apt-get install portaudio19-dev python3-pyaudio
Create a .env file in the backend directory:
# Create .env file
touch .env # Linux/macOS
# or create manually on Windows
# Add your API credentials:
ELEVENLABS_API_KEY=your_elevenlabs_api_key_here
ELEVENLABS_AGENT_ID=your_agent_id_here
PINECONE_API_KEY=your_pinecone_api_key_herecd backend/pinecone_vdb
python upload_data.pyThis uploads the Walmart inventory data to Pinecone for semantic search.
cd frontend
npm installTerminal 1 - Start Backend Server:
cd backend
python main.pyServer will start at http://localhost:8000
Terminal 2 - Start React Frontend:
cd frontend
npm startFrontend will start at http://localhost:3000
π Success! Open your browser to http://localhost:3000 and start talking! π€
Terminal 1 - Start Backend Server:
cd backend
python main.pyTerminal 2 - Start Voice Client:
cd backend
python audio_client.py- Backend Health Check: Visit
http://localhost:8000/health - API Documentation: Visit
http://localhost:8000/docs - Frontend Interface: Visit
http://localhost:3000 - Test Voice: Click the microphone button and speak
- Test Map: Ask for a product and watch the map update
- Open the Application: Navigate to
http://localhost:3000 - Connect: Click the "Connect" button to establish WebSocket connection
- Start Speaking: Click the microphone button and speak naturally
- View Results: Watch the interactive map update with product locations
- Access Dashboard: Click the dashboard button for analytics and insights
- "Where can I find [product]?" - Get product location and map pin
- "What products do you have in [category]?" - Browse by category
- "Show me [product] on the map" - Visual product location
- "What's in aisle [number]?" - Aisle-specific browsing
π€ You: "Where can I find organic almond milk?"
π€ Agent: "I found organic almond milk in the dairy section, aisle 7.
Let me show you on the map..."
πΊοΈ Map: [Product pin appears on aisle 7]
π€ You: "What other dairy products are nearby?"
π€ Agent: "In the dairy section, you'll find milk, yogurt, cheese,
and butter. Let me highlight those areas..."
πΊοΈ Map: [Multiple pins appear in dairy section]
- Zoom & Pan: Navigate around the store layout
- Product Pins: Color-coded pins show product locations
- Aisle Navigation: Click on aisles for detailed information
- Department Overview: Browse by store sections
- Zoom In/Out: Mouse wheel or zoom buttons
- Pan: Click and drag to move around
- Reset View: Return to full store view
- Pin Management: Pins automatically appear/disappear based on search
- Search History: Track your previous queries
- Product Analytics: View popular products and categories
- Store Insights: Understand store layout and traffic patterns
- Performance Metrics: Connection status and response times
- Recent Searches: Your last 10 product queries
- Popular Products: Most searched items
- Category Breakdown: Search distribution by department
- System Status: Real-time connection and performance data
π€ You: "I need milk, bread, and eggs"
π€ Agent: "I'll help you find all three items. Milk is in dairy (aisle 7),
bread is in bakery (aisle 3), and eggs are in dairy (aisle 7).
Let me show you the optimal route..."
πΊοΈ Map: [Multiple pins with suggested route]
π€ You: "What's in the produce section?"
π€ Agent: "The produce section has fresh fruits, vegetables, and herbs.
You'll find apples, bananas, lettuce, tomatoes, and more.
Let me show you the produce area..."
πΊοΈ Map: [Produce section highlighted]
- Speak Clearly: Use a good microphone in a quiet environment
- Be Specific: "Organic almond milk" works better than "milk"
- Use Natural Language: Ask questions like you would to a human
- Check the Map: Visual guidance helps with navigation
- Use the Dashboard: Track your shopping patterns and preferences
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β React Frontend β
β βββββββββββββββ βββββββββββββββ βββββββββββββββ β
β β Voice β β Store β β Dashboard β β
β β Interface β β Map β β Analytics β β
β β β β β β β β
β β β’ Microphoneβ β β’ SVG Map β β β’ Product β β
β β β’ Transcriptβ β β’ Pins β β Analytics β β
β β β’ Audio β β β’ Navigationβ β β’ History β β
β β Playback β β β’ Controls β β β’ Insights β β
β βββββββββββββββ βββββββββββββββ βββββββββββββββ β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β β β
β β β
β WebSocket β WebSocket β WebSocket
β Real-time β Map Updates β Data Updates
β Communication β β
β β β
ββββββββββββββββββββββΌβββββββββββββββββββββ
β
βΌ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β FastAPI Backend β
β βββββββββββββββ βββββββββββββββ βββββββββββββββ β
β β WebSocket β β Vector β β Static β β
β β Handler β β Search β β Files β β
β β β β Engine β β Server β β
β β β’ Audio β β β β β β
β β Streaming β β β’ Pinecone β β β’ Store β β
β β β’ Message β β Queries β β Maps β β
β β Routing β β β’ Semantic β β β’ Assets β β
β β β’ Response β β Search β β β β
β β Handling β β β β β β
β βββββββββββββββ βββββββββββββββ βββββββββββββββ β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β β β
β WebSocket β HTTP API β File Serving
β β β
βΌ βΌ βΌ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β External Services β
β βββββββββββββββ βββββββββββββββ βββββββββββββββ β
β β ElevenLabs β β Pinecone β β Store β β
β β ConvAI API β β Vector β β Inventory β β
β β β β Database β β Database β β
β β β’ Voice β β β β β β
β β Synthesis β β β’ Semantic β β β’ 500+ β β
β β β’ Speech β β Search β β Products β β
β β Recognitionβ β β’ Vector β β β’ Aisle β β
β β β’ Natural β β Storage β β Mapping β β
β β Language β β β β β’ Pricing β β
β β Processingβ β β β Info β β
β βββββββββββββββ βββββββββββββββ βββββββββββββββ β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
How It Works:
- Voice Input: Customer speaks at kiosk β Voice captured by React frontend
- Audio Streaming: Audio streamed to FastAPI backend via WebSocket
- AI Processing: Backend forwards to ElevenLabs ConvAI for natural language processing
- Semantic Search: User query triggers semantic search in Pinecone vector database
- Map Visualization: Relevant products with aisle/section info displayed on interactive map
- Audio Response: AI agent speaks the response back to customer
- Dashboard Updates: Analytics and search history updated in real-time
The FastAPI server provides a clean REST + WebSocket API ready for frontend integration:
GET /- API info and statusGET /health- Health checkGET /docs- Interactive API documentation (Swagger UI)
WS /ws/conversation- Real-time voice conversation stream
Visit http://localhost:8000/docs for interactive API documentation!
StorePal/
βββ backend/ # FastAPI Backend Server
β βββ main.py # Main FastAPI server with WebSocket
β βββ audio_client.py # Python voice client (testing)
β βββ requirements.txt # Python dependencies
β βββ data/
β β βββ winmart_inventory.csv # Store product database (500+ items)
β βββ pinecone_vdb/ # Vector Database Integration
β β βββ upload_data.py # Upload inventory to Pinecone
β β βββ vector_search.py # Semantic search functions
β β βββ example_usage.py # Usage examples
β β βββ README.md # Vector DB documentation
β β βββ QUICK_REFERENCE.md # Quick reference guide
β β βββ IMPLEMENTATION_SUMMARY.md # Implementation details
β βββ static/ # Static files (store maps, assets)
β β βββ store_map.svg # Interactive store map
β βββ PINECONE_SETUP.md # Pinecone setup guide
β βββ QUICKSTART.md # Backend quick start
β βββ .venv/ # Virtual environment (auto-created)
βββ frontend/ # React Frontend Application
β βββ src/
β β βββ App.js # Main React component with WebSocket
β β βββ App.css # Beautiful UI styles
β β βββ StoreMap.js # Interactive store map component
β β βββ Dashboard.js # Analytics dashboard component
β β βββ Dashboard.css # Dashboard styles
β β βββ index.js # React entry point
β βββ public/
β β βββ index.html # HTML template
β βββ build/ # Production build (auto-generated)
β βββ package.json # Node dependencies
β βββ README.md # Frontend documentation
βββ .env # Your API credentials (create this!)
βββ .env.example # Template for credentials
βββ .gitignore # Git ignore rules
βββ README.md # This file
- Real-time WebSocket communication
- Audio recording and playback
- Live transcription display
- Connection status management
- SVG-based store layout visualization
- Dynamic product pin placement
- Interactive navigation controls
- Real-time map updates
- Product search analytics
- User interaction tracking
- Store performance insights
- Search history visualization
- FastAPI server with WebSocket support
- ElevenLabs ConvAI integration
- Pinecone vector search
- Static file serving for maps
- Semantic product search
- Inventory data management
- Vector database operations
- Search optimization
Edit the agent's personality in backend/main.py:
config_override = {
"agent": {
"prompt": {
"prompt": "You are a helpful AI assistant for StorePal..."
},
"first_message": "Hi! I'm your StorePal assistant...",
"language": "en"
}
}Restart the server to apply changes.
| Issue | Symptoms | Solution |
|---|---|---|
| PyAudio Installation Fails | ERROR: Failed building wheel for pyaudio |
Windows: pip install pipwin && pipwin install pyaudiomacOS: brew install portaudio && pip install pyaudioLinux: sudo apt-get install portaudio19-dev python3-pyaudio |
| Microphone Not Detected | No audio input, silent recording | 1. Check system audio settings 2. Grant microphone permissions to browser/Python 3. Test with system audio recorder 4. Try different microphone |
| WebSocket Connection Failed | Connection refused or WebSocket closed |
1. Ensure backend is running: python main.py2. Check if port 8000 is available 3. Verify firewall settings 4. Try http://localhost:8000/health |
| API Authentication Errors | 401 Unauthorized or Invalid API key |
1. Verify .env file exists in backend directory2. Check API keys are correct and active 3. Ensure no extra spaces in .env values4. Test API keys independently |
| No Audio Playback | Silent responses, no sound | 1. Check system volume and speakers 2. Test with system audio player 3. Verify browser audio permissions 4. Try different browser |
| Map Not Loading | Blank map or "Map not available" | 1. Check if backend/static/ directory exists2. Verify static file serving is working 3. Check browser console for errors 4. Ensure SVG files are present |
| Vector Search Fails | "No products found" for all queries | 1. Run python upload_data.py in backend/pinecone_vdb/2. Check Pinecone API key and index name 3. Verify inventory data is uploaded 4. Check Pinecone dashboard for index status |
| Frontend Build Errors | npm start fails or build errors |
1. Delete node_modules and package-lock.json2. Run npm install again3. Check Node.js version (16+ required) 4. Clear npm cache: npm cache clean --force |
| Port Already in Use | Address already in use |
1. Find process using port: netstat -ano | findstr :80002. Kill process: taskkill /PID <pid> /F3. Or change port in main.py |
| Slow Performance | Laggy audio, delayed responses | 1. Check internet connection 2. Close other applications 3. Verify API rate limits 4. Check system resources |
Enable debug logging by setting environment variables:
# Backend debug mode
export DEBUG=1
python main.py
# Frontend debug mode
REACT_APP_DEBUG=true npm startTest each component individually:
# 1. Backend health
curl http://localhost:8000/health
# 2. API documentation
open http://localhost:8000/docs
# 3. Frontend
open http://localhost:3000
# 4. WebSocket connection
# Check browser developer tools β Network β WSCheck logs for detailed error information:
- Backend logs: Console output from
python main.py - Frontend logs: Browser developer tools β Console
- Network logs: Browser developer tools β Network
- ElevenLabs ConvAI - Advanced conversational AI with natural voice synthesis
- Pinecone Vector Database - Serverless vector database for semantic search
- OpenAI Embeddings - Text embeddings for intelligent product matching
- FastAPI - Modern, high-performance Python web framework
- WebSockets - Real-time bidirectional communication
- PyAudio - Professional audio I/O for Python
- Python-dotenv - Secure environment variable management
- Pandas - Data processing for inventory management
- React 18 - Modern component-based UI framework
- WebSocket API - Browser-native real-time communication
- MediaRecorder API - Browser audio capture
- Web Audio API - High-quality audio playback
- CSV Inventory System - 500+ product database with aisle/section mapping
- Vector Embeddings - Semantic search for natural language queries
This project was built for HackUTA 2025 to solve real-world challenges faced by new students and residents when shopping at large superstores. Our goal is to make shopping more accessible, efficient, and enjoyable for everyone.
- Saves Time: Reduces average shopping time by providing instant product location
- Improves Accessibility: Helps international students and non-native speakers
- Enhances Experience: Makes shopping less stressful and more efficient
- Scalable Solution: Can be deployed in any retail environment
- Backend Setup: See
backend/QUICKSTART.mdfor detailed backend setup - Pinecone Guide: See
backend/PINECONE_SETUP.mdfor vector database setup - Vector Search: See
backend/pinecone_vdb/README.mdfor search implementation - Frontend: See
frontend/README.mdfor React app details - API Docs: Visit
http://localhost:8000/docswhen running
For issues related to:
- ElevenLabs API: Visit ElevenLabs Documentation
- Pinecone: Visit Pinecone Documentation
- FastAPI: Visit FastAPI Documentation
- React: Visit React Documentation
Built with passion and dedication for HackUTA 2025 π
StorePal - Making Shopping Easier, One Voice at a Time πβ¨
