Inspiration
We've all been there: a group of friends trying to decide where to eat, stuck in an endless loop of "I don't know, what do YOU want?" This universal frustration inspired PickIt - a tool that makes group dining decisions fast, fair, and actually fun. Whether it's coworkers debating lunch spots or friends planning dinner, the "where should we eat?" question wastes time and creates tension. We wanted to solve this with AI-powered intelligence and democratic voting.
What it does
PickIt transforms the chaotic "where should we eat?" debate into a smooth 4-step process:
Create & Share - Host creates a session with their location and shares a simple link (no signup required)
Collect Preferences - Everyone describes what they're craving in natural language ("tacos under $20" or "fancy Italian with wine")
AI Magic - Our system intelligently combines all preferences and queries Yelp's API to find perfect restaurant matches nearby
Democratic Voting - Beautiful cards show restaurant photos, ratings, prices, and categories. Everyone votes in real-time, and the winner is revealed with confetti!
The entire process takes under 3 minutes. No apps to download, no accounts to create, no arguments to have. Just fast, fair, fun decision-making powered by Yelp's restaurant data.
How we built it
Tech Stack:
Backend: Python Flask with RESTful API architecture
AI Integration: Yelp Fusion API for intelligent restaurant matching and search
Frontend: Vanilla JavaScript with real-time polling for live updates across devices
Design: CSS3 with gradient animations, responsive layouts, and mobile-first approach
Deployment: Render.com with secure environment variable management
Architecture & Features:
Smart preference parsing that combines multiple user inputs into optimized Yelp API queries
Session-based state management enabling real-time collaboration without databases
Beautiful restaurant cards displaying Yelp data: images, ratings, categories, pricing, and addresses
Live vote counting with progress bars and dynamic "leading restaurant" highlighting
Comprehensive error handling with graceful fallbacks for API failures
Connection status monitoring for offline/online transitions
Mobile-optimized touch interface with responsive card grids
Challenges we ran into
Natural Language Processing Users describe food preferences in wildly different ways. Combining inputs like "cheap Mexican," "tacos but not too spicy," and "under $15" into a coherent Yelp API query required smart parsing and combination logic.
Real-Time Synchronization Keeping all participants synchronized without WebSockets was challenging. We implemented efficient polling with intelligent state management to show vote updates instantly across all devices.
Yelp API Optimization Maximizing relevance from Yelp's search results while respecting API rate limits required careful query construction. We also had to handle edge cases like no results found, location errors, and API timeouts gracefully.
Fair Voting Logic Ensuring democratic outcomes required careful algorithm design. We implemented both majority-rule detection and random tie-breaking when votes are split equally.
Mobile-First UX Restaurant cards needed to be gorgeous and functional on any screen size. This required responsive CSS Grid layouts, touch-optimized interactions, and careful image loading strategies.
Accomplishments that we're proud of
✅ Zero-Friction Experience - No signups, no downloads, works in 30 seconds flat
✅ Beautiful Design - Professional-grade UI with smooth animations and confetti celebrations
✅ Real-Time Collaboration - Live vote updates across all devices seamlessly
✅ Smart Yelp Integration - Natural language preferences intelligently matched with Yelp's restaurant database
✅ Production Ready - Fully deployed and live at https://pickit-flask.onrender.com
✅ Mobile-First - Perfect experience on phones, tablets, and desktops with responsive design
✅ Robust Error Handling - Graceful fallbacks for API failures, connection issues, and edge cases
What we learned
How Yelp's Fusion API handles complex queries, location-based searches, and filtering
Designing zero-friction user experiences without authentication barriers
Real-time state synchronization patterns using polling instead of WebSockets
Mobile-first responsive design principles and touch interaction optimization
The power of combining AI APIs with democratic decision-making for group dynamics
User psychology: people LOVE the confetti celebration - it transforms decision fatigue into excitement!
Balancing API efficiency with user experience (caching, rate limiting, smart queries)
What's next for PICKiT - Group Restaurant Decision Made instant.
🚀 Near-term enhancements:
Enhanced Yelp filters: dietary restrictions, distance radius, specific cuisines, price ranges
User accounts for session history and favorite restaurant groups
Social media sharing of winning restaurants with OpenGraph preview cards
Analytics dashboard showing popular restaurants, voting patterns, and decision trends
"Regenerate options" feature for when users don't like the initial suggestions
🎯 Long-term vision:
Restaurant reservation integration via Yelp's partner APIs or OpenTable
In-app group chat during the decision-making process
Saved group preferences for recurring teams (work lunch groups, friend circles)
Multi-city support for distributed groups deciding on travel destinations
Gamification: decision-making leaderboards, badges, and achievements
Business partnerships with restaurants for promoted placement and special deals
Built With
- css3
- flask
- html5
- javascript
- python
- render
- yelp-fusion-api
Log in or sign up for Devpost to join the conversation.