diff --git a/23-Cooking/docs/superpowers/specs/2026-03-25-location-file-design.md b/23-Cooking/docs/superpowers/specs/2026-03-25-location-file-design.md new file mode 100644 index 0000000..a2b40dd --- /dev/null +++ b/23-Cooking/docs/superpowers/specs/2026-03-25-location-file-design.md @@ -0,0 +1,177 @@ +# Location File Design +**Date:** 2026-03-25 +**Context:** Extension to the cooking framework for a frequent traveler. Provides a structured workflow for documenting local market conditions and generating meal options from whatever ingredients are available in a given location. + +--- + +## Goals + +- Give a single Obsidian note per location that captures both raw observations and agent-generated analysis +- Support both freeform dump and structured field input — whichever suits the moment +- Produce five analysis outputs: ingredient role map, profile matches, meal options, regional intelligence, things to look out for +- Be permanently updatable across multiple visits via a running visit log +- Invoke via Claude Code conversation: "Process my Bangkok location file" + +--- + +## File Structure + +``` +23-Cooking/ + Locations/ + _Location Template.md ← blank template with example entry + Bangkok, Thailand.md + Lisbon, Portugal.md + Oaxaca, Mexico.md + ... +``` + +Each location file is a single Obsidian note named `City, Country.md`. The `_Location Template.md` underscore prefix keeps it sorted to the top of the folder. + +--- + +## Zone Architecture + +Every location file has four clearly-marked zones: + +``` +ZONE 1: HEADER + Location name, country/region, date first visited, date last updated + +ZONE 2: OBSERVATIONS ← user fills in + Raw notes about what's available at local markets and shops. + Accepts freeform dump or structured fields. + Includes "First impressions" freetext field. + +ZONE 3: ANALYSIS ← agent fills in + 1. Ingredient Role Map + 2. Profile Matches + 3. Meal Options + 4. Regional Intelligence + 5. Things to Look Out For + +ZONE 4: VISIT LOG ← user appends to + Dated entries from each visit. + Agent reads this when updating the analysis. +``` + +--- + +## Zone 2: Observations + +Accepts either format — the agent handles both: + +**Freeform dump:** +``` +I'm in Chiang Mai. Tons of fresh lemongrass, galangal, kaffir lime leaves. +Fish sauce is the condiment of choice. Lots of cheap pork cuts. Sticky rice +everywhere. Coconut milk in every corner shop. Fresh herbs piled high. +``` + +**Structured fields:** +``` +Proteins seen: pork (cheap), chicken, eggs, tofu +Produce seen: bok choy, morning glory, eggplant, long beans +Starches: sticky rice, rice noodles, glass noodles +Fats available: neutral oil, coconut milk +Acids available: lime, fish sauce, tamarind paste +Aromatics: lemongrass, galangal, shallot, garlic, chili +Condiments: fish sauce, oyster sauce, fermented soybean paste +Notables: kaffir lime leaves, pandan, fresh turmeric +First impressions: [freetext — prices, what's abundant, what's absent] +``` + +The template includes a worked example using a fictional location (Tbilisi, Georgia) showing both formats side by side, so the expected detail level is clear before the user fills in their own. + +--- + +## Zone 3: Analysis (Agent Output) + +Five subsections, all generated from the Observations zone and Visit Log: + +### 1. Ingredient Role Map +Observations translated directly into framework roles: +> **Fat:** Neutral oil, coconut milk (braising only) | **Acid:** Lime, fish sauce | **Aromatic:** Lemongrass + galangal + shallot + garlic + chili | **Starch:** Sticky rice, rice noodles | **Protein:** Pork, chicken, tofu | **Umami:** Fish sauce, oyster sauce, fermented paste + +### 2. Profile Matches +Which of the 10 framework profiles are executable here, with a confidence indicator (✦ = partial, ✦✦ = workable, ✦✦✦ = full): +> Southeast Asian ✦✦✦ · East Asian ✦✦ · South Asian ✦ + +Profiles that score ✦ or less are noted with what's missing. + +### 3. Meal Options +3–5 concrete builds using available ingredients. Each formatted as a mini formula fill matching the [[Weekly Planning Template]] structure: +> *Pork stir-fry with morning glory* — One-Pan Sear · Southeast Asian · pork / morning glory / rice noodles / neutral oil / lime+fish sauce / lemongrass+garlic+chili + +### 4. Regional Intelligence +What's culinarily notable about this location — staple ingredients, local cooking patterns, things that differ from the framework defaults: +> Sticky rice is the starch staple here, not jasmine rice. Kaffir lime leaves are used as an aromatic, not just a garnish. Morning glory (pak boong) is the default green — cheap, fast-cooking, takes high heat well. + +### 5. Things to Look Out For +Ingredients or products worth seeking on the next market visit — local specialties, seasonal items, crossover ingredients: +> Fresh turmeric root, pandan leaves (floral sweetness in rice), fresh tamarind pods (better than paste for acid depth), pla ra (fermented fish paste — extreme umami depth) + +--- + +## Zone 4: Visit Log + +Chronological entries, oldest at top, newest at bottom. Each entry is a dated heading + freeform notes: + +```markdown +### 2026-03-10 (first visit) +Settled into the Don Mueang area. Markets open early — 6am is peak +freshness. Galangal cheaper than ginger here. Sticky rice only at +street stalls, not supermarkets. + +### 2026-09-15 (return visit) +Rainy season — different produce. Lots of young coconut. Found a wet +market two streets over, much better selection. Fermented fish paste +(pla ra) available there. +``` + +When the user asks the agent to update the file, it reads the full visit log and revises the Analysis zone — seasonal shifts, newly discovered ingredients, and price notes all feed back into the output. + +--- + +## Agent Workflow + +### First visit (generate) +1. Copy `_Location Template.md`, rename to `City, Country.md` +2. Fill in Zone 2 (Observations) — freeform dump or structured fields +3. Open Claude Code: **"Process my [City] location file"** +4. Agent reads Zone 2, fills in Zone 3 (Analysis), updates Zone 1 header dates, commits + +### Return visit (update) +1. Open the existing location file +2. Append a dated entry to Zone 4 (Visit Log) +3. Open Claude Code: **"Update my [City] location file"** +4. Agent reads Zone 2 + full Zone 4, revises Zone 3, updates last-updated date in Zone 1, commits + +### Agent context +When processing, the agent has access to the full framework: +- [[Flavor Profile Formulas]] — to match observations to profiles +- [[Role Substitution Logic]] — to understand what roles available ingredients fill +- [[Flavor Sense]] — to reason about what combinations work and why +- [[Frameworks]] — to assign techniques to meal options + +--- + +## Template Structure + +The `_Location Template.md` file contains: + +1. **Blank header** with labeled fields for location name, region, first visited, last updated +2. **Observations zone** with both input formats shown (structured fields as the primary, freeform note above them) +3. **A complete worked example** using "Tbilisi, Georgia" — showing filled-in structured fields, a freeform dump, and a first impressions note — so the expected detail level is unambiguous +4. **Analysis zone** with placeholder headings and one-line descriptions of what each subsection will contain (filled by agent) +5. **Visit Log zone** with one example dated entry + +--- + +## Implementation Scope + +1. Create `Locations/` subfolder +2. Create `_Location Template.md` with blank zones + Tbilisi example +3. Create `CLAUDE.md` (or update if exists) with agent processing instructions: how to read a location file, what to produce in each Analysis subsection, how to handle freeform vs structured input, how to update vs generate + +Out of scope: automatic Obsidian plugin integration, location-based reminders, nutrition tracking per location.