Implement Gift Rating Feature for Present Picker App
🎯 Feature Overview
We need to add a new feature to our Present Picker app that allows users to rate the gift suggestions they receive. This will enhance user engagement and provide valuable feedback on the quality of our gift recommendations.
📋 Feature Requirements
Core Functionality
- Add a rating widget below the chat interface
- Users can rate the last suggested gift on a scale of 1 to 5 stars
- Display a confirmation message showing the user's selected rating
- Rating should be visually integrated with existing UI design
UI/UX Requirements
- Styling: Rating box should have a semi-transparent dark background to match existing UI style
-
Colors: Use existing color scheme (
#2F3136for dark backgrounds, as seen in chat messages) - Positioning: Place rating widget below the chat interface but above the input field
- Responsiveness: Ensure functionality works on different screen sizes
- Accessibility: Include proper ARIA labels and keyboard navigation
🔧 Technical Specifications
Current Tech Stack Analysis
- Framework: Streamlit
- AI Backend: Google Vertex AI (Gemini)
- Current Dependencies: streamlit, streamlit-chat, streamlit-extras, vertexai
-
Styling: Inline CSS with dark theme (
rgba(47, 49, 54, 0.7),#2F3136)
Implementation Requirements
- MVP Scope: Tech stack can be freely chosen for rating component
- Data Persistence: Not required for MVP (ratings don't need to be stored)
- Integration: Should not interfere with existing chat functionality
- Performance: Should not impact current response times
✅ Acceptance Criteria
Must Have
-
Rating widget is visible below the chat interface -
Users can select a rating from 1 to 5 stars -
Confirmation message displays the selected rating -
Rating widget matches the app's overall design theme -
Feature works without breaking existing chat functionality -
Rating is only available after a gift suggestion is provided
Should Have
-
Rating widget has semi-transparent dark background -
Smooth hover/click animations on star selection -
Clear visual feedback when rating is submitted -
Responsive design works on mobile devices
Could Have
-
Option to add optional text feedback along with star rating -
Visual indication of previous ratings in chat history -
Ability to change rating before final submission
🏗️ Implementation Notes
Recommended Approach
- Choose Rating Component: Select appropriate Streamlit-compatible rating library (e.g., streamlit-star-rating, custom HTML/CSS, or streamlit-extras components)
-
State Management: Use
st.session_stateto track when a gift suggestion has been made - UI Integration: Position rating widget using Streamlit columns or containers
-
Styling: Apply consistent styling using
st.markdownwithunsafe_allow_html=True
File Structure Impact
-
Primary Changes:
app.py(main application logic) -
Dependencies:
requirements.txt(if new packages needed) - Optional: Separate rating component file for modularity
Integration Points
- Trigger: Show rating widget after assistant provides gift suggestions
- Session State: Track rating submissions to avoid duplicate ratings for same suggestion
- UI Flow: Rating → Confirmation → Ready for next interaction
🧪 Testing Guidelines
Functional Testing
-
Rating widget appears after gift suggestions -
All star ratings (1-5) can be selected -
Confirmation message shows correct rating value -
Widget doesn't appear before any suggestions -
Multiple ratings can be submitted in same session
UI/UX Testing
-
Visual consistency with existing dark theme -
Responsive behavior on different screen sizes -
Smooth interactions and visual feedback -
No layout issues with existing chat interface
Integration Testing
-
Chat functionality remains unaffected -
No performance degradation -
Proper error handling if rating fails -
Session state management works correctly
🎨 Design Reference
Current app styling for consistency:
/* Title styling */
background-color: rgba(47, 49, 54, 0.7);
padding: 10px;
border-radius: 10px;
/* Chat message styling */
background-color: #2F3136;
border-radius: 10px;
padding: 10px;
color: white;
📚 Resources
🔄 MVP Definition
For the first MVP iteration:
- Scope: Basic 1-5 star rating with confirmation
- Tech Stack: Free choice of implementation approach
- Persistence: Data does not need to be stored
- Focus: Core functionality and UI integration over advanced features
Priority: Medium
Complexity: Medium
Estimated Effort: 4-6 hours