The Intel: How It Works
Behind the scenes of The Racket's recommendation engine
The Straight Talk
We're not magic. We're math. This page explains exactly how Unwyned matches you to wines, how we learn from your ratings, and why our recommendations get better over time. No smoke and mirrors. Just the operation.
Want the full technical deep-dive? Read The Architecture of Taste for the complete engineering documentation including mathematical proofs, psychophysical research citations, and implementation details.
1. The Eight-Dimension Taste System
Every wine has a profile. Every drinker has preferences. We map both using the same 8-dimensional system. Think of it like coordinates on a map—except instead of north and south, we're measuring how sweet, tannic, fruity, or earthy something tastes.
| Dimension | What It Measures | Scale (1-5) |
|---|---|---|
| Body | How heavy or light the wine feels in your mouth | Light → Full-bodied |
| Sweetness | Residual sugar level | Bone-dry → Sweet |
| Acidity | Tartness, brightness, crispness | Soft → Crisp/Bright |
| Tannin | That dry, grippy feeling (mostly in reds) | Silky → Grippy |
| Fruit Intensity | How much fruit flavor dominates | Subtle → Fruit-forward |
| Oak | Vanilla, toast, spice from barrel aging | Unoaked → Heavily oaked |
| Earthiness | Mineral, dirt, mushroom, leather notes | Clean → Earthy/Mineral |
| Spice | Pepper, clove, cinnamon notes | Mild → Spicy/Peppery |
2. How We Build Your Profile: Center-Out Psychographics
When you take the quiz, we use a Center-Out Scoring Model instead of directly asking "do you like tannins?" (which most people can't answer accurately). Here's how it works:
Quiz Strategy: Starting Neutral
Every user starts with a neutral profile: all dimensions set to 3.0 (the middle of our 1-5 scale). Questions then shift your profile up or down based on proxy questions about coffee, desserts, textures, and other familiar experiences.
Primary Anchors (±1.2): Initial questions establish broad direction ("Do you drink coffee black?" affects tannin tolerance).
Reinforcement (±0.8): Follow-up questions triangulate tricky dimensions like tannin and acidity.
Trade-offs (±1.0): Final questions prevent "impossible" profiles by forcing choices between conflicting attributes (e.g., "Which is worse: too sweet or too dry?").
Why Center-Out Works
This approach prevents "profile saturation" where users hit the maximum (5.0) too easily. To reach an extreme preference, you must answer consistently across multiple correlated questions. Most users end up with profiles around 1.8-4.2, which leaves headroom for learning and adaptation as you rate wines.
Edge Case: Manifold Projection. If your quiz answers create a chemically impossible profile (e.g., high acid + high sugar + high body), we project it 30% toward the nearest valid wine archetype. This rarely happens with our trade-off questions, but it's a safety net that ensures we can always find real wines that match you.
3. The Matching Algorithm
When you scan a menu, here's what happens:
Step 1: Extract the Text
Your phone's camera reads the menu using on-device OCR (Optical Character Recognition). On iOS, we use Apple's Vision framework. On Android, Google ML Kit. The image never leaves your device—we only extract the text.
Step 2: Parse the Wines
We send the text (not the image) to an AI model to identify each wine, including:
- Wine name and producer
- Varietal (Cabernet, Chardonnay, etc.)
- Vintage year
- Region of origin
- Price (if listed)
Privacy Tiered AI Processing
On supported devices (iOS 26+), we use Apple Intelligence to parse menus entirely on your device—no cloud required. For older devices or complex menus, we fall back to cloud AI (OpenAI or Claude) with strict input sanitization.
Step 3: Estimate Wine Profiles
For each wine on the menu, we estimate its 8-dimension profile using:
- Varietal data: We have profiles for 170+ grape varieties
- Regional modifiers: A Burgundy Pinot differs from an Oregon Pinot
- Description keywords: "Bold," "crisp," "earthy" adjust the profile
- Vintage characteristics: Hot vs. cool years affect fruit intensity
Step 4: Calculate Match Scores (Asymmetric Similarity)
This is where the math happens. We calculate a weighted, asymmetric Euclidean distance between your taste vector and each wine's profile vector.
Shorter distance = better match. A distance of 0 means the wine is exactly your stated preferences. Higher numbers mean it's further from what you like.
Why Asymmetric Penalties?
Humans are evolutionarily programmed to reject bitterness (poison signal) and excessive acidity (spoilage signal). A wine that's too tannic for you is worse than one that's not tannic enough.
Our asymmetric penalty function ensures that "offending" your palate (overshooting) is penalized nearly twice as heavily as simply "boring" your palate (undershooting). This matches real human sensory psychology.
Step 5: Personalized Weighting
Not all dimensions matter equally to you. Some people care deeply about sweetness but don't mind tannins. Others are picky about oak but flexible on acidity.
As you rate wines, we learn which dimensions you care about most by analyzing the variance in your ratings. Dimensions you rate consistently high or low get higher weight. Dimensions you're inconsistent about get lower weight.
Step 6: Sigmoid Normalization
Raw distance scores are hard to interpret. We use a logistic sigmoid transformation to convert distance into an intuitive match percentage:
This gives you a clean 0-100% match score. A 98% match means the wine's chemical profile is nearly identical to your preferences in vector space.
Step 7: Rank and Display
We sort all wines by match score (best matches at the top) and show you:
- Match percentage: How well it fits your profile (sigmoid-normalized)
- Why it matches: "Matches your preference for full-bodied, low-tannin reds"
- Exploration tags: "Outside your usual—try it anyway" for wines that might surprise you
4. The Ranking System
We don't use a 100-point scale. We use The Bootlegger's Quality Scale—a 1-5 barrel system inspired by Prohibition-era slang.
| Rating | Title | What It Means |
|---|---|---|
| 1 Barrel | The Swill | Undrinkable. Drain pour. Gas station wine. |
| 2 Barrels | The Hustle | Trying but failing. Good for cooking, not drinking. |
| 3 Barrels | The Daily Grind | Solid. Does the job. A working person's pour. |
| 4 Barrels | The Heavy Hitter | Excellent. Commands respect. Worth the price. |
| 5 Barrels | The Don | Perfection. You run the block with this bottle. |
5. How We Learn From Your Ratings: Bounded Asymptotic Learning
Every time you rate a wine, we update your taste vector using a bounded asymptotic learning model. Here's how it works:
The Update Formula
Positive Ratings (4-5 Barrels)
We shift your taste vector toward the wine's profile. If you love a wine that's more tannic than your current preference (e.g., you're at 3.0, wine is 4.5), we nudge your tannin tolerance up.
Negative Ratings (1-2 Barrels)
We shift your vector away from the wine's profile. Hated an oaky Chardonnay (wine oak = 4.5, you're at 3.0)? We'll lower your oak preference toward 2.5 or lower.
Saturation Dampening (The Anti-Lock-In)
If you're at an extreme (e.g., Tannin = 5.0 or 1.0), we apply dampening with a hard floor of 0.25. This ensures that even extreme preferences can shift back toward center if you consistently rate wines differently. You're never "locked in" to your initial quiz results.
Cold Start Problem
New users start with quiz-based profiles. These are decent but not perfect. After 5-10 ratings, your profile becomes significantly more accurate. After 20+ ratings, it's highly personalized.
6. Data Privacy and Processing
Here's what stays on your device vs. what goes to the cloud:
| Data Type | Where It Lives | Why |
|---|---|---|
| Camera images | On-device only | Privacy. Images never leave your phone unless you explicitly choose to send a difficult label. |
| OCR text extraction | On-device | Apple Vision (iOS) and ML Kit (Android) run locally. |
| Menu text parsing | Cloud (sanitized) | Sent to AI model to identify wines. Text is sanitized to remove personal info. |
| Your taste vector | Device + encrypted cloud | Stored locally and synced to your account (encrypted at rest). |
| Wine ratings | Device + cloud | Used to improve your recommendations and sync across devices. |
7. Limitations and Known Issues
We're not perfect. Here's what we're working on:
OCR Accuracy
- Handwritten menus are tough. Printed text works best.
- Low lighting reduces accuracy. Use the flash.
- Unusual fonts or layouts can confuse the parser.
Wine Data Coverage
- We have profiles for 170+ varietals, but obscure grapes might default to generic estimates.
- Natural wines and unconventional blends are harder to profile accurately.
Taste Complexity
- 8 dimensions capture a lot, but not everything. Terroir nuances, bottle age, and serving temperature matter too.
- We're constantly refining our models to improve accuracy.
8. The Bottom Line
Unwyned isn't trying to replace sommeliers or become a wine encyclopedia. We're trying to make wine less intimidating. Our algorithm is designed to:
- Learn your actual taste preferences (not what you think you should like)
- Match you to wines you'll enjoy without requiring a degree in viticulture
- Respect your privacy by processing as much as possible on your device
- Get better over time as you rate more wines
Questions or Feedback?
If you have technical questions about the algorithm, want to report a bug, or have suggestions for improvement, reach out to us at support@unwyned.com.
We built this because we were tired of guessing at wine menus. If it helps you, too—good. If you find issues, let us know.