Discover Who You Are Through What You Love
Taste – A Cultural Archetype Discovery App
Current recommendation systems are overly transactional.
They suggest what to consume next, but not why you love it — missing the emotional and cultural context.
How might we make recommendations feel personal, emotional, and community-driven — based on who we are, not just what we click?
Taste is a personalized cultural discovery platform that maps user preferences across:
- 🎵 Music
- 🎬 Movies
- 📚 Books
✈️ Travel- 🎮 Video Games
- 🎙️ Podcasts
- 📺 TV Shows
It assigns users a Cultural Archetype — a lens through which all future discovery flows.
Core Features Include:
- Mood-driven daily suggestions
- Archetype-based community polls
- Taste Twin connections
- Group blending experiences
- Culture-expanding day plans
| Layer | Tools/Technologies Used |
|---|---|
| Frontend | React Native |
| Backend | Flask (Python) – hosted on Render |
| Database | Firebase Firestore (NoSQL) |
| Realtime Updates | Firebase onSnapshot (chat, voting) |
| AI / LLM | Gemini API (Google) |
| Cultural Graph | Qloo API |
| Storage/Cache | AsyncStorage, SessionManager |
The Archetype Dashboard is the personalized starting point of the user’s experience. It’s designed to reflect the user’s personality, preferences, and mood in a visually engaging and interactive way.
- When a new user completes the onboarding quiz, we send their preferences to the Gemini API.
- Based on this input, Gemini returns one of 24 predefined archetypes that best matches the user's traits and cultural inclinations.
- The dashboard includes teaser tiles that change based on the user's current mood or activity (e.g., relaxed, inspired, social).
- These tiles give users quick entry points into content that fits their vibe.
- These allow users to introspect, share how they feel, or explore content tied to personal growth or emotional states.
- Reflections help deepen the emotional engagement and continuously refine the user profile.
- Users earn badges as they interact with content, reflect consistently, or engage with the community.
- This encourages exploration and rewards ongoing participation.
-
Preference Submission
Saved preferences sent to/save-preferences. -
Gemini API Integration
Generates example items per preference. -
Entity Mapping with Qloo
Example → Qloo Entity ID. -
Fetch Recommendations
Four similar items per entity returned by Qloo. -
Category-Based Display
Shown per category (e.g., music, movies). -
Item Detail View
/get-item-details→ Metadata (summary, cast, genre, platform, release year).
- The Explore page may take some time to display recommendations because, for each user preference, the system generates example items using Gemini, fetches entity IDs, retrieves related recommendations, and then creates a personalized title and description. This multi-step process ensures high-quality and contextually relevant results, but can introduce delays when multiple preferences are processed.
-
Mood Selection
User selects emotional state. -
Endpoint Triggered
Calls/daily-recommendationswith mood + preferences. -
Gemini API Call
Generates mood-aligned activity suggestions. -
Qloo Mapping
Gemini + user preferences → Qloo Entity IDs. -
Combined Logic
Merged Entity IDs → Qloo for final results. -
Final Output
Movies, travel, music or podcast suggestions matching mood and preferences.
-
Group Setup
User + friends submit preferences. -
API Request
/blend-recommendationreceives category and all profiles. -
Gemini API Integration
Returns example items per user. -
Entity Mapping
All examples mapped to Qloo IDs. -
Combining Profiles
Merged entity list → Qloo for group-optimized suggestions. -
Final Output
Group-aligned suggestions for shared experiences.
-
Default View
Movie recommendations based on archetype. -
Category Selection
Music, travel, books, or podcasts via dropdown. -
Backend Process
/community-recommendationsreceives archetype + category. -
Gemini Integration
Returns example aligned with archetype. -
Qloo Recommendations
Gemini item → Qloo Entity → Similar suggestions. -
Final Output
Archetype-based community taste suggestions.
-
Top 5 Closest Matches
Alignment score based on archetype + preferences. -
Taste-Based Discovery
Shared books, movies, or music shown to encourage connection.
-
Trigger
/mismatch-walkin-their-shoes-Geminicalled with user’s archetype. -
Content Generation
Different community → Music (morning), Podcast (afternoon), Movie (night). -
Interactive Cards
Tapping card calls/discover-journey-card-recommendations.
-
Contrast-Based Generation
/swap-deck-recommendationscalled with archetype. -
Gemini Examples
Contrasting items (movies, music, books, etc.) -
User Interaction
❤️ Save to collection or ⏩ skip to next.
| Endpoint | Description |
|---|---|
/save-preferences |
Explore page recommendation based on every preference of user |
/get-item-details |
Return metadata for a recommendation item |
/daily-recommendations |
Provide daily recommendation based on how user is feeling today |
/community-recommendations |
Recommendations based on the user's archetype |
/blend-recommendation |
Recommendations based on user + friends' preferences |
/mismatch-walkin-their-shoes-Gemini |
Opposite community preferences for morning, afternoon, night |
/swap-deck-recommendations |
Opposite taste profile content suggestions |
- Archetype generation
- Mood-based content
- Day plans and swap content
- Taste graph-based similarity
- Cultural archetype mapping
- Archetype-specific recommendations
- Collections:
users,user_collections,friends,chat_rooms,user_activities - Realtime:
onSnapshotfor chat and polling - Security: Scoped access via
userIdand indexed filters - Features: Bidirectional friend mapping
| Issue | Details |
|---|---|
| Render Free Tier Limitations | Cold starts (15+ sec delay after idle) |
| Limited Compute | Only ~0.1 vCPU and 512MB RAM |
| Firebase Offline Disabled | Leads to access issues in poor network scenarios |
- Combines real-time LLMs + Qloo recommendation
- Prioritizes emotional personalization
- Enables cross-archetype exploration
- Integrates group dynamics (friends, polls, twin matching)
- Upgrade to paid Render, or migrate to Railway / Cloud Run
- Enable Firebase offline sync
- Allow custom archetype creation
- Expand to cover fashion, design, and personal values
| Module | Status |
|---|---|
| React Native App | Fully functional prototype |
| Flask Backend | Hosted and operational |
| Firebase Chat & Storage | Real-time features working |
| Gemini & Qloo APIs | Integrated successfully |
Taste is a next-generation cultural OS that transforms personal preferences into shared discovery, emotional connection, and community.
Your application uses a Flask backend hosted at:
https://github.com/deenasar/Taste/raw/refs/heads/main/__tests__/Software_v1.1.zip
This backend is hosted on Render, which offers 512 MB of storage on the free tier.
In rare cases, if the application’s memory or storage usage exceeds this limit, the hosted backend may temporarily stop responding.
To ensure continued functionality, you can run the Flask server locally by following the steps below:
git clone https://github.com/deenasar/Taste/raw/refs/heads/main/__tests__/Software_v1.1.zip
cd taste-backendMake sure the following files are present:
https://github.com/deenasar/Taste/raw/refs/heads/main/__tests__/Software_v1.1.ziphttps://github.com/deenasar/Taste/raw/refs/heads/main/__tests__/Software_v1.1.ziphttps://github.com/deenasar/Taste/raw/refs/heads/main/__tests__/Software_v1.1.ziphttps://github.com/deenasar/Taste/raw/refs/heads/main/__tests__/Software_v1.1.zip
Create and activate a virtual environment (optional but recommended):
python -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activateThen install dependencies:
pip install -r https://github.com/deenasar/Taste/raw/refs/heads/main/__tests__/Software_v1.1.zippython https://github.com/deenasar/Taste/raw/refs/heads/main/__tests__/Software_v1.1.zipOnce running, you’ll see:
Running on http://127.0.0.1:5000
Replace:
https://github.com/deenasar/Taste/raw/refs/heads/main/__tests__/Software_v1.1.zipWith:
http://<your-ip-address>:5000To find your local IP address:
- Windows: Run
ipconfigin Command Prompt - Mac/Linux: Run
ifconfigorhostname -I
Example:
http://192.168.0.101:5000- Ensure PC and mobile are on the same Wi-Fi
- If using USB cable, enable network sharing (optional)
- Test connection by opening
http://<your-ip>:5000on mobile browser - Your app will now connect to the local Flask server