Chef Ingredient Localizer
A recipe is written in the author's market; the cook shops in their own. The localizer translates — not word-for-word but FUNCTION-for-function. Its core law: identify what the ingredient DOES before replacing what it IS. Generic role-based substitution mechanics live in chef-pantry-improviser; this skill adds the cross-cuisine sourcing layer, local-market intelligence, and the honesty protocol.
The localization protocol
- Decode the ingredient: what is it chemically/functionally? (Fish sauce = salt + glutamate + funk. Crème fraîche = cultured 30% cream that survives heat. Tomatillo = tart firm fruit-acid body.) One sentence of decoding beats ten guesses.
- Rank the paths: (a) local TRUE equivalent under a different name → (b) local product occupying the same role → (c) build-it-from-parts → (d) restructure the dish → (e) postpone honestly (soul-ingredients: saffron, Sichuan peppercorn's numbing, real wasabi — some things have no double).
- Declare the trade (
chef-world-classicshonesty rule): say what changes ("sherry for Shaoxing: 90% there, slightly drier"). Silent substitutions poison trust in the recipe when it tastes different. - Match the dish's tolerance: background role = substitute freely; starring role = substitute carefully; the dish is NAMED after it = path (d) or (e).
The CIS/Central Asia decoder table (the daily bridge)
| Recipe says | Local reality |
|---|---|
| Buttermilk | Kefir 1:1 (better, honestly) or milk + lemon 10 min |
| Crème fraîche / sour cream (cooking) | Smetana 25–30% — the true native; low-fat splits when boiled |
| Cottage cheese / ricotta / quark | Tvorog (dryness varies: press or loosen with smetana); syrniki-grade = ricotta-grade |
| Feta | Brynza (saltier — rinse) |
| Cilantro/coriander leaf | Кинза — same plant, different alphabet |
| Scallions | Зеленый лук |
| Beet greens/chard | Ботва свеклы — same organ, free at the bazaar |
| Ground lamb/beef mix | Фарш from the bazaar butcher, ask the fat percent out loud |
| Prosciutto (cooked role) | Any dry-cured meat locally available; raw-plate role: postpone or serve local cured horse/beef (kazy culture is a FEATURE, not a fallback) |
| Kaffir lime leaf | Lime zest + bay (declared trade: 60%) |
| Fish sauce | Soy + anchovy paste, or soy + salted-caper mash; Worcestershire in beef dishes |
| Mirin | Sugar + vinegar splash + water, or sweet white wine |
| Tahini | Ground toasted sesame + oil (blender) — bazaars sell sesame cheap |
| Tomatillo | Green tomato + lime juice (declared trade) |
| Masa harina | Order online; NO cornmeal cosplay — pivot to wheat tortillas (a real Mexican region) |
| Parmesan (cooking role) | Any long-aged hard cheese; the crystals-and-crumble test at the counter |
| Wine for cooking | Dry drinkable-cheap; NEVER "cooking wine" with salt; no-alcohol path: stock + splash vinegar + patience |
Bazaar & market intelligence
- The bazaar is the localizer's home field: spice rows sell whole cumin/coriander/pepper fresher and 5× cheaper than jarred (
chef-spice-guidefreshness tests apply at the stall — rub and smell BEFORE buying); butchers cut to order (ask for the braise cut by POINTING at the diagram-equivalent: "на долгое тушение"); dairy rows carry the whole smetana-tvorog-kefir arsenal. - Seasonal-glut strategy: when tomatoes/apricots/peppers hit peak-cheap, that is the preservation calendar's signal (
chef-fermentation-preservation+chef-kitchen-economicsseasonal math). - Online completes the map: shelf-stable soul-ingredients (masa, doubanjiang, miso, fish sauce, dried anchos) ship fine — one quarterly order stocks four cuisines for months. Perishable exotics are where localization matters most.
- Quality picking without labels: smell at the stall (rancid nuts/oils detectable instantly), squeeze produce at the stem end, cloudy-eyed fish walks past you not with you (seafood guide picking specs).
Cuisine-specific bridges
Each cuisine skill carries its own localization notes (Chinese → references table; Mexican → chili exile paths; Japanese → dashi tiers) — this skill is their shared engine and the fallback when a bridge is missing. When building a new bridge: decode → rank paths → declare — and write the answer back into advice so the user learns the pattern, not just the fix.