Snapping photos in Cellar — labels, sommelier notes, and the hero shot
When you tap "Add a Drink" the flow is:
1. **Pick the category** — wine, whiskey, beer, cider, mead, sake, cocktail, rum, tequila, gin, vodka, liqueur, or non-alcoholic. Drives which detail fields the form shows and tunes Wally's extraction prompt to that category.
2. **Snap photos** — use your phone's camera or upload images. Add as many as you like. Each photo lands in Storage with the moderation pipeline's customMetadata attached so it runs through SafeSearch like every other image.
3. **Wally classifies and reads each photo** — `processCellarLabel` sends each image to Claude Vision and returns one of three classifications:
• **`label`** — extracts producer, name, region, country, ABV, and the category-specific fields (varietal / vintage / wineType / appellation for wine; mashBill / proof / ageYears / whiskeyStyle / caskFinish for whiskey; style / hops / IBU for beer), plus a confidence rating (high / medium / low). Fills the form, never overwriting anything you typed.
• **`tasting_notes`** — a sommelier card, menu page, printed shelf-talker, hand-written notes, or magazine excerpt. Verbatim transcription, appended to your Notes box with a "— from photo —" separator so the boundary stays visible. You can edit the text before saving — Wally never writes notes directly to Firestore; that's your call.
• **`other`** — the glass, the dish, the room. The photo is stored; nothing is auto-written.
4. **Edit anything** — every extracted field is editable before save. Wally rarely gets ABV exact, hand-stamped vintages need a glance, and OCR on a curly script is fallible. The notes box is fully editable too.
5. **Pick your hero photo** — the first photo you add is the hero by default. From the cellar card's Edit panel, tap any photo to make it the new hero (the one that shows on the card, in the Map view, in stats top-rated lists, and in Wally pairing recommendations).
6. **Add the human bits** — rating (1–5 stars), tasted-on date, where (free-form label like "Home" / "Locanda Verde"), optional location pin (free reverse-geocode via Nominatim gives you a "Greenwich Village, New York" stamp).
7. **Save** — the tasting drops into your cellar. The taste-map refresh fires asynchronously, so the page header updates within a few seconds.
Adding sommelier notes to an existing tasting:
You don't have to capture the sommelier card the same night you log the tasting. Open any cellar card → Edit → tap the "+ Add" photo tile → snap or upload the card. Wally transcribes and the text lands in your Notes textarea, where you can clean it up before hitting Save.
What Wally won't (and shouldn't) read:
• Pricing — labels rarely list it and the back-of-bottle import strip is unreliable.
• Anything obscured or torn in the photo. If the producer is unreadable, Wally returns "low" confidence and you fill that field in.
• A photo classified as `other` — the glass, the dish — is stored as a memory shot, not transcribed.
If the label scan fails:
The tasting still saves with whatever you filled in by hand. Wally only refuses if the API call itself errors; you can always retake later. The per-photo OCR status chip shows "Reading…" → "Label" / "Sommelier notes" / "Photo" / "Read failed" so you can see which photos to revisit.
Pairing to a recipe:
From the cellar card in My Cellar, the `pairCellarEntryWithRecipe` callable reads a saved Menu Planner recipe and writes a pairing suggestion back onto the tasting ("Acidity from the Mourvèdre cuts the fat in the cassoulet"). The pairing surfaces inline on the card so next time you scroll the cellar you see "pairs with X."