add location file design spec
Four-zone template: header, observations, analysis, visit log. Agent workflow for generate and update. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -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.
|
||||||
Reference in New Issue
Block a user