Project 22 of ~34

🍷 Somm in Your Pocket — Architecture

AI wine sommelier app. React Native (iOS/Android) + Deno backend + Supabase + Ollama (Mac Mini) + wine database.

🛠️ Tech Stack

ComponentTechnologyWhy
Mobile AppReact Native (Expo)Camera for label scanning, cross-platform iOS/Android
OCR / VisionGoogle ML Kit Text RecognitionExtract text from wine labels
BackendDeno 2Wine lookup, recommendation engine, palate profile
DatabaseSupabase (PostgreSQL)Users, scan history, palate profiles, wine ratings
AI SommelierOllama (Mac Mini)Conversation, tasting note generation, food pairing
Wine DatabaseLicense from Vivino / Wine.com API200K+ wines with profiles, pricing, ratings
PaymentsStripeSubscriptions

🤖 AI Sommelier System

Label → Wine Profile
OCR extracts: producer, region, vintage. Query wine DB → full profile returned. Ollama generates conversational explanation in plain English.
Palate Profile Engine
Track all scanned wines + ratings. Ollama synthesizes into a palate profile: body preference, tannin tolerance, acidity, sweetness, flavor families. Visual radar chart. Updates on every scan.
Recommendation Engine
Input: budget + food + occasion → filter wine DB → rank by palate profile match score → Ollama generates "why you'll like this" explanations.
Food Pairing AI
Ollama knows wine + food pairing principles. Given dish description, generates pairing recommendations with reasoning. Not retrieval — genuine reasoning.
Conversational Q&A
Users ask follow-up questions: "Is this like Pinot Noir?" Ollama answers by comparing wine profiles, explaining differences in plain language.

🗄️ Data Model

wines
iduuid
producervarchar(255)
namevarchar(255)
regionvarchar(100)
countryvarchar(50)
grape_varietiestext[]e.g., {Pinot Noir}
vintageinteger
body_scoreinteger (1–5)
tannin_scoreinteger (1–5)
acidity_scoreinteger (1–5)
sweetness_scoreinteger (1–5)
profile_descriptiontextAI-generated plain English
avg_priceinteger (cents)
quality_scoreinteger (80–100)Critical consensus
palate_profiles
user_iduuid (FK)
body_avgnumericInferred from scans/ratings
tannin_avgnumeric
acidity_avgnumeric
sweetness_avgnumeric
preferred_flavorstext[]e.g., {fruity, earthy, spicy}
wine_ids_likeduuid[]
wine_ids_dislikeduuid[]
last_updated_attimestamp

Requirements  |  All Projects  |  Presentation →