{
 "meta": {
  "title": "The Pantry",
  "site": "eathealthyandcheap.com",
  "version": "1.0.0",
  "principles": [
   "No added oil. Sweat aromatics in water, broth, or their own moisture.",
   "No added sugar. Sweetness comes from dates, fruit, and caramelized vegetables.",
   "No refined flour. Grains stay intact.",
   "Little to no added salt. Acid, heat, herbs, and umami do that job better.",
   "Whole plant foods first. Everything here is a whole food or a simple pressing of one."
  ],
  "cost_key": {
   "1": "Cheap. Buy freely.",
   "2": "Moderate. Buy with intent.",
   "3": "Splurge. A little goes far."
  },
  "flag_key": {
   "whole-food-fat": "Calorie dense. Use as an accent, not a base.",
   "natural-sugar": "Sugar with fiber attached. Still concentrated.",
   "sodium": "Contains meaningful sodium. Dilute or use sparingly.",
   "check-label": "Commonly sold with added oil, salt, or sugar. Read the ingredients.",
   "make-your-own": "Store versions are usually salted. Blend it yourself.",
   "caution": "Requires specific handling. See notes."
  }
 },
 "categories": [
  {
   "id": "legumes",
   "name": "Legumes & Pulses",
   "blurb": "The protein spine. Cheapest complete nutrition in the store."
  },
  {
   "id": "grains",
   "name": "Whole Grains",
   "blurb": "Intact kernels, not flour. Bulk, fiber, satiety."
  },
  {
   "id": "aromatics",
   "name": "Aromatics",
   "blurb": "The base of nearly every cuisine. Sweat in water, not oil."
  },
  {
   "id": "vegetables",
   "name": "Vegetables",
   "blurb": "Fresh, frozen, canned. Frozen is picked riper and costs less."
  },
  {
   "id": "greens",
   "name": "Leafy Greens",
   "blurb": "Highest nutrient density per calorie of anything here."
  },
  {
   "id": "fruit",
   "name": "Fruit",
   "blurb": "Whole fruit only. Sweetness with fiber attached."
  },
  {
   "id": "nuts-seeds",
   "name": "Nuts & Seeds",
   "blurb": "Whole-food fat. Small amounts do real work."
  },
  {
   "id": "herbs-fresh",
   "name": "Fresh Herbs",
   "blurb": "Flavor without salt, oil, or sugar. The core substitution."
  },
  {
   "id": "herbs-dried",
   "name": "Dried Herbs",
   "blurb": "Bloom in liquid. Add early, unlike fresh."
  },
  {
   "id": "spices",
   "name": "Spices",
   "blurb": "Buy whole, toast, grind. Ten times the flavor for the same price."
  },
  {
   "id": "chiles-fresh",
   "name": "Fresh Chiles",
   "blurb": "Heat plus fruit. Not interchangeable with each other."
  },
  {
   "id": "chiles-dried",
   "name": "Dried Chiles",
   "blurb": "Where the depth lives. Toast, soak, blend."
  },
  {
   "id": "blends",
   "name": "Spice Blends",
   "blurb": "Make your own and you control the salt."
  },
  {
   "id": "acids",
   "name": "Acids",
   "blurb": "What you reach for instead of salt. The most underused tool."
  },
  {
   "id": "umami",
   "name": "Umami & Depth",
   "blurb": "Savory intensity without meat, oil, or bouillon cubes."
  },
  {
   "id": "thickeners",
   "name": "Thickeners & Creaminess",
   "blurb": "Creamy textures with no dairy and no oil."
  },
  {
   "id": "milks",
   "name": "Plant Milks",
   "blurb": "Unsweetened only. Read the label for oils and gums."
  }
 ],
 "items": [
  {
   "id": "red-lentils",
   "name": "Red lentils",
   "aka": [
    "masoor dal"
   ],
   "category": "legumes",
   "form": "dried",
   "roles": [
    "protein",
    "thickener"
   ],
   "cuisines": [
    "indian",
    "middle-eastern",
    "ethiopian"
   ],
   "cost": 1,
   "shelf": "pantry",
   "why": "Cook in 20 minutes and collapse into a creamy base with no cream.",
   "flags": [],
   "swap": [
    "yellow-split-peas"
   ]
  },
  {
   "id": "brown-lentils",
   "name": "Brown lentils",
   "aka": [],
   "category": "legumes",
   "form": "dried",
   "roles": [
    "protein"
   ],
   "cuisines": [
    "french",
    "middle-eastern",
    "american"
   ],
   "cost": 1,
   "shelf": "pantry",
   "why": "Hold their shape. The default lentil for soups and salads.",
   "flags": [],
   "swap": []
  },
  {
   "id": "green-lentils",
   "name": "Green lentils",
   "aka": [],
   "category": "legumes",
   "form": "dried",
   "roles": [
    "protein"
   ],
   "cuisines": [
    "french",
    "mediterranean"
   ],
   "cost": 1,
   "shelf": "pantry",
   "why": "Firmer than brown, nuttier. Good cold.",
   "flags": [],
   "swap": []
  },
  {
   "id": "black-beluga-lentils",
   "name": "Black beluga lentils",
   "aka": [],
   "category": "legumes",
   "form": "dried",
   "roles": [
    "protein"
   ],
   "cuisines": [
    "french",
    "mediterranean"
   ],
   "cost": 2,
   "shelf": "pantry",
   "why": "Stay glossy and separate. Best-looking lentil on a plate.",
   "flags": [],
   "swap": []
  },
  {
   "id": "french-green-lentils",
   "name": "French green lentils",
   "aka": [
    "lentilles du Puy"
   ],
   "category": "legumes",
   "form": "dried",
   "roles": [
    "protein"
   ],
   "cuisines": [
    "french"
   ],
   "cost": 2,
   "shelf": "pantry",
   "why": "Peppery, never mushy. Worth the premium for salads.",
   "flags": [],
   "swap": []
  },
  {
   "id": "yellow-split-peas",
   "name": "Yellow split peas",
   "aka": [
    "chana dal alt"
   ],
   "category": "legumes",
   "form": "dried",
   "roles": [
    "protein",
    "thickener"
   ],
   "cuisines": [
    "indian",
    "ethiopian",
    "european"
   ],
   "cost": 1,
   "shelf": "pantry",
   "why": "Break down completely. The base of dal and thick soups.",
   "flags": [],
   "swap": []
  },
  {
   "id": "green-split-peas",
   "name": "Green split peas",
   "aka": [],
   "category": "legumes",
   "form": "dried",
   "roles": [
    "protein",
    "thickener"
   ],
   "cuisines": [
    "american",
    "european"
   ],
   "cost": 1,
   "shelf": "pantry",
   "why": "Sweeter than yellow. Classic thick soup with no ham needed.",
   "flags": [],
   "swap": []
  },
  {
   "id": "chickpeas",
   "name": "Chickpeas",
   "aka": [
    "garbanzo",
    "chana"
   ],
   "category": "legumes",
   "form": "dried, canned",
   "roles": [
    "protein"
   ],
   "cuisines": [
    "middle-eastern",
    "indian",
    "mediterranean",
    "north-african"
   ],
   "cost": 1,
   "shelf": "pantry",
   "why": "The most versatile bean. Whole, mashed, roasted, or blended.",
   "flags": [],
   "swap": []
  },
  {
   "id": "black-beans",
   "name": "Black beans",
   "aka": [
    "frijoles negros"
   ],
   "category": "legumes",
   "form": "dried, canned",
   "roles": [
    "protein"
   ],
   "cuisines": [
    "mexican",
    "brazilian",
    "caribbean"
   ],
   "cost": 1,
   "shelf": "pantry",
   "why": "Deep, earthy. Anchor of Latin American cooking.",
   "flags": [],
   "swap": []
  },
  {
   "id": "pinto-beans",
   "name": "Pinto beans",
   "aka": [],
   "category": "legumes",
   "form": "dried, canned",
   "roles": [
    "protein"
   ],
   "cuisines": [
    "mexican",
    "american"
   ],
   "cost": 1,
   "shelf": "pantry",
   "why": "Creamy when cooked long. Refry them in their own liquid, not lard.",
   "flags": [],
   "swap": []
  },
  {
   "id": "kidney-beans",
   "name": "Kidney beans",
   "aka": [
    "rajma"
   ],
   "category": "legumes",
   "form": "dried, canned",
   "roles": [
    "protein"
   ],
   "cuisines": [
    "indian",
    "caribbean",
    "american"
   ],
   "cost": 1,
   "shelf": "pantry",
   "why": "Firm, holds up in chili. Must be boiled hard, never slow-cooked from raw.",
   "flags": [
    "caution"
   ],
   "swap": []
  },
  {
   "id": "cannellini-beans",
   "name": "Cannellini beans",
   "aka": [
    "white kidney"
   ],
   "category": "legumes",
   "form": "dried, canned",
   "roles": [
    "protein",
    "thickener"
   ],
   "cuisines": [
    "italian",
    "mediterranean"
   ],
   "cost": 1,
   "shelf": "pantry",
   "why": "Silky. Blends into the smoothest bean cream of any white bean.",
   "flags": [],
   "swap": []
  },
  {
   "id": "navy-beans",
   "name": "Navy beans",
   "aka": [
    "haricot"
   ],
   "category": "legumes",
   "form": "dried, canned",
   "roles": [
    "protein"
   ],
   "cuisines": [
    "american",
    "british"
   ],
   "cost": 1,
   "shelf": "pantry",
   "why": "Small, mild, cooks fast. Best for baked-bean style dishes.",
   "flags": [],
   "swap": []
  },
  {
   "id": "great-northern-beans",
   "name": "Great northern beans",
   "aka": [],
   "category": "legumes",
   "form": "dried, canned",
   "roles": [
    "protein"
   ],
   "cuisines": [
    "american",
    "french"
   ],
   "cost": 1,
   "shelf": "pantry",
   "why": "Between navy and cannellini. Mild and forgiving.",
   "flags": [],
   "swap": []
  },
  {
   "id": "adzuki-beans",
   "name": "Adzuki beans",
   "aka": [],
   "category": "legumes",
   "form": "dried",
   "roles": [
    "protein"
   ],
   "cuisines": [
    "japanese",
    "chinese",
    "korean"
   ],
   "cost": 2,
   "shelf": "pantry",
   "why": "Slightly sweet. Used savory in China, sweet in Japan.",
   "flags": [],
   "swap": []
  },
  {
   "id": "mung-beans",
   "name": "Mung beans",
   "aka": [
    "moong dal"
   ],
   "category": "legumes",
   "form": "dried",
   "roles": [
    "protein"
   ],
   "cuisines": [
    "indian",
    "chinese",
    "korean"
   ],
   "cost": 1,
   "shelf": "pantry",
   "why": "Cook in 25 minutes without soaking. Sprout them for free greens.",
   "flags": [],
   "swap": []
  },
  {
   "id": "black-eyed-peas",
   "name": "Black-eyed peas",
   "aka": [
    "cowpeas"
   ],
   "category": "legumes",
   "form": "dried, canned",
   "roles": [
    "protein"
   ],
   "cuisines": [
    "american",
    "west-african",
    "indian"
   ],
   "cost": 1,
   "shelf": "pantry",
   "why": "No soak needed. Earthy, quick, cheap.",
   "flags": [],
   "swap": []
  },
  {
   "id": "fava-beans",
   "name": "Fava beans",
   "aka": [
    "broad beans",
    "ful"
   ],
   "category": "legumes",
   "form": "dried, frozen",
   "roles": [
    "protein"
   ],
   "cuisines": [
    "north-african",
    "middle-eastern",
    "mediterranean"
   ],
   "cost": 2,
   "shelf": "pantry",
   "why": "Meaty and assertive. Peel the skins for anything delicate.",
   "flags": [],
   "swap": []
  },
  {
   "id": "lima-beans",
   "name": "Lima beans",
   "aka": [
    "butter beans"
   ],
   "category": "legumes",
   "form": "frozen, dried",
   "roles": [
    "protein"
   ],
   "cuisines": [
    "american",
    "peruvian"
   ],
   "cost": 1,
   "shelf": "freezer",
   "why": "Buttery texture with no butter. Frozen beats dried here.",
   "flags": [],
   "swap": []
  },
  {
   "id": "edamame",
   "name": "Edamame",
   "aka": [],
   "category": "legumes",
   "form": "frozen",
   "roles": [
    "protein"
   ],
   "cuisines": [
    "japanese",
    "chinese"
   ],
   "cost": 2,
   "shelf": "freezer",
   "why": "Complete protein, ready in five minutes from frozen.",
   "flags": [],
   "swap": []
  },
  {
   "id": "firm-tofu",
   "name": "Firm tofu",
   "aka": [],
   "category": "legumes",
   "form": "fresh",
   "roles": [
    "protein"
   ],
   "cuisines": [
    "chinese",
    "japanese",
    "korean",
    "thai"
   ],
   "cost": 1,
   "shelf": "fridge",
   "why": "Press it, freeze it, then thaw for a chewy texture nothing else gives.",
   "flags": [],
   "swap": []
  },
  {
   "id": "silken-tofu",
   "name": "Silken tofu",
   "aka": [],
   "category": "legumes",
   "form": "fresh",
   "roles": [
    "protein",
    "thickener"
   ],
   "cuisines": [
    "chinese",
    "japanese"
   ],
   "cost": 1,
   "shelf": "fridge",
   "why": "Blends into sauces and puddings. Replaces cream and eggs at once.",
   "flags": [],
   "swap": []
  },
  {
   "id": "tempeh",
   "name": "Tempeh",
   "aka": [],
   "category": "legumes",
   "form": "fresh",
   "roles": [
    "protein"
   ],
   "cuisines": [
    "indonesian",
    "american"
   ],
   "cost": 2,
   "shelf": "fridge",
   "why": "Fermented, nutty, holds shape. Steam it first to remove bitterness.",
   "flags": [],
   "swap": []
  },
  {
   "id": "peanuts",
   "name": "Peanuts",
   "aka": [
    "groundnuts"
   ],
   "category": "legumes",
   "form": "raw",
   "roles": [
    "protein",
    "fat"
   ],
   "cuisines": [
    "thai",
    "west-african",
    "chinese",
    "indonesian"
   ],
   "cost": 1,
   "shelf": "pantry",
   "why": "Botanically a legume. Ground into sauces across three continents.",
   "flags": [
    "whole-food-fat"
   ],
   "swap": []
  },
  {
   "id": "brown-rice-long-grain",
   "name": "Brown rice, long grain",
   "aka": [],
   "category": "grains",
   "form": "dried",
   "roles": [
    "base"
   ],
   "cuisines": [
    "american",
    "indian",
    "chinese"
   ],
   "cost": 1,
   "shelf": "pantry",
   "why": "Separate grains. The everyday default.",
   "flags": [],
   "swap": []
  },
  {
   "id": "brown-rice-short-grain",
   "name": "Brown rice, short grain",
   "aka": [],
   "category": "grains",
   "form": "dried",
   "roles": [
    "base"
   ],
   "cuisines": [
    "japanese",
    "korean"
   ],
   "cost": 1,
   "shelf": "pantry",
   "why": "Sticky and chewy. Better for bowls and stuffing.",
   "flags": [],
   "swap": []
  },
  {
   "id": "brown-basmati-rice",
   "name": "Brown basmati rice",
   "aka": [],
   "category": "grains",
   "form": "dried",
   "roles": [
    "base"
   ],
   "cuisines": [
    "indian",
    "persian"
   ],
   "cost": 2,
   "shelf": "pantry",
   "why": "Aromatic and long. The only rice for biryani-style dishes.",
   "flags": [],
   "swap": []
  },
  {
   "id": "black-rice",
   "name": "Black rice",
   "aka": [
    "forbidden rice"
   ],
   "category": "grains",
   "form": "dried",
   "roles": [
    "base"
   ],
   "cuisines": [
    "chinese",
    "thai"
   ],
   "cost": 2,
   "shelf": "pantry",
   "why": "Anthocyanin-rich, dramatic color, nutty.",
   "flags": [],
   "swap": []
  },
  {
   "id": "wild-rice",
   "name": "Wild rice",
   "aka": [],
   "category": "grains",
   "form": "dried",
   "roles": [
    "base"
   ],
   "cuisines": [
    "american"
   ],
   "cost": 3,
   "shelf": "pantry",
   "why": "Not rice at all. A grass seed. Chewy, smoky, expensive.",
   "flags": [],
   "swap": []
  },
  {
   "id": "quinoa",
   "name": "Quinoa",
   "aka": [],
   "category": "grains",
   "form": "dried",
   "roles": [
    "base",
    "protein"
   ],
   "cuisines": [
    "peruvian",
    "american"
   ],
   "cost": 2,
   "shelf": "pantry",
   "why": "Complete protein and cooks in 15 minutes. Rinse or it tastes soapy.",
   "flags": [],
   "swap": []
  },
  {
   "id": "millet",
   "name": "Millet",
   "aka": [
    "bajra"
   ],
   "category": "grains",
   "form": "dried",
   "roles": [
    "base"
   ],
   "cuisines": [
    "indian",
    "west-african",
    "chinese"
   ],
   "cost": 1,
   "shelf": "pantry",
   "why": "Fluffy like couscous. Massively underused and very cheap.",
   "flags": [],
   "swap": []
  },
  {
   "id": "sorghum",
   "name": "Sorghum",
   "aka": [
    "jowar"
   ],
   "category": "grains",
   "form": "dried",
   "roles": [
    "base"
   ],
   "cuisines": [
    "indian",
    "west-african",
    "american"
   ],
   "cost": 1,
   "shelf": "pantry",
   "why": "Chewy, pops like popcorn, gluten free.",
   "flags": [],
   "swap": []
  },
  {
   "id": "buckwheat-groats",
   "name": "Buckwheat groats",
   "aka": [
    "kasha"
   ],
   "category": "grains",
   "form": "dried",
   "roles": [
    "base"
   ],
   "cuisines": [
    "eastern-european",
    "japanese"
   ],
   "cost": 2,
   "shelf": "pantry",
   "why": "Not wheat. Toast them and they become kasha.",
   "flags": [],
   "swap": []
  },
  {
   "id": "hulled-barley",
   "name": "Hulled barley",
   "aka": [],
   "category": "grains",
   "form": "dried",
   "roles": [
    "base"
   ],
   "cuisines": [
    "european",
    "middle-eastern"
   ],
   "cost": 1,
   "shelf": "pantry",
   "why": "Not pearl barley, which is stripped. Chewy and filling.",
   "flags": [],
   "swap": []
  },
  {
   "id": "farro",
   "name": "Farro",
   "aka": [
    "emmer"
   ],
   "category": "grains",
   "form": "dried",
   "roles": [
    "base"
   ],
   "cuisines": [
    "italian",
    "mediterranean"
   ],
   "cost": 2,
   "shelf": "pantry",
   "why": "Nutty, toothsome wheat. The best grain for cold salads.",
   "flags": [],
   "swap": []
  },
  {
   "id": "freekeh",
   "name": "Freekeh",
   "aka": [],
   "category": "grains",
   "form": "dried",
   "roles": [
    "base"
   ],
   "cuisines": [
    "middle-eastern"
   ],
   "cost": 2,
   "shelf": "pantry",
   "why": "Green wheat, roasted. Smoky without smoke.",
   "flags": [],
   "swap": []
  },
  {
   "id": "bulgur",
   "name": "Bulgur",
   "aka": [],
   "category": "grains",
   "form": "dried",
   "roles": [
    "base"
   ],
   "cuisines": [
    "turkish",
    "middle-eastern"
   ],
   "cost": 1,
   "shelf": "pantry",
   "why": "Precooked cracked wheat. Just soak it. Fastest grain here.",
   "flags": [],
   "swap": []
  },
  {
   "id": "steel-cut-oats",
   "name": "Steel-cut oats",
   "aka": [
    "pinhead oats"
   ],
   "category": "grains",
   "form": "dried",
   "roles": [
    "base"
   ],
   "cuisines": [
    "british",
    "american"
   ],
   "cost": 1,
   "shelf": "pantry",
   "why": "Chewy, savory-capable. Cook them with onions and see.",
   "flags": [],
   "swap": []
  },
  {
   "id": "rolled-oats",
   "name": "Rolled oats",
   "aka": [],
   "category": "grains",
   "form": "dried",
   "roles": [
    "base",
    "thickener"
   ],
   "cuisines": [
    "american",
    "european"
   ],
   "cost": 1,
   "shelf": "pantry",
   "why": "Blend into flour, thicken soups, bind patties.",
   "flags": [],
   "swap": []
  },
  {
   "id": "amaranth",
   "name": "Amaranth",
   "aka": [],
   "category": "grains",
   "form": "dried",
   "roles": [
    "base"
   ],
   "cuisines": [
    "mexican",
    "peruvian",
    "indian"
   ],
   "cost": 2,
   "shelf": "pantry",
   "why": "Tiny, sticky, high in lysine. Porridge or popped.",
   "flags": [],
   "swap": []
  },
  {
   "id": "teff",
   "name": "Teff",
   "aka": [],
   "category": "grains",
   "form": "dried",
   "roles": [
    "base"
   ],
   "cuisines": [
    "ethiopian"
   ],
   "cost": 2,
   "shelf": "pantry",
   "why": "The smallest grain. The base of injera.",
   "flags": [],
   "swap": []
  },
  {
   "id": "polenta-coarse-cornmeal",
   "name": "Polenta / coarse cornmeal",
   "aka": [
    "grits"
   ],
   "category": "grains",
   "form": "dried",
   "roles": [
    "base"
   ],
   "cuisines": [
    "italian",
    "american"
   ],
   "cost": 1,
   "shelf": "pantry",
   "why": "Stone-ground, not instant. Creamy with no butter.",
   "flags": [],
   "swap": []
  },
  {
   "id": "popcorn-kernels",
   "name": "Popcorn kernels",
   "aka": [],
   "category": "grains",
   "form": "dried",
   "roles": [
    "snack"
   ],
   "cuisines": [
    "american"
   ],
   "cost": 1,
   "shelf": "pantry",
   "why": "A whole grain snack that costs almost nothing. Air-pop it.",
   "flags": [],
   "swap": []
  },
  {
   "id": "whole-wheat-couscous",
   "name": "Whole wheat couscous",
   "aka": [],
   "category": "grains",
   "form": "dried",
   "roles": [
    "base"
   ],
   "cuisines": [
    "north-african",
    "moroccan"
   ],
   "cost": 1,
   "shelf": "pantry",
   "why": "Steamed semolina, technically pasta. Ready in five minutes.",
   "flags": [],
   "swap": []
  },
  {
   "id": "yellow-onions",
   "name": "Yellow onions",
   "aka": [],
   "category": "aromatics",
   "form": "fresh",
   "roles": [
    "aromatic",
    "base"
   ],
   "cuisines": [
    "universal"
   ],
   "cost": 1,
   "shelf": "fresh",
   "why": "Sweat in water until they collapse. The foundation of everything.",
   "flags": [],
   "swap": []
  },
  {
   "id": "red-onions",
   "name": "Red onions",
   "aka": [],
   "category": "aromatics",
   "form": "fresh",
   "roles": [
    "aromatic",
    "garnish"
   ],
   "cuisines": [
    "mexican",
    "indian",
    "mediterranean"
   ],
   "cost": 1,
   "shelf": "fresh",
   "why": "Sharper raw. Quick-pickle them in vinegar for a free condiment.",
   "flags": [],
   "swap": []
  },
  {
   "id": "shallots",
   "name": "Shallots",
   "aka": [],
   "category": "aromatics",
   "form": "fresh",
   "roles": [
    "aromatic"
   ],
   "cuisines": [
    "french",
    "thai",
    "vietnamese"
   ],
   "cost": 2,
   "shelf": "fresh",
   "why": "Sweeter, more delicate. Worth it for anything French.",
   "flags": [],
   "swap": []
  },
  {
   "id": "garlic",
   "name": "Garlic",
   "aka": [],
   "category": "aromatics",
   "form": "fresh",
   "roles": [
    "aromatic"
   ],
   "cuisines": [
    "universal"
   ],
   "cost": 1,
   "shelf": "fresh",
   "why": "Buy heads, never jarred. Smashed, sliced, and minced are three ingredients.",
   "flags": [],
   "swap": []
  },
  {
   "id": "ginger",
   "name": "Ginger",
   "aka": [],
   "category": "aromatics",
   "form": "fresh",
   "roles": [
    "aromatic",
    "heat"
   ],
   "cuisines": [
    "indian",
    "chinese",
    "thai",
    "japanese"
   ],
   "cost": 1,
   "shelf": "fresh",
   "why": "Freeze it and grate from frozen. No peeling, no waste.",
   "flags": [],
   "swap": []
  },
  {
   "id": "scallions",
   "name": "Scallions",
   "aka": [
    "green onions"
   ],
   "category": "aromatics",
   "form": "fresh",
   "roles": [
    "aromatic",
    "garnish"
   ],
   "cuisines": [
    "chinese",
    "korean",
    "mexican"
   ],
   "cost": 1,
   "shelf": "fresh",
   "why": "Two ingredients in one. White parts cook, green parts garnish.",
   "flags": [],
   "swap": []
  },
  {
   "id": "leeks",
   "name": "Leeks",
   "aka": [],
   "category": "aromatics",
   "form": "fresh",
   "roles": [
    "aromatic"
   ],
   "cuisines": [
    "french",
    "british",
    "european"
   ],
   "cost": 2,
   "shelf": "fresh",
   "why": "Sweeter and gentler than onion. Wash the grit out of the layers.",
   "flags": [],
   "swap": []
  },
  {
   "id": "celery",
   "name": "Celery",
   "aka": [],
   "category": "aromatics",
   "form": "fresh",
   "roles": [
    "aromatic"
   ],
   "cuisines": [
    "french",
    "american"
   ],
   "cost": 1,
   "shelf": "fresh",
   "why": "One third of mirepoix and of the Cajun trinity. Never the star.",
   "flags": [],
   "swap": []
  },
  {
   "id": "carrots",
   "name": "Carrots",
   "aka": [],
   "category": "aromatics",
   "form": "fresh",
   "roles": [
    "aromatic",
    "base"
   ],
   "cuisines": [
    "universal"
   ],
   "cost": 1,
   "shelf": "fresh",
   "why": "The sweetness in a base that makes salt feel unnecessary.",
   "flags": [],
   "swap": []
  },
  {
   "id": "lemongrass",
   "name": "Lemongrass",
   "aka": [],
   "category": "aromatics",
   "form": "fresh, dried",
   "roles": [
    "aromatic"
   ],
   "cuisines": [
    "thai",
    "vietnamese",
    "indonesian"
   ],
   "cost": 2,
   "shelf": "fresh",
   "why": "Bruise the stalk, simmer, remove. Citrus without acid.",
   "flags": [],
   "swap": []
  },
  {
   "id": "galangal",
   "name": "Galangal",
   "aka": [],
   "category": "aromatics",
   "form": "fresh, frozen",
   "roles": [
    "aromatic"
   ],
   "cuisines": [
    "thai",
    "indonesian"
   ],
   "cost": 2,
   "shelf": "freezer",
   "why": "Pine and citrus. Not a ginger substitute despite the resemblance.",
   "flags": [],
   "swap": []
  },
  {
   "id": "curry-leaves",
   "name": "Curry leaves",
   "aka": [],
   "category": "aromatics",
   "form": "fresh, frozen",
   "roles": [
    "aromatic"
   ],
   "cuisines": [
    "indian",
    "sri-lankan"
   ],
   "cost": 2,
   "shelf": "freezer",
   "why": "Nothing else tastes like this. Freeze them, they keep for months.",
   "flags": [],
   "swap": []
  },
  {
   "id": "fennel-bulb",
   "name": "Fennel bulb",
   "aka": [],
   "category": "aromatics",
   "form": "fresh",
   "roles": [
    "aromatic",
    "vegetable"
   ],
   "cuisines": [
    "italian",
    "mediterranean"
   ],
   "cost": 2,
   "shelf": "fresh",
   "why": "Anise when raw, sweet and mellow when braised.",
   "flags": [],
   "swap": []
  },
  {
   "id": "canned-crushed-tomatoes",
   "name": "Canned crushed tomatoes",
   "aka": [],
   "category": "vegetables",
   "form": "canned",
   "roles": [
    "base",
    "acid"
   ],
   "cuisines": [
    "italian",
    "mexican",
    "indian"
   ],
   "cost": 1,
   "shelf": "pantry",
   "why": "Picked ripe, no oil, cheaper than fresh nine months a year.",
   "flags": [],
   "swap": []
  },
  {
   "id": "canned-whole-peeled-tomatoes",
   "name": "Canned whole peeled tomatoes",
   "aka": [],
   "category": "vegetables",
   "form": "canned",
   "roles": [
    "base",
    "acid"
   ],
   "cuisines": [
    "italian",
    "mediterranean"
   ],
   "cost": 1,
   "shelf": "pantry",
   "why": "Crush by hand. Better texture than pre-crushed.",
   "flags": [],
   "swap": []
  },
  {
   "id": "tomato-paste",
   "name": "Tomato paste",
   "aka": [],
   "category": "vegetables",
   "form": "canned",
   "roles": [
    "umami",
    "thickener"
   ],
   "cuisines": [
    "universal"
   ],
   "cost": 1,
   "shelf": "pantry",
   "why": "Toast it in the dry pan until brick red. Instant depth.",
   "flags": [],
   "swap": []
  },
  {
   "id": "fresh-tomatoes",
   "name": "Fresh tomatoes",
   "aka": [],
   "category": "vegetables",
   "form": "fresh",
   "roles": [
    "base",
    "acid"
   ],
   "cuisines": [
    "universal"
   ],
   "cost": 1,
   "shelf": "fresh",
   "why": "Only in season. Otherwise reach for the can, honestly.",
   "flags": [],
   "swap": []
  },
  {
   "id": "cremini-mushrooms",
   "name": "Cremini mushrooms",
   "aka": [
    "baby bella"
   ],
   "category": "vegetables",
   "form": "fresh",
   "roles": [
    "umami",
    "protein-feel"
   ],
   "cuisines": [
    "french",
    "italian",
    "american"
   ],
   "cost": 2,
   "shelf": "fresh",
   "why": "Brown, cheap, meaty. Dry-sear them, do not crowd the pan.",
   "flags": [],
   "swap": []
  },
  {
   "id": "shiitake-mushrooms",
   "name": "Shiitake mushrooms",
   "aka": [],
   "category": "vegetables",
   "form": "fresh, dried",
   "roles": [
    "umami"
   ],
   "cuisines": [
    "chinese",
    "japanese",
    "korean"
   ],
   "cost": 2,
   "shelf": "fresh",
   "why": "The most savory fungus you can buy. Stems make stock.",
   "flags": [],
   "swap": []
  },
  {
   "id": "dried-porcini",
   "name": "Dried porcini",
   "aka": [],
   "category": "vegetables",
   "form": "dried",
   "roles": [
    "umami"
   ],
   "cuisines": [
    "italian",
    "french"
   ],
   "cost": 3,
   "shelf": "pantry",
   "why": "Soak, then use the soaking liquid. That liquid is the point.",
   "flags": [],
   "swap": []
  },
  {
   "id": "cabbage-green",
   "name": "Cabbage, green",
   "aka": [],
   "category": "vegetables",
   "form": "fresh",
   "roles": [
    "base"
   ],
   "cuisines": [
    "universal"
   ],
   "cost": 1,
   "shelf": "fresh",
   "why": "The cheapest vegetable per pound and it keeps for a month.",
   "flags": [],
   "swap": []
  },
  {
   "id": "cabbage-red",
   "name": "Cabbage, red",
   "aka": [],
   "category": "vegetables",
   "form": "fresh",
   "roles": [
    "base"
   ],
   "cuisines": [
    "german",
    "eastern-european"
   ],
   "cost": 1,
   "shelf": "fresh",
   "why": "Same price, more anthocyanins. Braise with vinegar to keep the color.",
   "flags": [],
   "swap": []
  },
  {
   "id": "napa-cabbage",
   "name": "Napa cabbage",
   "aka": [],
   "category": "vegetables",
   "form": "fresh",
   "roles": [
    "base"
   ],
   "cuisines": [
    "korean",
    "chinese"
   ],
   "cost": 1,
   "shelf": "fresh",
   "why": "Tender, high water. The kimchi cabbage.",
   "flags": [],
   "swap": []
  },
  {
   "id": "broccoli",
   "name": "Broccoli",
   "aka": [],
   "category": "vegetables",
   "form": "fresh, frozen",
   "roles": [
    "vegetable"
   ],
   "cuisines": [
    "chinese",
    "italian",
    "american"
   ],
   "cost": 1,
   "shelf": "fresh",
   "why": "Do not throw out the stems. Peel and slice them.",
   "flags": [],
   "swap": []
  },
  {
   "id": "cauliflower",
   "name": "Cauliflower",
   "aka": [],
   "category": "vegetables",
   "form": "fresh, frozen",
   "roles": [
    "vegetable",
    "thickener"
   ],
   "cuisines": [
    "indian",
    "italian",
    "middle-eastern"
   ],
   "cost": 1,
   "shelf": "fresh",
   "why": "Roast it hard and dry. Blend it for creamy sauces with no cream.",
   "flags": [],
   "swap": []
  },
  {
   "id": "brussels-sprouts",
   "name": "Brussels sprouts",
   "aka": [],
   "category": "vegetables",
   "form": "fresh, frozen",
   "roles": [
    "vegetable"
   ],
   "cuisines": [
    "american",
    "european"
   ],
   "cost": 2,
   "shelf": "fresh",
   "why": "Halve, cut side down, high heat, no oil, do not move them.",
   "flags": [],
   "swap": []
  },
  {
   "id": "zucchini",
   "name": "Zucchini",
   "aka": [
    "courgette"
   ],
   "category": "vegetables",
   "form": "fresh",
   "roles": [
    "vegetable"
   ],
   "cuisines": [
    "italian",
    "middle-eastern"
   ],
   "cost": 1,
   "shelf": "fresh",
   "why": "Watery. Salt-free trick: high heat and a dry pan.",
   "flags": [],
   "swap": []
  },
  {
   "id": "eggplant",
   "name": "Eggplant",
   "aka": [
    "aubergine",
    "brinjal"
   ],
   "category": "vegetables",
   "form": "fresh",
   "roles": [
    "vegetable"
   ],
   "cuisines": [
    "indian",
    "turkish",
    "chinese",
    "italian"
   ],
   "cost": 2,
   "shelf": "fresh",
   "why": "A sponge for oil, which is why you roast or steam it instead.",
   "flags": [],
   "swap": []
  },
  {
   "id": "bell-peppers",
   "name": "Bell peppers",
   "aka": [
    "capsicum"
   ],
   "category": "vegetables",
   "form": "fresh, frozen",
   "roles": [
    "vegetable"
   ],
   "cuisines": [
    "universal"
   ],
   "cost": 2,
   "shelf": "fresh",
   "why": "Red are ripe green and cost more for good reason.",
   "flags": [],
   "swap": []
  },
  {
   "id": "sweet-potatoes",
   "name": "Sweet potatoes",
   "aka": [],
   "category": "vegetables",
   "form": "fresh",
   "roles": [
    "base"
   ],
   "cuisines": [
    "american",
    "west-african",
    "japanese"
   ],
   "cost": 1,
   "shelf": "fresh",
   "why": "Sweetness, fiber, beta carotene. The best cheap starch.",
   "flags": [],
   "swap": []
  },
  {
   "id": "potatoes",
   "name": "Potatoes",
   "aka": [],
   "category": "vegetables",
   "form": "fresh",
   "roles": [
    "base",
    "thickener"
   ],
   "cuisines": [
    "universal"
   ],
   "cost": 1,
   "shelf": "fresh",
   "why": "Boiled and blended, they make the creamiest oil-free sauces.",
   "flags": [],
   "swap": []
  },
  {
   "id": "butternut-squash",
   "name": "Butternut squash",
   "aka": [],
   "category": "vegetables",
   "form": "fresh, frozen",
   "roles": [
    "base"
   ],
   "cuisines": [
    "american",
    "italian",
    "indian"
   ],
   "cost": 2,
   "shelf": "fresh",
   "why": "Frozen cubes cost less than the peeling labor.",
   "flags": [],
   "swap": []
  },
  {
   "id": "kabocha-squash",
   "name": "Kabocha squash",
   "aka": [],
   "category": "vegetables",
   "form": "fresh",
   "roles": [
    "base"
   ],
   "cuisines": [
    "japanese",
    "korean"
   ],
   "cost": 2,
   "shelf": "fresh",
   "why": "Drier and sweeter than butternut. Skin is edible.",
   "flags": [],
   "swap": []
  },
  {
   "id": "beets",
   "name": "Beets",
   "aka": [],
   "category": "vegetables",
   "form": "fresh",
   "roles": [
    "vegetable"
   ],
   "cuisines": [
    "eastern-european",
    "middle-eastern"
   ],
   "cost": 1,
   "shelf": "fresh",
   "why": "Roast whole in foil. The greens are better than the root.",
   "flags": [],
   "swap": []
  },
  {
   "id": "carrots-cooking",
   "name": "Carrots (cooking)",
   "aka": [],
   "category": "vegetables",
   "form": "fresh",
   "roles": [
    "vegetable"
   ],
   "cuisines": [
    "universal"
   ],
   "cost": 1,
   "shelf": "fresh",
   "why": "See aromatics. Also a vegetable in their own right.",
   "flags": [],
   "swap": []
  },
  {
   "id": "daikon-radish",
   "name": "Daikon radish",
   "aka": [],
   "category": "vegetables",
   "form": "fresh",
   "roles": [
    "vegetable"
   ],
   "cuisines": [
    "japanese",
    "korean",
    "chinese"
   ],
   "cost": 1,
   "shelf": "fresh",
   "why": "Simmers into translucent sweetness. Grates raw into a sharp salad.",
   "flags": [],
   "swap": []
  },
  {
   "id": "turnips",
   "name": "Turnips",
   "aka": [],
   "category": "vegetables",
   "form": "fresh",
   "roles": [
    "vegetable"
   ],
   "cuisines": [
    "european",
    "japanese"
   ],
   "cost": 1,
   "shelf": "fresh",
   "why": "Peppery, cheap, forgotten. Roast them like potatoes.",
   "flags": [],
   "swap": []
  },
  {
   "id": "green-beans",
   "name": "Green beans",
   "aka": [],
   "category": "vegetables",
   "form": "fresh, frozen",
   "roles": [
    "vegetable"
   ],
   "cuisines": [
    "universal"
   ],
   "cost": 1,
   "shelf": "freezer",
   "why": "Frozen are fine. Fresh are better only when local.",
   "flags": [],
   "swap": []
  },
  {
   "id": "frozen-peas",
   "name": "Frozen peas",
   "aka": [],
   "category": "vegetables",
   "form": "frozen",
   "roles": [
    "vegetable",
    "protein"
   ],
   "cuisines": [
    "indian",
    "british",
    "french"
   ],
   "cost": 1,
   "shelf": "freezer",
   "why": "One of the few frozen vegetables that beats fresh outright.",
   "flags": [],
   "swap": []
  },
  {
   "id": "frozen-corn",
   "name": "Frozen corn",
   "aka": [],
   "category": "vegetables",
   "form": "frozen",
   "roles": [
    "vegetable"
   ],
   "cuisines": [
    "mexican",
    "american"
   ],
   "cost": 1,
   "shelf": "freezer",
   "why": "Sweet, cheap, and picked at peak. Char it in a dry pan.",
   "flags": [],
   "swap": []
  },
  {
   "id": "okra",
   "name": "Okra",
   "aka": [
    "bhindi"
   ],
   "category": "vegetables",
   "form": "fresh, frozen",
   "roles": [
    "vegetable",
    "thickener"
   ],
   "cuisines": [
    "indian",
    "west-african",
    "american"
   ],
   "cost": 2,
   "shelf": "fresh",
   "why": "High heat or acid stops the slime. Both, ideally.",
   "flags": [],
   "swap": []
  },
  {
   "id": "cucumber",
   "name": "Cucumber",
   "aka": [],
   "category": "vegetables",
   "form": "fresh",
   "roles": [
    "vegetable"
   ],
   "cuisines": [
    "chinese",
    "greek",
    "middle-eastern"
   ],
   "cost": 1,
   "shelf": "fresh",
   "why": "Salt-free crunch. Smash it, do not slice it, for Chinese salads.",
   "flags": [],
   "swap": []
  },
  {
   "id": "bok-choy",
   "name": "Bok choy",
   "aka": [],
   "category": "vegetables",
   "form": "fresh",
   "roles": [
    "vegetable",
    "green"
   ],
   "cuisines": [
    "chinese"
   ],
   "cost": 1,
   "shelf": "fresh",
   "why": "Stems and leaves cook at different rates. Add them separately.",
   "flags": [],
   "swap": []
  },
  {
   "id": "celery-root",
   "name": "Celery root",
   "aka": [
    "celeriac"
   ],
   "category": "vegetables",
   "form": "fresh",
   "roles": [
    "base",
    "thickener"
   ],
   "cuisines": [
    "french",
    "german"
   ],
   "cost": 2,
   "shelf": "fresh",
   "why": "Ugly, cheap, tastes like celery crossed with potato.",
   "flags": [],
   "swap": []
  },
  {
   "id": "kale",
   "name": "Kale",
   "aka": [],
   "category": "greens",
   "form": "fresh",
   "roles": [
    "green"
   ],
   "cuisines": [
    "american",
    "italian",
    "portuguese"
   ],
   "cost": 1,
   "shelf": "fresh",
   "why": "Massage it raw with lemon and it stops being tough.",
   "flags": [],
   "swap": []
  },
  {
   "id": "collard-greens",
   "name": "Collard greens",
   "aka": [],
   "category": "greens",
   "form": "fresh",
   "roles": [
    "green"
   ],
   "cuisines": [
    "american",
    "brazilian",
    "east-african"
   ],
   "cost": 1,
   "shelf": "fresh",
   "why": "Sturdy enough to braise for an hour or use as a wrap.",
   "flags": [],
   "swap": []
  },
  {
   "id": "swiss-chard",
   "name": "Swiss chard",
   "aka": [],
   "category": "greens",
   "form": "fresh",
   "roles": [
    "green"
   ],
   "cuisines": [
    "italian",
    "french",
    "middle-eastern"
   ],
   "cost": 1,
   "shelf": "fresh",
   "why": "Two vegetables. Chop and cook the stems first.",
   "flags": [],
   "swap": []
  },
  {
   "id": "spinach",
   "name": "Spinach",
   "aka": [],
   "category": "greens",
   "form": "fresh, frozen",
   "roles": [
    "green"
   ],
   "cuisines": [
    "universal"
   ],
   "cost": 1,
   "shelf": "fresh",
   "why": "Wilts to nothing. Buy triple what looks reasonable.",
   "flags": [],
   "swap": []
  },
  {
   "id": "mustard-greens",
   "name": "Mustard greens",
   "aka": [
    "sarson"
   ],
   "category": "greens",
   "form": "fresh",
   "roles": [
    "green"
   ],
   "cuisines": [
    "indian",
    "chinese",
    "american"
   ],
   "cost": 1,
   "shelf": "fresh",
   "why": "Sharp and horseradish-like. Cuts through starchy dishes.",
   "flags": [],
   "swap": []
  },
  {
   "id": "arugula",
   "name": "Arugula",
   "aka": [
    "rocket"
   ],
   "category": "greens",
   "form": "fresh",
   "roles": [
    "green",
    "garnish"
   ],
   "cuisines": [
    "italian"
   ],
   "cost": 2,
   "shelf": "fresh",
   "why": "Peppery. A finishing green, not a cooking one.",
   "flags": [],
   "swap": []
  },
  {
   "id": "watercress",
   "name": "Watercress",
   "aka": [],
   "category": "greens",
   "form": "fresh",
   "roles": [
    "green"
   ],
   "cuisines": [
    "chinese",
    "british"
   ],
   "cost": 2,
   "shelf": "fresh",
   "why": "The single most nutrient-dense food per calorie measured.",
   "flags": [],
   "swap": []
  },
  {
   "id": "romaine",
   "name": "Romaine",
   "aka": [],
   "category": "greens",
   "form": "fresh",
   "roles": [
    "green"
   ],
   "cuisines": [
    "mediterranean",
    "american"
   ],
   "cost": 1,
   "shelf": "fresh",
   "why": "Grill it. Nobody expects that and it works.",
   "flags": [],
   "swap": []
  },
  {
   "id": "cabbage-sprouts-microgreens",
   "name": "Cabbage sprouts / microgreens",
   "aka": [],
   "category": "greens",
   "form": "fresh",
   "roles": [
    "green",
    "garnish"
   ],
   "cuisines": [
    "universal"
   ],
   "cost": 1,
   "shelf": "fresh",
   "why": "Grow them on a windowsill from the mung beans you already own.",
   "flags": [],
   "swap": []
  },
  {
   "id": "lemons",
   "name": "Lemons",
   "aka": [],
   "category": "fruit",
   "form": "fresh",
   "roles": [
    "acid",
    "aromatic"
   ],
   "cuisines": [
    "universal"
   ],
   "cost": 1,
   "shelf": "fresh",
   "why": "Zest before you juice. The zest is where the aroma lives.",
   "flags": [],
   "swap": []
  },
  {
   "id": "limes",
   "name": "Limes",
   "aka": [],
   "category": "fruit",
   "form": "fresh",
   "roles": [
    "acid"
   ],
   "cuisines": [
    "mexican",
    "thai",
    "vietnamese",
    "indian"
   ],
   "cost": 1,
   "shelf": "fresh",
   "why": "Not interchangeable with lemon. Sharper, more floral.",
   "flags": [],
   "swap": []
  },
  {
   "id": "oranges",
   "name": "Oranges",
   "aka": [],
   "category": "fruit",
   "form": "fresh",
   "roles": [
    "acid",
    "sweet"
   ],
   "cuisines": [
    "mediterranean",
    "chinese"
   ],
   "cost": 1,
   "shelf": "fresh",
   "why": "The peel does more work than the juice in most savory cooking.",
   "flags": [],
   "swap": []
  },
  {
   "id": "medjool-dates",
   "name": "Medjool dates",
   "aka": [],
   "category": "fruit",
   "form": "dried",
   "roles": [
    "sweet",
    "thickener"
   ],
   "cuisines": [
    "middle-eastern",
    "north-african"
   ],
   "cost": 2,
   "shelf": "pantry",
   "why": "The sweetener. Blend with water into a paste and use it everywhere.",
   "flags": [
    "natural-sugar"
   ],
   "swap": []
  },
  {
   "id": "deglet-noor-dates",
   "name": "Deglet noor dates",
   "aka": [],
   "category": "fruit",
   "form": "dried",
   "roles": [
    "sweet"
   ],
   "cuisines": [
    "middle-eastern"
   ],
   "cost": 1,
   "shelf": "pantry",
   "why": "Drier, cheaper, less caramel. Fine for blending.",
   "flags": [
    "natural-sugar"
   ],
   "swap": []
  },
  {
   "id": "raisins",
   "name": "Raisins",
   "aka": [
    "sultanas"
   ],
   "category": "fruit",
   "form": "dried",
   "roles": [
    "sweet"
   ],
   "cuisines": [
    "indian",
    "moroccan",
    "european"
   ],
   "cost": 1,
   "shelf": "pantry",
   "why": "Sweetness that survives cooking. Plump them in hot water first.",
   "flags": [
    "natural-sugar"
   ],
   "swap": []
  },
  {
   "id": "dried-apricots",
   "name": "Dried apricots",
   "aka": [],
   "category": "fruit",
   "form": "dried",
   "roles": [
    "sweet",
    "acid"
   ],
   "cuisines": [
    "north-african",
    "persian"
   ],
   "cost": 2,
   "shelf": "pantry",
   "why": "Tart and sweet at once. Essential for tagines.",
   "flags": [
    "natural-sugar"
   ],
   "swap": []
  },
  {
   "id": "dried-figs",
   "name": "Dried figs",
   "aka": [],
   "category": "fruit",
   "form": "dried",
   "roles": [
    "sweet"
   ],
   "cuisines": [
    "mediterranean",
    "middle-eastern"
   ],
   "cost": 2,
   "shelf": "pantry",
   "why": "Jammy. Simmer into sauces where you would have used sugar.",
   "flags": [
    "natural-sugar"
   ],
   "swap": []
  },
  {
   "id": "prunes",
   "name": "Prunes",
   "aka": [
    "dried plums"
   ],
   "category": "fruit",
   "form": "dried",
   "roles": [
    "sweet"
   ],
   "cuisines": [
    "french",
    "north-african"
   ],
   "cost": 1,
   "shelf": "pantry",
   "why": "Deep, almost savory sweetness. Excellent in braises.",
   "flags": [
    "natural-sugar"
   ],
   "swap": []
  },
  {
   "id": "tamarind-paste",
   "name": "Tamarind paste",
   "aka": [
    "imli"
   ],
   "category": "fruit",
   "form": "paste",
   "roles": [
    "acid"
   ],
   "cuisines": [
    "indian",
    "thai",
    "mexican"
   ],
   "cost": 1,
   "shelf": "pantry",
   "why": "Sour and fruity at once. Check the label for added sugar.",
   "flags": [
    "check-label"
   ],
   "swap": []
  },
  {
   "id": "frozen-mixed-berries",
   "name": "Frozen mixed berries",
   "aka": [],
   "category": "fruit",
   "form": "frozen",
   "roles": [
    "sweet"
   ],
   "cuisines": [
    "universal"
   ],
   "cost": 2,
   "shelf": "freezer",
   "why": "Cheaper, riper, and available in January.",
   "flags": [],
   "swap": []
  },
  {
   "id": "frozen-mango",
   "name": "Frozen mango",
   "aka": [],
   "category": "fruit",
   "form": "frozen",
   "roles": [
    "sweet",
    "thickener"
   ],
   "cuisines": [
    "indian",
    "thai",
    "mexican"
   ],
   "cost": 2,
   "shelf": "freezer",
   "why": "Blends into a cream texture with nothing added.",
   "flags": [],
   "swap": []
  },
  {
   "id": "bananas",
   "name": "Bananas",
   "aka": [],
   "category": "fruit",
   "form": "fresh",
   "roles": [
    "sweet",
    "thickener"
   ],
   "cuisines": [
    "universal"
   ],
   "cost": 1,
   "shelf": "fresh",
   "why": "Freeze the overripe ones. They are the ice cream base.",
   "flags": [],
   "swap": []
  },
  {
   "id": "apples",
   "name": "Apples",
   "aka": [],
   "category": "fruit",
   "form": "fresh",
   "roles": [
    "sweet",
    "acid"
   ],
   "cuisines": [
    "european",
    "american"
   ],
   "cost": 1,
   "shelf": "fresh",
   "why": "Grate one into a slaw or a braise. Sweetness with acid.",
   "flags": [],
   "swap": []
  },
  {
   "id": "avocado",
   "name": "Avocado",
   "aka": [],
   "category": "fruit",
   "form": "fresh",
   "roles": [
    "fat",
    "thickener"
   ],
   "cuisines": [
    "mexican"
   ],
   "cost": 2,
   "shelf": "fresh",
   "why": "Whole-food fat. A quarter goes further than you think.",
   "flags": [
    "whole-food-fat"
   ],
   "swap": []
  },
  {
   "id": "pomegranate",
   "name": "Pomegranate",
   "aka": [
    "anar"
   ],
   "category": "fruit",
   "form": "fresh",
   "roles": [
    "acid",
    "garnish"
   ],
   "cuisines": [
    "persian",
    "middle-eastern"
   ],
   "cost": 2,
   "shelf": "fresh",
   "why": "The seeds are the only garnish that adds acid and crunch together.",
   "flags": [],
   "swap": []
  },
  {
   "id": "raw-cashews",
   "name": "Raw cashews",
   "aka": [],
   "category": "nuts-seeds",
   "form": "raw",
   "roles": [
    "fat",
    "thickener"
   ],
   "cuisines": [
    "indian",
    "thai",
    "american"
   ],
   "cost": 3,
   "shelf": "pantry",
   "why": "Soak and blend into cream. The single most useful dairy replacement.",
   "flags": [
    "whole-food-fat"
   ],
   "swap": []
  },
  {
   "id": "walnuts",
   "name": "Walnuts",
   "aka": [],
   "category": "nuts-seeds",
   "form": "raw",
   "roles": [
    "fat"
   ],
   "cuisines": [
    "mediterranean",
    "middle-eastern"
   ],
   "cost": 3,
   "shelf": "pantry",
   "why": "The best omega-3 ratio of any nut. Toast them dry.",
   "flags": [
    "whole-food-fat"
   ],
   "swap": []
  },
  {
   "id": "almonds",
   "name": "Almonds",
   "aka": [],
   "category": "nuts-seeds",
   "form": "raw",
   "roles": [
    "fat",
    "thickener"
   ],
   "cuisines": [
    "indian",
    "spanish",
    "moroccan"
   ],
   "cost": 3,
   "shelf": "pantry",
   "why": "Blanched and blended, they thicken curries the way cream does.",
   "flags": [
    "whole-food-fat"
   ],
   "swap": []
  },
  {
   "id": "sunflower-seeds",
   "name": "Sunflower seeds",
   "aka": [],
   "category": "nuts-seeds",
   "form": "raw",
   "roles": [
    "fat",
    "thickener"
   ],
   "cuisines": [
    "universal"
   ],
   "cost": 1,
   "shelf": "pantry",
   "why": "The cheap cashew. Blends nearly as smooth for a third the price.",
   "flags": [
    "whole-food-fat"
   ],
   "swap": []
  },
  {
   "id": "pumpkin-seeds",
   "name": "Pumpkin seeds",
   "aka": [
    "pepitas"
   ],
   "category": "nuts-seeds",
   "form": "raw",
   "roles": [
    "fat",
    "thickener"
   ],
   "cuisines": [
    "mexican"
   ],
   "cost": 2,
   "shelf": "pantry",
   "why": "Toast and blend into pepita sauce. The base of Mexican pipi\u00e1n.",
   "flags": [
    "whole-food-fat"
   ],
   "swap": []
  },
  {
   "id": "sesame-seeds",
   "name": "Sesame seeds",
   "aka": [
    "til"
   ],
   "category": "nuts-seeds",
   "form": "raw",
   "roles": [
    "fat",
    "garnish"
   ],
   "cuisines": [
    "middle-eastern",
    "japanese",
    "korean",
    "indian"
   ],
   "cost": 1,
   "shelf": "pantry",
   "why": "Toast whole, grind for tahini, or scatter as-is.",
   "flags": [
    "whole-food-fat"
   ],
   "swap": []
  },
  {
   "id": "tahini",
   "name": "Tahini",
   "aka": [],
   "category": "nuts-seeds",
   "form": "paste",
   "roles": [
    "fat",
    "thickener"
   ],
   "cuisines": [
    "middle-eastern"
   ],
   "cost": 2,
   "shelf": "pantry",
   "why": "Ground sesame, nothing else. Read the label. Emulsifies with water.",
   "flags": [
    "whole-food-fat",
    "check-label"
   ],
   "swap": []
  },
  {
   "id": "ground-flaxseed",
   "name": "Ground flaxseed",
   "aka": [
    "linseed"
   ],
   "category": "nuts-seeds",
   "form": "ground",
   "roles": [
    "fat",
    "binder"
   ],
   "cuisines": [
    "universal"
   ],
   "cost": 1,
   "shelf": "fridge",
   "why": "Whole seeds pass through you. Grind or buy ground, store cold.",
   "flags": [
    "whole-food-fat"
   ],
   "swap": []
  },
  {
   "id": "chia-seeds",
   "name": "Chia seeds",
   "aka": [],
   "category": "nuts-seeds",
   "form": "raw",
   "roles": [
    "binder",
    "thickener"
   ],
   "cuisines": [
    "mexican",
    "american"
   ],
   "cost": 2,
   "shelf": "pantry",
   "why": "Absorb ten times their weight. Instant pudding, instant thickener.",
   "flags": [],
   "swap": []
  },
  {
   "id": "hemp-hearts",
   "name": "Hemp hearts",
   "aka": [],
   "category": "nuts-seeds",
   "form": "raw",
   "roles": [
    "protein",
    "fat"
   ],
   "cuisines": [
    "american"
   ],
   "cost": 3,
   "shelf": "fridge",
   "why": "Complete protein, no soaking, mild. Expensive per pound.",
   "flags": [
    "whole-food-fat"
   ],
   "swap": []
  },
  {
   "id": "peanut-butter-unsweetened",
   "name": "Peanut butter, unsweetened",
   "aka": [],
   "category": "nuts-seeds",
   "form": "paste",
   "roles": [
    "fat",
    "thickener"
   ],
   "cuisines": [
    "thai",
    "west-african",
    "indonesian"
   ],
   "cost": 1,
   "shelf": "pantry",
   "why": "Peanuts and nothing else. The base of West African and Thai sauces.",
   "flags": [
    "whole-food-fat",
    "check-label"
   ],
   "swap": []
  },
  {
   "id": "cilantro",
   "name": "Cilantro",
   "aka": [
    "coriander leaf",
    "dhania"
   ],
   "category": "herbs-fresh",
   "form": "fresh",
   "roles": [
    "herb"
   ],
   "cuisines": [
    "mexican",
    "indian",
    "thai",
    "chinese"
   ],
   "cost": 1,
   "shelf": "fresh",
   "why": "Stems have more flavor than leaves. Use them in the base.",
   "flags": [],
   "swap": []
  },
  {
   "id": "flat-leaf-parsley",
   "name": "Flat-leaf parsley",
   "aka": [
    "Italian parsley"
   ],
   "category": "herbs-fresh",
   "form": "fresh",
   "roles": [
    "herb"
   ],
   "cuisines": [
    "middle-eastern",
    "italian",
    "french"
   ],
   "cost": 1,
   "shelf": "fresh",
   "why": "Not a garnish. A vegetable. Use it by the cup.",
   "flags": [],
   "swap": []
  },
  {
   "id": "basil",
   "name": "Basil",
   "aka": [],
   "category": "herbs-fresh",
   "form": "fresh",
   "roles": [
    "herb"
   ],
   "cuisines": [
    "italian",
    "mediterranean"
   ],
   "cost": 2,
   "shelf": "fresh",
   "why": "Add at the end. Heat destroys it in under a minute.",
   "flags": [],
   "swap": []
  },
  {
   "id": "thai-basil",
   "name": "Thai basil",
   "aka": [
    "horapha"
   ],
   "category": "herbs-fresh",
   "form": "fresh",
   "roles": [
    "herb"
   ],
   "cuisines": [
    "thai",
    "vietnamese"
   ],
   "cost": 2,
   "shelf": "fresh",
   "why": "Anise, not sweet basil. Survives heat where the Italian kind does not.",
   "flags": [],
   "swap": []
  },
  {
   "id": "mint",
   "name": "Mint",
   "aka": [
    "pudina"
   ],
   "category": "herbs-fresh",
   "form": "fresh",
   "roles": [
    "herb"
   ],
   "cuisines": [
    "indian",
    "middle-eastern",
    "vietnamese"
   ],
   "cost": 1,
   "shelf": "fresh",
   "why": "Cuts richness and heat simultaneously. Grows like a weed.",
   "flags": [],
   "swap": []
  },
  {
   "id": "dill",
   "name": "Dill",
   "aka": [],
   "category": "herbs-fresh",
   "form": "fresh",
   "roles": [
    "herb"
   ],
   "cuisines": [
    "eastern-european",
    "persian",
    "scandinavian"
   ],
   "cost": 1,
   "shelf": "fresh",
   "why": "Grassy and sharp. Nothing substitutes for it.",
   "flags": [],
   "swap": []
  },
  {
   "id": "rosemary",
   "name": "Rosemary",
   "aka": [],
   "category": "herbs-fresh",
   "form": "fresh",
   "roles": [
    "herb"
   ],
   "cuisines": [
    "italian",
    "french"
   ],
   "cost": 1,
   "shelf": "fresh",
   "why": "Woody and dominant. One sprig, not three.",
   "flags": [],
   "swap": []
  },
  {
   "id": "thyme",
   "name": "Thyme",
   "aka": [],
   "category": "herbs-fresh",
   "form": "fresh",
   "roles": [
    "herb"
   ],
   "cuisines": [
    "french",
    "caribbean",
    "middle-eastern"
   ],
   "cost": 1,
   "shelf": "fresh",
   "why": "Add early. It needs time to give anything up.",
   "flags": [],
   "swap": []
  },
  {
   "id": "sage",
   "name": "Sage",
   "aka": [],
   "category": "herbs-fresh",
   "form": "fresh",
   "roles": [
    "herb"
   ],
   "cuisines": [
    "italian",
    "american"
   ],
   "cost": 1,
   "shelf": "fresh",
   "why": "Fried leaves are the classic. Dry-toast them instead.",
   "flags": [],
   "swap": []
  },
  {
   "id": "oregano-fresh",
   "name": "Oregano, fresh",
   "aka": [],
   "category": "herbs-fresh",
   "form": "fresh",
   "roles": [
    "herb"
   ],
   "cuisines": [
    "greek",
    "mexican",
    "italian"
   ],
   "cost": 1,
   "shelf": "fresh",
   "why": "Milder than dried, oddly. The dried version is stronger here.",
   "flags": [],
   "swap": []
  },
  {
   "id": "tarragon",
   "name": "Tarragon",
   "aka": [],
   "category": "herbs-fresh",
   "form": "fresh",
   "roles": [
    "herb"
   ],
   "cuisines": [
    "french"
   ],
   "cost": 2,
   "shelf": "fresh",
   "why": "Licorice. The one herb that makes French food taste French.",
   "flags": [],
   "swap": []
  },
  {
   "id": "chives",
   "name": "Chives",
   "aka": [],
   "category": "herbs-fresh",
   "form": "fresh",
   "roles": [
    "herb",
    "garnish"
   ],
   "cuisines": [
    "french",
    "chinese"
   ],
   "cost": 1,
   "shelf": "fresh",
   "why": "Onion without the cooking. Snip, never chop.",
   "flags": [],
   "swap": []
  },
  {
   "id": "shiso",
   "name": "Shiso",
   "aka": [
    "perilla"
   ],
   "category": "herbs-fresh",
   "form": "fresh",
   "roles": [
    "herb"
   ],
   "cuisines": [
    "japanese",
    "korean"
   ],
   "cost": 2,
   "shelf": "fresh",
   "why": "Mint, basil, and anise at once. Nothing else is close.",
   "flags": [],
   "swap": []
  },
  {
   "id": "epazote",
   "name": "Epazote",
   "aka": [],
   "category": "herbs-fresh",
   "form": "fresh, dried",
   "roles": [
    "herb"
   ],
   "cuisines": [
    "mexican"
   ],
   "cost": 2,
   "shelf": "fresh",
   "why": "Cooked with beans in Mexico for reasons your digestion will appreciate.",
   "flags": [],
   "swap": []
  },
  {
   "id": "vietnamese-coriander",
   "name": "Vietnamese coriander",
   "aka": [
    "rau ram"
   ],
   "category": "herbs-fresh",
   "form": "fresh",
   "roles": [
    "herb"
   ],
   "cuisines": [
    "vietnamese"
   ],
   "cost": 2,
   "shelf": "fresh",
   "why": "Peppery cilantro relative. Holds up in hot broth.",
   "flags": [],
   "swap": []
  },
  {
   "id": "dried-oregano",
   "name": "Dried oregano",
   "aka": [],
   "category": "herbs-dried",
   "form": "dried",
   "roles": [
    "herb"
   ],
   "cuisines": [
    "greek",
    "mexican",
    "italian"
   ],
   "cost": 1,
   "shelf": "pantry",
   "why": "Mexican and Mediterranean oregano are different plants. Buy both.",
   "flags": [],
   "swap": []
  },
  {
   "id": "dried-thyme",
   "name": "Dried thyme",
   "aka": [],
   "category": "herbs-dried",
   "form": "dried",
   "roles": [
    "herb"
   ],
   "cuisines": [
    "french",
    "caribbean"
   ],
   "cost": 1,
   "shelf": "pantry",
   "why": "Add with the aromatics, not at the end.",
   "flags": [],
   "swap": []
  },
  {
   "id": "dried-rosemary",
   "name": "Dried rosemary",
   "aka": [],
   "category": "herbs-dried",
   "form": "dried",
   "roles": [
    "herb"
   ],
   "cuisines": [
    "italian",
    "french"
   ],
   "cost": 1,
   "shelf": "pantry",
   "why": "Grind it or it stays sharp and woody in the mouth.",
   "flags": [],
   "swap": []
  },
  {
   "id": "bay-leaves",
   "name": "Bay leaves",
   "aka": [
    "tej patta"
   ],
   "category": "herbs-dried",
   "form": "dried",
   "roles": [
    "herb"
   ],
   "cuisines": [
    "universal"
   ],
   "cost": 1,
   "shelf": "pantry",
   "why": "You notice them only when they are missing. Always two, never one.",
   "flags": [],
   "swap": []
  },
  {
   "id": "dried-marjoram",
   "name": "Dried marjoram",
   "aka": [],
   "category": "herbs-dried",
   "form": "dried",
   "roles": [
    "herb"
   ],
   "cuisines": [
    "german",
    "eastern-european",
    "italian"
   ],
   "cost": 1,
   "shelf": "pantry",
   "why": "Sweeter, gentler oregano. Underrated in bean dishes.",
   "flags": [],
   "swap": []
  },
  {
   "id": "dried-savory",
   "name": "Dried savory",
   "aka": [],
   "category": "herbs-dried",
   "form": "dried",
   "roles": [
    "herb"
   ],
   "cuisines": [
    "french",
    "german",
    "eastern-european"
   ],
   "cost": 2,
   "shelf": "pantry",
   "why": "The bean herb. Peppery and specific.",
   "flags": [],
   "swap": []
  },
  {
   "id": "kasoori-methi",
   "name": "Kasoori methi",
   "aka": [
    "dried fenugreek leaf"
   ],
   "category": "herbs-dried",
   "form": "dried",
   "roles": [
    "herb"
   ],
   "cuisines": [
    "indian"
   ],
   "cost": 1,
   "shelf": "pantry",
   "why": "Dried fenugreek leaves. Crush between palms over finished curries.",
   "flags": [],
   "swap": []
  },
  {
   "id": "dried-dill",
   "name": "Dried dill",
   "aka": [],
   "category": "herbs-dried",
   "form": "dried",
   "roles": [
    "herb"
   ],
   "cuisines": [
    "persian",
    "eastern-european"
   ],
   "cost": 1,
   "shelf": "pantry",
   "why": "Keeps more of itself than most dried herbs.",
   "flags": [],
   "swap": []
  },
  {
   "id": "cumin-seed",
   "name": "Cumin seed",
   "aka": [
    "jeera"
   ],
   "category": "spices",
   "form": "whole, ground",
   "roles": [
    "spice"
   ],
   "cuisines": [
    "indian",
    "mexican",
    "middle-eastern",
    "north-african"
   ],
   "cost": 1,
   "shelf": "pantry",
   "why": "Toast whole in a dry pan until fragrant, then grind. Non-negotiable.",
   "flags": [],
   "swap": []
  },
  {
   "id": "coriander-seed",
   "name": "Coriander seed",
   "aka": [
    "dhania"
   ],
   "category": "spices",
   "form": "whole, ground",
   "roles": [
    "spice"
   ],
   "cuisines": [
    "indian",
    "middle-eastern",
    "thai"
   ],
   "cost": 1,
   "shelf": "pantry",
   "why": "Citrusy and floral. The other half of nearly every masala.",
   "flags": [],
   "swap": []
  },
  {
   "id": "turmeric",
   "name": "Turmeric",
   "aka": [
    "haldi"
   ],
   "category": "spices",
   "form": "ground, fresh",
   "roles": [
    "spice"
   ],
   "cuisines": [
    "indian",
    "thai",
    "persian"
   ],
   "cost": 1,
   "shelf": "pantry",
   "why": "Color and earth. Needs black pepper and fat for absorption.",
   "flags": [],
   "swap": []
  },
  {
   "id": "black-peppercorns",
   "name": "Black peppercorns",
   "aka": [
    "kali mirch"
   ],
   "category": "spices",
   "form": "whole",
   "roles": [
    "spice",
    "heat"
   ],
   "cuisines": [
    "universal"
   ],
   "cost": 1,
   "shelf": "pantry",
   "why": "Grind fresh or do not bother. Piperine boosts turmeric uptake.",
   "flags": [],
   "swap": []
  },
  {
   "id": "brown-mustard-seed",
   "name": "Brown mustard seed",
   "aka": [
    "rai"
   ],
   "category": "spices",
   "form": "whole",
   "roles": [
    "spice"
   ],
   "cuisines": [
    "indian"
   ],
   "cost": 1,
   "shelf": "pantry",
   "why": "Pop them in a dry pan until they jump. That is the tarka.",
   "flags": [],
   "swap": []
  },
  {
   "id": "yellow-mustard-seed",
   "name": "Yellow mustard seed",
   "aka": [],
   "category": "spices",
   "form": "whole",
   "roles": [
    "spice"
   ],
   "cuisines": [
    "european",
    "american"
   ],
   "cost": 1,
   "shelf": "pantry",
   "why": "Milder. For pickling and for European cooking.",
   "flags": [],
   "swap": []
  },
  {
   "id": "fennel-seed",
   "name": "Fennel seed",
   "aka": [
    "saunf"
   ],
   "category": "spices",
   "form": "whole",
   "roles": [
    "spice"
   ],
   "cuisines": [
    "indian",
    "italian",
    "chinese"
   ],
   "cost": 1,
   "shelf": "pantry",
   "why": "Sweet anise. Balances bitter greens and heavy legumes.",
   "flags": [],
   "swap": []
  },
  {
   "id": "fenugreek-seed",
   "name": "Fenugreek seed",
   "aka": [
    "methi"
   ],
   "category": "spices",
   "form": "whole",
   "roles": [
    "spice"
   ],
   "cuisines": [
    "indian",
    "ethiopian",
    "middle-eastern"
   ],
   "cost": 1,
   "shelf": "pantry",
   "why": "Maple and bitterness. Use less than you think. Much less.",
   "flags": [],
   "swap": []
  },
  {
   "id": "green-cardamom",
   "name": "Green cardamom",
   "aka": [
    "elaichi"
   ],
   "category": "spices",
   "form": "whole",
   "roles": [
    "spice"
   ],
   "cuisines": [
    "indian",
    "persian",
    "scandinavian"
   ],
   "cost": 3,
   "shelf": "pantry",
   "why": "Floral, expensive, unmistakable. Crush the pod, use the seeds.",
   "flags": [],
   "swap": []
  },
  {
   "id": "black-cardamom",
   "name": "Black cardamom",
   "aka": [
    "badi elaichi"
   ],
   "category": "spices",
   "form": "whole",
   "roles": [
    "spice"
   ],
   "cuisines": [
    "indian",
    "chinese"
   ],
   "cost": 2,
   "shelf": "pantry",
   "why": "Smoky and camphorous. Not a substitute for green.",
   "flags": [],
   "swap": []
  },
  {
   "id": "cinnamon-cassia",
   "name": "Cinnamon, cassia",
   "aka": [
    "dalchini"
   ],
   "category": "spices",
   "form": "whole, ground",
   "roles": [
    "spice"
   ],
   "cuisines": [
    "universal"
   ],
   "cost": 1,
   "shelf": "pantry",
   "why": "What American cinnamon actually is. Bold and hot.",
   "flags": [],
   "swap": []
  },
  {
   "id": "cinnamon-ceylon",
   "name": "Cinnamon, Ceylon",
   "aka": [
    "true cinnamon"
   ],
   "category": "spices",
   "form": "whole, ground",
   "roles": [
    "spice"
   ],
   "cuisines": [
    "sri-lankan",
    "mexican"
   ],
   "cost": 2,
   "shelf": "pantry",
   "why": "Delicate and complex. Worth it in anything sweet.",
   "flags": [],
   "swap": []
  },
  {
   "id": "cloves",
   "name": "Cloves",
   "aka": [
    "laung"
   ],
   "category": "spices",
   "form": "whole",
   "roles": [
    "spice"
   ],
   "cuisines": [
    "indian",
    "indonesian",
    "european"
   ],
   "cost": 1,
   "shelf": "pantry",
   "why": "Overwhelming at four, perfect at two. Count them.",
   "flags": [],
   "swap": []
  },
  {
   "id": "nutmeg",
   "name": "Nutmeg",
   "aka": [
    "jaiphal"
   ],
   "category": "spices",
   "form": "whole",
   "roles": [
    "spice"
   ],
   "cuisines": [
    "european",
    "caribbean",
    "indian"
   ],
   "cost": 2,
   "shelf": "pantry",
   "why": "Grate fresh. Pre-ground nutmeg is sawdust.",
   "flags": [],
   "swap": []
  },
  {
   "id": "mace",
   "name": "Mace",
   "aka": [
    "javitri"
   ],
   "category": "spices",
   "form": "whole",
   "roles": [
    "spice"
   ],
   "cuisines": [
    "indian",
    "french"
   ],
   "cost": 3,
   "shelf": "pantry",
   "why": "The lacy shell around nutmeg. More delicate, more floral.",
   "flags": [],
   "swap": []
  },
  {
   "id": "allspice",
   "name": "Allspice",
   "aka": [
    "pimento"
   ],
   "category": "spices",
   "form": "whole, ground",
   "roles": [
    "spice"
   ],
   "cuisines": [
    "caribbean",
    "middle-eastern",
    "mexican"
   ],
   "cost": 1,
   "shelf": "pantry",
   "why": "One berry that tastes like three spices. The Caribbean backbone.",
   "flags": [],
   "swap": []
  },
  {
   "id": "star-anise",
   "name": "Star anise",
   "aka": [
    "badian"
   ],
   "category": "spices",
   "form": "whole",
   "roles": [
    "spice"
   ],
   "cuisines": [
    "chinese",
    "vietnamese",
    "indian"
   ],
   "cost": 1,
   "shelf": "pantry",
   "why": "Powerful. One pod flavors a whole pot of broth.",
   "flags": [],
   "swap": []
  },
  {
   "id": "caraway",
   "name": "Caraway",
   "aka": [],
   "category": "spices",
   "form": "whole",
   "roles": [
    "spice"
   ],
   "cuisines": [
    "german",
    "eastern-european",
    "north-african"
   ],
   "cost": 1,
   "shelf": "pantry",
   "why": "Rye bread and sauerkraut. Sharp, distinctive, divisive.",
   "flags": [],
   "swap": []
  },
  {
   "id": "nigella-seed",
   "name": "Nigella seed",
   "aka": [
    "kalonji",
    "black seed"
   ],
   "category": "spices",
   "form": "whole",
   "roles": [
    "spice"
   ],
   "cuisines": [
    "indian",
    "middle-eastern",
    "turkish"
   ],
   "cost": 1,
   "shelf": "pantry",
   "why": "Onion and oregano at once. Scattered on flatbread everywhere.",
   "flags": [],
   "swap": []
  },
  {
   "id": "ajwain",
   "name": "Ajwain",
   "aka": [
    "carom",
    "bishop's weed"
   ],
   "category": "spices",
   "form": "whole",
   "roles": [
    "spice"
   ],
   "cuisines": [
    "indian"
   ],
   "cost": 1,
   "shelf": "pantry",
   "why": "Thyme cranked to eleven. Traditionally cooked with legumes.",
   "flags": [],
   "swap": []
  },
  {
   "id": "asafoetida",
   "name": "Asafoetida",
   "aka": [
    "hing"
   ],
   "category": "spices",
   "form": "ground",
   "roles": [
    "spice",
    "umami"
   ],
   "cuisines": [
    "indian"
   ],
   "cost": 2,
   "shelf": "pantry",
   "why": "Foul raw, oniony cooked. Replaces garlic and onion entirely.",
   "flags": [
    "check-label"
   ],
   "swap": []
  },
  {
   "id": "amchur",
   "name": "Amchur",
   "aka": [
    "mango powder"
   ],
   "category": "spices",
   "form": "ground",
   "roles": [
    "acid",
    "spice"
   ],
   "cuisines": [
    "indian"
   ],
   "cost": 1,
   "shelf": "pantry",
   "why": "Dried green mango. Sourness with no liquid added.",
   "flags": [],
   "swap": []
  },
  {
   "id": "sumac",
   "name": "Sumac",
   "aka": [],
   "category": "spices",
   "form": "ground",
   "roles": [
    "acid",
    "spice"
   ],
   "cuisines": [
    "middle-eastern",
    "turkish"
   ],
   "cost": 2,
   "shelf": "pantry",
   "why": "Bright, tart, purple. Use it where you would squeeze a lemon.",
   "flags": [],
   "swap": []
  },
  {
   "id": "saffron",
   "name": "Saffron",
   "aka": [
    "kesar"
   ],
   "category": "spices",
   "form": "whole",
   "roles": [
    "spice"
   ],
   "cuisines": [
    "persian",
    "spanish",
    "indian"
   ],
   "cost": 3,
   "shelf": "pantry",
   "why": "The most expensive spice by weight. A pinch is a real dose.",
   "flags": [],
   "swap": []
  },
  {
   "id": "smoked-paprika",
   "name": "Smoked paprika",
   "aka": [
    "piment\u00f3n"
   ],
   "category": "spices",
   "form": "ground",
   "roles": [
    "spice"
   ],
   "cuisines": [
    "spanish",
    "portuguese"
   ],
   "cost": 1,
   "shelf": "pantry",
   "why": "Smoke without a grill. Sweet, bittersweet, or hot.",
   "flags": [],
   "swap": []
  },
  {
   "id": "sweet-paprika",
   "name": "Sweet paprika",
   "aka": [],
   "category": "spices",
   "form": "ground",
   "roles": [
    "spice"
   ],
   "cuisines": [
    "eastern-european"
   ],
   "cost": 1,
   "shelf": "pantry",
   "why": "Color and mild sweetness. Hungarian is the reference.",
   "flags": [],
   "swap": []
  },
  {
   "id": "cayenne",
   "name": "Cayenne",
   "aka": [],
   "category": "spices",
   "form": "ground",
   "roles": [
    "heat"
   ],
   "cuisines": [
    "universal"
   ],
   "cost": 1,
   "shelf": "pantry",
   "why": "Pure heat, no character. For adjusting, not for flavoring.",
   "flags": [],
   "swap": []
  },
  {
   "id": "sichuan-peppercorn",
   "name": "Sichuan peppercorn",
   "aka": [
    "hua jiao"
   ],
   "category": "spices",
   "form": "whole",
   "roles": [
    "spice"
   ],
   "cuisines": [
    "chinese"
   ],
   "cost": 2,
   "shelf": "pantry",
   "why": "Not heat. Numbness. Buy them fresh or they are inert.",
   "flags": [],
   "swap": []
  },
  {
   "id": "juniper-berries",
   "name": "Juniper berries",
   "aka": [],
   "category": "spices",
   "form": "whole",
   "roles": [
    "spice"
   ],
   "cuisines": [
    "scandinavian",
    "german"
   ],
   "cost": 2,
   "shelf": "pantry",
   "why": "Pine and gin. Crush them for cabbage and root vegetables.",
   "flags": [],
   "swap": []
  },
  {
   "id": "annatto",
   "name": "Annatto",
   "aka": [
    "achiote"
   ],
   "category": "spices",
   "form": "whole, ground",
   "roles": [
    "spice"
   ],
   "cuisines": [
    "mexican",
    "filipino",
    "caribbean"
   ],
   "cost": 1,
   "shelf": "pantry",
   "why": "Color more than flavor. Slightly peppery, deeply orange.",
   "flags": [],
   "swap": []
  },
  {
   "id": "white-pepper",
   "name": "White pepper",
   "aka": [],
   "category": "spices",
   "form": "whole, ground",
   "roles": [
    "spice",
    "heat"
   ],
   "cuisines": [
    "chinese",
    "french"
   ],
   "cost": 2,
   "shelf": "pantry",
   "why": "Fermented and funky. What Chinese soups actually taste of.",
   "flags": [],
   "swap": []
  },
  {
   "id": "ginger-ground",
   "name": "Ginger, ground",
   "aka": [
    "sonth"
   ],
   "category": "spices",
   "form": "ground",
   "roles": [
    "spice"
   ],
   "cuisines": [
    "indian",
    "american",
    "european"
   ],
   "cost": 1,
   "shelf": "pantry",
   "why": "Not a substitute for fresh. A different spice entirely.",
   "flags": [],
   "swap": []
  },
  {
   "id": "long-pepper",
   "name": "Long pepper",
   "aka": [
    "pippali"
   ],
   "category": "spices",
   "form": "whole",
   "roles": [
    "spice"
   ],
   "cuisines": [
    "indian",
    "indonesian"
   ],
   "cost": 3,
   "shelf": "pantry",
   "why": "Sweeter and hotter than black. What Rome used before peppercorns.",
   "flags": [],
   "swap": []
  },
  {
   "id": "jalape-o",
   "name": "Jalape\u00f1o",
   "aka": [],
   "category": "chiles-fresh",
   "form": "fresh",
   "roles": [
    "heat"
   ],
   "cuisines": [
    "mexican",
    "american"
   ],
   "cost": 1,
   "shelf": "fresh",
   "why": "Grassy, moderate. Seeds and ribs carry the heat, not the flesh.",
   "flags": [],
   "swap": []
  },
  {
   "id": "serrano",
   "name": "Serrano",
   "aka": [],
   "category": "chiles-fresh",
   "form": "fresh",
   "roles": [
    "heat"
   ],
   "cuisines": [
    "mexican"
   ],
   "cost": 1,
   "shelf": "fresh",
   "why": "Cleaner and hotter than jalape\u00f1o. The default in salsa.",
   "flags": [],
   "swap": []
  },
  {
   "id": "thai-bird-chile",
   "name": "Thai bird chile",
   "aka": [
    "prik kee noo"
   ],
   "category": "chiles-fresh",
   "form": "fresh, frozen",
   "roles": [
    "heat"
   ],
   "cuisines": [
    "thai",
    "vietnamese",
    "indian"
   ],
   "cost": 1,
   "shelf": "freezer",
   "why": "Small, brutal, fruity. Freeze them whole.",
   "flags": [],
   "swap": []
  },
  {
   "id": "habanero",
   "name": "Habanero",
   "aka": [],
   "category": "chiles-fresh",
   "form": "fresh",
   "roles": [
    "heat"
   ],
   "cuisines": [
    "caribbean",
    "mexican"
   ],
   "cost": 2,
   "shelf": "fresh",
   "why": "Apricot and fire. Use a quarter and mean it.",
   "flags": [],
   "swap": []
  },
  {
   "id": "poblano",
   "name": "Poblano",
   "aka": [],
   "category": "chiles-fresh",
   "form": "fresh",
   "roles": [
    "vegetable"
   ],
   "cuisines": [
    "mexican"
   ],
   "cost": 1,
   "shelf": "fresh",
   "why": "Barely hot. Char and peel. Becomes ancho when dried.",
   "flags": [],
   "swap": []
  },
  {
   "id": "anaheim",
   "name": "Anaheim",
   "aka": [
    "hatch"
   ],
   "category": "chiles-fresh",
   "form": "fresh",
   "roles": [
    "vegetable"
   ],
   "cuisines": [
    "mexican",
    "american"
   ],
   "cost": 1,
   "shelf": "fresh",
   "why": "Mild and meaty. The green chile of New Mexico.",
   "flags": [],
   "swap": []
  },
  {
   "id": "fresno",
   "name": "Fresno",
   "aka": [],
   "category": "chiles-fresh",
   "form": "fresh",
   "roles": [
    "heat"
   ],
   "cuisines": [
    "american",
    "mexican"
   ],
   "cost": 2,
   "shelf": "fresh",
   "why": "Red jalape\u00f1o lookalike, fruitier. Good raw.",
   "flags": [],
   "swap": []
  },
  {
   "id": "shishito",
   "name": "Shishito",
   "aka": [],
   "category": "chiles-fresh",
   "form": "fresh",
   "roles": [
    "vegetable"
   ],
   "cuisines": [
    "japanese"
   ],
   "cost": 2,
   "shelf": "fresh",
   "why": "Sweet, one in ten is hot. Blister them dry.",
   "flags": [],
   "swap": []
  },
  {
   "id": "green-chile-indian",
   "name": "Green chile, Indian",
   "aka": [
    "hari mirch"
   ],
   "category": "chiles-fresh",
   "form": "fresh",
   "roles": [
    "heat"
   ],
   "cuisines": [
    "indian"
   ],
   "cost": 1,
   "shelf": "fresh",
   "why": "Slit, do not chop, if you want aroma without full heat.",
   "flags": [],
   "swap": []
  },
  {
   "id": "ancho",
   "name": "Ancho",
   "aka": [],
   "category": "chiles-dried",
   "form": "dried",
   "roles": [
    "heat",
    "umami"
   ],
   "cuisines": [
    "mexican"
   ],
   "cost": 1,
   "shelf": "pantry",
   "why": "Dried poblano. Raisin and cocoa. The base of most mole.",
   "flags": [],
   "swap": []
  },
  {
   "id": "guajillo",
   "name": "Guajillo",
   "aka": [],
   "category": "chiles-dried",
   "form": "dried",
   "roles": [
    "heat"
   ],
   "cuisines": [
    "mexican"
   ],
   "cost": 1,
   "shelf": "pantry",
   "why": "Tart, bright, moderate. The other half of the mole base.",
   "flags": [],
   "swap": []
  },
  {
   "id": "pasilla",
   "name": "Pasilla",
   "aka": [],
   "category": "chiles-dried",
   "form": "dried",
   "roles": [
    "heat"
   ],
   "cuisines": [
    "mexican"
   ],
   "cost": 1,
   "shelf": "pantry",
   "why": "Dried chilaca. Herbal and dark. Completes the holy trinity.",
   "flags": [],
   "swap": []
  },
  {
   "id": "chipotle",
   "name": "Chipotle",
   "aka": [],
   "category": "chiles-dried",
   "form": "dried",
   "roles": [
    "heat",
    "umami"
   ],
   "cuisines": [
    "mexican"
   ],
   "cost": 1,
   "shelf": "pantry",
   "why": "Smoked, dried jalape\u00f1o. Buy dried, not in adobo, which has oil.",
   "flags": [
    "check-label"
   ],
   "swap": []
  },
  {
   "id": "chile-de-rbol",
   "name": "Chile de \u00e1rbol",
   "aka": [],
   "category": "chiles-dried",
   "form": "dried",
   "roles": [
    "heat"
   ],
   "cuisines": [
    "mexican"
   ],
   "cost": 1,
   "shelf": "pantry",
   "why": "Straightforward and hot. For heat, not for body.",
   "flags": [],
   "swap": []
  },
  {
   "id": "cascabel",
   "name": "Cascabel",
   "aka": [],
   "category": "chiles-dried",
   "form": "dried",
   "roles": [
    "heat"
   ],
   "cuisines": [
    "mexican"
   ],
   "cost": 2,
   "shelf": "pantry",
   "why": "Rattles when shaken. Nutty and mild.",
   "flags": [],
   "swap": []
  },
  {
   "id": "kashmiri-chile",
   "name": "Kashmiri chile",
   "aka": [],
   "category": "chiles-dried",
   "form": "dried, ground",
   "roles": [
    "spice"
   ],
   "cuisines": [
    "indian"
   ],
   "cost": 1,
   "shelf": "pantry",
   "why": "Enormous color, almost no heat. Why tandoori is red.",
   "flags": [],
   "swap": []
  },
  {
   "id": "byadgi-chile",
   "name": "Byadgi chile",
   "aka": [],
   "category": "chiles-dried",
   "form": "dried",
   "roles": [
    "spice"
   ],
   "cuisines": [
    "indian"
   ],
   "cost": 1,
   "shelf": "pantry",
   "why": "Wrinkled, deep red, mild. The South Indian color chile.",
   "flags": [],
   "swap": []
  },
  {
   "id": "aleppo-pepper",
   "name": "Aleppo pepper",
   "aka": [
    "pul biber"
   ],
   "category": "chiles-dried",
   "form": "flakes",
   "roles": [
    "heat"
   ],
   "cuisines": [
    "turkish",
    "middle-eastern"
   ],
   "cost": 2,
   "shelf": "pantry",
   "why": "Fruity, mild, slightly salty. Often sold with salt added.",
   "flags": [
    "check-label"
   ],
   "swap": []
  },
  {
   "id": "urfa-biber",
   "name": "Urfa biber",
   "aka": [],
   "category": "chiles-dried",
   "form": "flakes",
   "roles": [
    "heat",
    "umami"
   ],
   "cuisines": [
    "turkish"
   ],
   "cost": 2,
   "shelf": "pantry",
   "why": "Raisin, chocolate, tobacco. Sun-dried and sweated.",
   "flags": [],
   "swap": []
  },
  {
   "id": "gochugaru",
   "name": "Gochugaru",
   "aka": [],
   "category": "chiles-dried",
   "form": "flakes",
   "roles": [
    "heat"
   ],
   "cuisines": [
    "korean"
   ],
   "cost": 2,
   "shelf": "pantry",
   "why": "Coarse Korean flakes. Sweet, smoky, essential for kimchi.",
   "flags": [],
   "swap": []
  },
  {
   "id": "red-pepper-flakes",
   "name": "Red pepper flakes",
   "aka": [
    "crushed red pepper"
   ],
   "category": "chiles-dried",
   "form": "flakes",
   "roles": [
    "heat"
   ],
   "cuisines": [
    "italian",
    "american"
   ],
   "cost": 1,
   "shelf": "pantry",
   "why": "Generic and useful. Mostly cayenne with seeds.",
   "flags": [],
   "swap": []
  },
  {
   "id": "calabrian-chile",
   "name": "Calabrian chile",
   "aka": [],
   "category": "chiles-dried",
   "form": "dried",
   "roles": [
    "heat"
   ],
   "cuisines": [
    "italian"
   ],
   "cost": 2,
   "shelf": "pantry",
   "why": "Fruity and fierce. Usually jarred in oil, so buy dried.",
   "flags": [
    "check-label"
   ],
   "swap": []
  },
  {
   "id": "dried-thai-chile",
   "name": "Dried Thai chile",
   "aka": [],
   "category": "chiles-dried",
   "form": "dried",
   "roles": [
    "heat"
   ],
   "cuisines": [
    "thai",
    "chinese"
   ],
   "cost": 1,
   "shelf": "pantry",
   "why": "Toast until they darken. Do not inhale over the pan.",
   "flags": [],
   "swap": []
  },
  {
   "id": "chile-powder-pure",
   "name": "Chile powder, pure",
   "aka": [],
   "category": "chiles-dried",
   "form": "ground",
   "roles": [
    "heat"
   ],
   "cuisines": [
    "mexican",
    "american"
   ],
   "cost": 1,
   "shelf": "pantry",
   "why": "Ground single chile. Not the same as chili powder blend.",
   "flags": [],
   "swap": []
  },
  {
   "id": "garam-masala",
   "name": "Garam masala",
   "aka": [],
   "category": "blends",
   "form": "ground",
   "roles": [
    "blend"
   ],
   "cuisines": [
    "indian"
   ],
   "cost": 1,
   "shelf": "pantry",
   "why": "Finishing spice, not a base. Add in the last two minutes.",
   "flags": [
    "make-your-own"
   ],
   "swap": []
  },
  {
   "id": "curry-powder",
   "name": "Curry powder",
   "aka": [],
   "category": "blends",
   "form": "ground",
   "roles": [
    "blend"
   ],
   "cuisines": [
    "british",
    "indian",
    "japanese"
   ],
   "cost": 1,
   "shelf": "pantry",
   "why": "A British invention. Useful, but no Indian cook reaches for it.",
   "flags": [],
   "swap": []
  },
  {
   "id": "berbere",
   "name": "Berbere",
   "aka": [],
   "category": "blends",
   "form": "ground",
   "roles": [
    "blend",
    "heat"
   ],
   "cuisines": [
    "ethiopian"
   ],
   "cost": 2,
   "shelf": "pantry",
   "why": "Chile-forward Ethiopian blend. Fenugreek and ajwain make it.",
   "flags": [
    "make-your-own"
   ],
   "swap": []
  },
  {
   "id": "ras-el-hanout",
   "name": "Ras el hanout",
   "aka": [],
   "category": "blends",
   "form": "ground",
   "roles": [
    "blend"
   ],
   "cuisines": [
    "moroccan",
    "north-african"
   ],
   "cost": 2,
   "shelf": "pantry",
   "why": "Up to thirty spices. Every shop's is different.",
   "flags": [
    "make-your-own"
   ],
   "swap": []
  },
  {
   "id": "za-atar",
   "name": "Za'atar",
   "aka": [],
   "category": "blends",
   "form": "ground",
   "roles": [
    "blend"
   ],
   "cuisines": [
    "middle-eastern"
   ],
   "cost": 1,
   "shelf": "pantry",
   "why": "Thyme, sumac, sesame. Usually salted, so make it yourself.",
   "flags": [
    "sodium",
    "make-your-own"
   ],
   "swap": []
  },
  {
   "id": "chinese-five-spice",
   "name": "Chinese five-spice",
   "aka": [],
   "category": "blends",
   "form": "ground",
   "roles": [
    "blend"
   ],
   "cuisines": [
    "chinese",
    "vietnamese"
   ],
   "cost": 1,
   "shelf": "pantry",
   "why": "Star anise, fennel, cinnamon, clove, Sichuan pepper.",
   "flags": [
    "make-your-own"
   ],
   "swap": []
  },
  {
   "id": "shichimi-togarashi",
   "name": "Shichimi togarashi",
   "aka": [],
   "category": "blends",
   "form": "ground",
   "roles": [
    "blend"
   ],
   "cuisines": [
    "japanese"
   ],
   "cost": 2,
   "shelf": "pantry",
   "why": "Seven flavors including nori and orange peel. Often salted.",
   "flags": [
    "sodium",
    "check-label"
   ],
   "swap": []
  },
  {
   "id": "baharat",
   "name": "Baharat",
   "aka": [],
   "category": "blends",
   "form": "ground",
   "roles": [
    "blend"
   ],
   "cuisines": [
    "middle-eastern",
    "turkish"
   ],
   "cost": 1,
   "shelf": "pantry",
   "why": "Warm, sweet, peppery. The everyday Levantine blend.",
   "flags": [
    "make-your-own"
   ],
   "swap": []
  },
  {
   "id": "chili-powder-blend",
   "name": "Chili powder (blend)",
   "aka": [],
   "category": "blends",
   "form": "ground",
   "roles": [
    "blend"
   ],
   "cuisines": [
    "american",
    "tex-mex"
   ],
   "cost": 1,
   "shelf": "pantry",
   "why": "Chile, cumin, oregano, garlic. Usually salted. Make your own.",
   "flags": [
    "sodium",
    "make-your-own"
   ],
   "swap": []
  },
  {
   "id": "herbes-de-provence",
   "name": "Herbes de Provence",
   "aka": [],
   "category": "blends",
   "form": "dried",
   "roles": [
    "blend"
   ],
   "cuisines": [
    "french"
   ],
   "cost": 1,
   "shelf": "pantry",
   "why": "Thyme, savory, rosemary, sometimes lavender.",
   "flags": [],
   "swap": []
  },
  {
   "id": "sambar-powder",
   "name": "Sambar powder",
   "aka": [],
   "category": "blends",
   "form": "ground",
   "roles": [
    "blend"
   ],
   "cuisines": [
    "indian"
   ],
   "cost": 1,
   "shelf": "pantry",
   "why": "Roasted lentils ground with spices. Unique in the spice world.",
   "flags": [
    "make-your-own"
   ],
   "swap": []
  },
  {
   "id": "panch-phoron",
   "name": "Panch phoron",
   "aka": [
    "Bengali five-spice"
   ],
   "category": "blends",
   "form": "whole",
   "roles": [
    "blend"
   ],
   "cuisines": [
    "indian"
   ],
   "cost": 1,
   "shelf": "pantry",
   "why": "Five whole seeds, equal parts, never ground.",
   "flags": [
    "make-your-own"
   ],
   "swap": []
  },
  {
   "id": "dukkah",
   "name": "Dukkah",
   "aka": [],
   "category": "blends",
   "form": "ground",
   "roles": [
    "blend"
   ],
   "cuisines": [
    "north-african"
   ],
   "cost": 2,
   "shelf": "pantry",
   "why": "Nuts, seeds, spices. Texture as much as flavor.",
   "flags": [
    "whole-food-fat",
    "make-your-own"
   ],
   "swap": []
  },
  {
   "id": "apple-cider-vinegar",
   "name": "Apple cider vinegar",
   "aka": [],
   "category": "acids",
   "form": "liquid",
   "roles": [
    "acid"
   ],
   "cuisines": [
    "american",
    "european"
   ],
   "cost": 1,
   "shelf": "pantry",
   "why": "The everyday vinegar. Mellow enough to use by the tablespoon.",
   "flags": [],
   "swap": []
  },
  {
   "id": "rice-vinegar-unseasoned",
   "name": "Rice vinegar, unseasoned",
   "aka": [],
   "category": "acids",
   "form": "liquid",
   "roles": [
    "acid"
   ],
   "cuisines": [
    "japanese",
    "chinese",
    "korean"
   ],
   "cost": 1,
   "shelf": "pantry",
   "why": "Seasoned means sugar and salt were added. Read it.",
   "flags": [
    "check-label"
   ],
   "swap": []
  },
  {
   "id": "white-wine-vinegar",
   "name": "White wine vinegar",
   "aka": [],
   "category": "acids",
   "form": "liquid",
   "roles": [
    "acid"
   ],
   "cuisines": [
    "french",
    "mediterranean"
   ],
   "cost": 1,
   "shelf": "pantry",
   "why": "Clean and sharp. For anything French or delicate.",
   "flags": [],
   "swap": []
  },
  {
   "id": "red-wine-vinegar",
   "name": "Red wine vinegar",
   "aka": [],
   "category": "acids",
   "form": "liquid",
   "roles": [
    "acid"
   ],
   "cuisines": [
    "mediterranean",
    "spanish"
   ],
   "cost": 1,
   "shelf": "pantry",
   "why": "Rounder and fruitier. Beans and lentils love it.",
   "flags": [],
   "swap": []
  },
  {
   "id": "sherry-vinegar",
   "name": "Sherry vinegar",
   "aka": [],
   "category": "acids",
   "form": "liquid",
   "roles": [
    "acid"
   ],
   "cuisines": [
    "spanish"
   ],
   "cost": 2,
   "shelf": "pantry",
   "why": "Nutty and complex. The most flavorful vinegar per drop.",
   "flags": [],
   "swap": []
  },
  {
   "id": "balsamic-vinegar",
   "name": "Balsamic vinegar",
   "aka": [],
   "category": "acids",
   "form": "liquid",
   "roles": [
    "acid",
    "sweet"
   ],
   "cuisines": [
    "italian"
   ],
   "cost": 2,
   "shelf": "pantry",
   "why": "Sweet. Cheap ones are colored with caramel. Check the label.",
   "flags": [
    "natural-sugar",
    "check-label"
   ],
   "swap": []
  },
  {
   "id": "chinese-black-vinegar",
   "name": "Chinese black vinegar",
   "aka": [
    "Chinkiang"
   ],
   "category": "acids",
   "form": "liquid",
   "roles": [
    "acid",
    "umami"
   ],
   "cuisines": [
    "chinese"
   ],
   "cost": 1,
   "shelf": "pantry",
   "why": "Malty, smoky, low acid. Nothing in the West resembles it.",
   "flags": [],
   "swap": []
  },
  {
   "id": "lemon-juice",
   "name": "Lemon juice",
   "aka": [],
   "category": "acids",
   "form": "fresh",
   "roles": [
    "acid"
   ],
   "cuisines": [
    "universal"
   ],
   "cost": 1,
   "shelf": "fresh",
   "why": "The single most effective substitute for salt at the table.",
   "flags": [],
   "swap": []
  },
  {
   "id": "lime-juice",
   "name": "Lime juice",
   "aka": [],
   "category": "acids",
   "form": "fresh",
   "roles": [
    "acid"
   ],
   "cuisines": [
    "mexican",
    "thai",
    "indian"
   ],
   "cost": 1,
   "shelf": "fresh",
   "why": "Louder than lemon. Finish, do not cook, with it.",
   "flags": [],
   "swap": []
  },
  {
   "id": "pomegranate-molasses",
   "name": "Pomegranate molasses",
   "aka": [],
   "category": "acids",
   "form": "liquid",
   "roles": [
    "acid",
    "sweet"
   ],
   "cuisines": [
    "middle-eastern",
    "persian"
   ],
   "cost": 2,
   "shelf": "pantry",
   "why": "Sour and sweet. Reduced juice, sometimes with added sugar.",
   "flags": [
    "natural-sugar",
    "check-label"
   ],
   "swap": []
  },
  {
   "id": "verjuice",
   "name": "Verjuice",
   "aka": [],
   "category": "acids",
   "form": "liquid",
   "roles": [
    "acid"
   ],
   "cuisines": [
    "persian",
    "french"
   ],
   "cost": 3,
   "shelf": "pantry",
   "why": "Unripe grape juice. Acid without vinegar's harshness.",
   "flags": [],
   "swap": []
  },
  {
   "id": "preserved-lemon",
   "name": "Preserved lemon",
   "aka": [],
   "category": "acids",
   "form": "jarred",
   "roles": [
    "acid"
   ],
   "cuisines": [
    "moroccan",
    "north-african"
   ],
   "cost": 2,
   "shelf": "fridge",
   "why": "Salt-cured. Rinse it, use the rind, discard the flesh.",
   "flags": [
    "sodium"
   ],
   "swap": []
  },
  {
   "id": "nutritional-yeast",
   "name": "Nutritional yeast",
   "aka": [
    "nooch"
   ],
   "category": "umami",
   "form": "flakes",
   "roles": [
    "umami"
   ],
   "cuisines": [
    "american"
   ],
   "cost": 2,
   "shelf": "pantry",
   "why": "Cheesy, nutty, B12-fortified. Not a health food gimmick.",
   "flags": [],
   "swap": []
  },
  {
   "id": "white-miso",
   "name": "White miso",
   "aka": [
    "shiro miso"
   ],
   "category": "umami",
   "form": "paste",
   "roles": [
    "umami"
   ],
   "cuisines": [
    "japanese"
   ],
   "cost": 2,
   "shelf": "fridge",
   "why": "Sweet and mild. Add off the heat or you kill the culture.",
   "flags": [
    "sodium"
   ],
   "swap": []
  },
  {
   "id": "red-miso",
   "name": "Red miso",
   "aka": [
    "aka miso"
   ],
   "category": "umami",
   "form": "paste",
   "roles": [
    "umami"
   ],
   "cuisines": [
    "japanese"
   ],
   "cost": 2,
   "shelf": "fridge",
   "why": "Long-fermented, aggressive, salty. Use half as much.",
   "flags": [
    "sodium"
   ],
   "swap": []
  },
  {
   "id": "low-sodium-tamari",
   "name": "Low-sodium tamari",
   "aka": [],
   "category": "umami",
   "form": "liquid",
   "roles": [
    "umami"
   ],
   "cuisines": [
    "japanese",
    "chinese"
   ],
   "cost": 1,
   "shelf": "pantry",
   "why": "Wheat-free soy sauce. Still sodium. Dilute it.",
   "flags": [
    "sodium"
   ],
   "swap": []
  },
  {
   "id": "coconut-aminos",
   "name": "Coconut aminos",
   "aka": [],
   "category": "umami",
   "form": "liquid",
   "roles": [
    "umami",
    "sweet"
   ],
   "cuisines": [
    "american"
   ],
   "cost": 2,
   "shelf": "pantry",
   "why": "Sweeter, far less sodium than soy. Not the same flavor.",
   "flags": [
    "natural-sugar"
   ],
   "swap": []
  },
  {
   "id": "dried-shiitake",
   "name": "Dried shiitake",
   "aka": [],
   "category": "umami",
   "form": "dried",
   "roles": [
    "umami"
   ],
   "cuisines": [
    "chinese",
    "japanese"
   ],
   "cost": 2,
   "shelf": "pantry",
   "why": "Rehydrate. The soaking liquid is a free vegetable stock.",
   "flags": [],
   "swap": []
  },
  {
   "id": "kombu",
   "name": "Kombu",
   "aka": [],
   "category": "umami",
   "form": "dried",
   "roles": [
    "umami"
   ],
   "cuisines": [
    "japanese",
    "korean"
   ],
   "cost": 2,
   "shelf": "pantry",
   "why": "Dried kelp. Glutamate in its purest natural form.",
   "flags": [],
   "swap": []
  },
  {
   "id": "nori",
   "name": "Nori",
   "aka": [],
   "category": "umami",
   "form": "dried",
   "roles": [
    "umami",
    "garnish"
   ],
   "cuisines": [
    "japanese",
    "korean"
   ],
   "cost": 1,
   "shelf": "pantry",
   "why": "Sheets of dried seaweed. Crumble into anything for ocean depth.",
   "flags": [],
   "swap": []
  },
  {
   "id": "sun-dried-tomatoes",
   "name": "Sun-dried tomatoes",
   "aka": [],
   "category": "umami",
   "form": "dried",
   "roles": [
    "umami"
   ],
   "cuisines": [
    "italian",
    "mediterranean"
   ],
   "cost": 2,
   "shelf": "pantry",
   "why": "Dry-packed, not oil-packed. Rehydrate them yourself.",
   "flags": [
    "check-label"
   ],
   "swap": []
  },
  {
   "id": "fermented-black-beans",
   "name": "Fermented black beans",
   "aka": [
    "douchi"
   ],
   "category": "umami",
   "form": "dried",
   "roles": [
    "umami"
   ],
   "cuisines": [
    "chinese"
   ],
   "cost": 1,
   "shelf": "pantry",
   "why": "Salted, funky soybeans. Rinse before use.",
   "flags": [
    "sodium"
   ],
   "swap": []
  },
  {
   "id": "capers",
   "name": "Capers",
   "aka": [],
   "category": "umami",
   "form": "jarred",
   "roles": [
    "umami",
    "acid"
   ],
   "cuisines": [
    "italian",
    "mediterranean"
   ],
   "cost": 2,
   "shelf": "fridge",
   "why": "Brined flower buds. Rinse hard. Pop of salt and floral bitterness.",
   "flags": [
    "sodium"
   ],
   "swap": []
  },
  {
   "id": "dijon-mustard",
   "name": "Dijon mustard",
   "aka": [],
   "category": "umami",
   "form": "jarred",
   "roles": [
    "umami",
    "acid"
   ],
   "cuisines": [
    "french"
   ],
   "cost": 1,
   "shelf": "fridge",
   "why": "Emulsifies dressings with zero oil. Check for added sugar.",
   "flags": [
    "sodium",
    "check-label"
   ],
   "swap": []
  },
  {
   "id": "vegetable-bouillon-no-salt",
   "name": "Vegetable bouillon, no-salt",
   "aka": [],
   "category": "umami",
   "form": "powder",
   "roles": [
    "umami"
   ],
   "cuisines": [
    "universal"
   ],
   "cost": 1,
   "shelf": "pantry",
   "why": "Most bouillon is salt with a vegetable rumor. Find the no-salt kind.",
   "flags": [
    "check-label"
   ],
   "swap": []
  },
  {
   "id": "smoked-salt-or-liquid-smoke",
   "name": "Smoked salt or liquid smoke",
   "aka": [],
   "category": "umami",
   "form": "liquid",
   "roles": [
    "umami"
   ],
   "cuisines": [
    "american"
   ],
   "cost": 1,
   "shelf": "pantry",
   "why": "Smoke is a flavor, not an ingredient. A drop replaces bacon.",
   "flags": [
    "sodium",
    "check-label"
   ],
   "swap": []
  },
  {
   "id": "cornstarch",
   "name": "Cornstarch",
   "aka": [
    "cornflour"
   ],
   "category": "thickeners",
   "form": "powder",
   "roles": [
    "thickener"
   ],
   "cuisines": [
    "chinese",
    "american"
   ],
   "cost": 1,
   "shelf": "pantry",
   "why": "Cloudy when cold, clear when hot. Slurry it first.",
   "flags": [],
   "swap": []
  },
  {
   "id": "baking-powder",
   "name": "Baking powder",
   "aka": [],
   "category": "thickeners",
   "form": "powder",
   "roles": [
    "texture"
   ],
   "cuisines": [
    "universal"
   ],
   "cost": 1,
   "shelf": "pantry",
   "why": "Lifts egg-free baking that would otherwise set dense. About 480 mg sodium per teaspoon, so count it in the nutrition math.",
   "flags": [
    "sodium"
   ],
   "swap": []
  },
  {
   "id": "arrowroot",
   "name": "Arrowroot",
   "aka": [],
   "category": "thickeners",
   "form": "powder",
   "roles": [
    "thickener"
   ],
   "cuisines": [
    "caribbean",
    "american"
   ],
   "cost": 2,
   "shelf": "pantry",
   "why": "Freezes and reheats without breaking. Cornstarch does not.",
   "flags": [],
   "swap": []
  },
  {
   "id": "potato-starch",
   "name": "Potato starch",
   "aka": [],
   "category": "thickeners",
   "form": "powder",
   "roles": [
    "thickener"
   ],
   "cuisines": [
    "japanese",
    "eastern-european"
   ],
   "cost": 2,
   "shelf": "pantry",
   "why": "Silkiest of the starches. Loses power if boiled hard.",
   "flags": [],
   "swap": []
  },
  {
   "id": "blended-white-beans",
   "name": "Blended white beans",
   "aka": [],
   "category": "thickeners",
   "form": "cooked",
   "roles": [
    "thickener",
    "protein"
   ],
   "cuisines": [
    "universal"
   ],
   "cost": 1,
   "shelf": "pantry",
   "why": "The best thickener here. Free protein, free fiber, no starch.",
   "flags": [],
   "swap": []
  },
  {
   "id": "blended-potato",
   "name": "Blended potato",
   "aka": [],
   "category": "thickeners",
   "form": "cooked",
   "roles": [
    "thickener"
   ],
   "cuisines": [
    "universal"
   ],
   "cost": 1,
   "shelf": "pantry",
   "why": "Boil, blend with the cooking water. Creamy, glossy, zero fat.",
   "flags": [],
   "swap": []
  },
  {
   "id": "cashew-cream",
   "name": "Cashew cream",
   "aka": [],
   "category": "thickeners",
   "form": "blended",
   "roles": [
    "thickener",
    "fat"
   ],
   "cuisines": [
    "indian",
    "american"
   ],
   "cost": 3,
   "shelf": "fridge",
   "why": "Soaked cashews plus water, blended for two minutes.",
   "flags": [
    "whole-food-fat"
   ],
   "swap": []
  },
  {
   "id": "oat-cream",
   "name": "Oat cream",
   "aka": [],
   "category": "thickeners",
   "form": "blended",
   "roles": [
    "thickener"
   ],
   "cuisines": [
    "scandinavian"
   ],
   "cost": 1,
   "shelf": "pantry",
   "why": "Blended rolled oats and water, strained. Costs almost nothing.",
   "flags": [],
   "swap": []
  },
  {
   "id": "aquafaba",
   "name": "Aquafaba",
   "aka": [],
   "category": "thickeners",
   "form": "liquid",
   "roles": [
    "binder"
   ],
   "cuisines": [
    "universal"
   ],
   "cost": 1,
   "shelf": "fridge",
   "why": "The liquid in a chickpea can. Whips like egg white. Free.",
   "flags": [],
   "swap": []
  },
  {
   "id": "unsweetened-soy-milk",
   "name": "Unsweetened soy milk",
   "aka": [],
   "category": "milks",
   "form": "liquid",
   "roles": [
    "dairy-alt",
    "protein"
   ],
   "cuisines": [
    "universal"
   ],
   "cost": 1,
   "shelf": "pantry",
   "why": "The only plant milk with protein comparable to dairy.",
   "flags": [
    "check-label"
   ],
   "swap": []
  },
  {
   "id": "unsweetened-oat-milk",
   "name": "Unsweetened oat milk",
   "aka": [],
   "category": "milks",
   "form": "liquid",
   "roles": [
    "dairy-alt"
   ],
   "cuisines": [
    "universal"
   ],
   "cost": 1,
   "shelf": "pantry",
   "why": "Creamiest mouthfeel. Often contains added oil. Read it.",
   "flags": [
    "check-label"
   ],
   "swap": []
  },
  {
   "id": "unsweetened-almond-milk",
   "name": "Unsweetened almond milk",
   "aka": [],
   "category": "milks",
   "form": "liquid",
   "roles": [
    "dairy-alt"
   ],
   "cuisines": [
    "universal"
   ],
   "cost": 1,
   "shelf": "pantry",
   "why": "Thin and low calorie. Almost no protein.",
   "flags": [
    "check-label"
   ],
   "swap": []
  },
  {
   "id": "plain-plant-yogurt",
   "name": "Plain plant yogurt",
   "aka": [],
   "category": "milks",
   "form": "fresh",
   "roles": [
    "dairy-alt"
   ],
   "cuisines": [
    "universal"
   ],
   "cost": 2,
   "shelf": "fridge",
   "why": "Soy-based has the most protein. Check for added sugar.",
   "flags": [
    "check-label"
   ],
   "swap": []
  },
  {
   "id": "black-chickpeas",
   "name": "Black chickpeas",
   "aka": [
    "kala chana",
    "desi chickpeas",
    "bengal gram (whole)"
   ],
   "category": "legumes",
   "form": "dried",
   "roles": [
    "protein"
   ],
   "cuisines": [
    "indian",
    "middle-eastern"
   ],
   "cost": 1,
   "shelf": "pantry",
   "why": "Smaller and firmer than tan chickpeas, with more fiber. Hold their shape whole in a loose curry and lend their dark cooking water to the gravy.",
   "flags": [],
   "swap": [
    "chickpeas"
   ]
  },
  {
   "id": "toor-dal",
   "name": "Toor dal",
   "aka": [
    "pigeon peas",
    "arhar dal",
    "tuvar dal",
    "split pigeon peas"
   ],
   "category": "legumes",
   "form": "dried",
   "roles": [
    "protein",
    "thickener"
   ],
   "cuisines": [
    "indian",
    "sri-lankan",
    "caribbean"
   ],
   "cost": 1,
   "shelf": "pantry",
   "why": "Cooks down to a silky thickness that carries sambar and everyday South Indian dal.",
   "flags": [],
   "swap": [
    "yellow-split-peas"
   ]
  },
  {
   "id": "pandan-leaf",
   "name": "Pandan leaf",
   "aka": [
    "rampe",
    "screwpine"
   ],
   "category": "aromatics",
   "form": "fresh, frozen",
   "roles": [
    "aromatic"
   ],
   "cuisines": [
    "sri-lankan",
    "thai",
    "indonesian"
   ],
   "cost": 2,
   "shelf": "freezer",
   "why": "Knot a blade into a simmering pot for a grassy, vanilla-edged aroma, then fish it out.",
   "flags": [],
   "swap": []
  },
  {
   "id": "wood-ear-mushrooms",
   "name": "Wood ear mushrooms",
   "aka": [
    "black fungus",
    "cloud ear fungus"
   ],
   "category": "vegetables",
   "form": "dried",
   "roles": [
    "umami",
    "texture"
   ],
   "cuisines": [
    "chinese"
   ],
   "cost": 2,
   "shelf": "pantry",
   "why": "Cartilage-crisp ribbons that soak up broth without ever going soft.",
   "flags": [],
   "swap": [
    "shiitake-mushrooms"
   ]
  },
  {
   "id": "wakame",
   "name": "Wakame",
   "aka": [],
   "category": "umami",
   "form": "dried",
   "roles": [
    "umami",
    "vegetable"
   ],
   "cuisines": [
    "japanese",
    "korean"
   ],
   "cost": 2,
   "shelf": "pantry",
   "why": "Rehydrates in minutes and turns a plain broth into a bowl with real texture.",
   "flags": [],
   "swap": []
  },
  {
   "id": "hijiki",
   "name": "Hijiki",
   "aka": [
    "hiziki"
   ],
   "category": "umami",
   "form": "dried",
   "roles": [
    "vegetable",
    "umami"
   ],
   "cuisines": [
    "japanese"
   ],
   "cost": 2,
   "shelf": "pantry",
   "why": "Dried seaweed that swells about eightfold into glossy black strands, mineral and faintly sweet, best eaten occasionally rather than daily given its naturally higher inorganic arsenic content.",
   "flags": [
    "caution"
   ],
   "swap": []
  },
  {
   "id": "doenjang",
   "name": "Doenjang",
   "aka": [
    "Korean soybean paste"
   ],
   "category": "umami",
   "form": "paste",
   "roles": [
    "umami"
   ],
   "cuisines": [
    "korean"
   ],
   "cost": 2,
   "shelf": "fridge",
   "why": "Fermented from soybeans alone with no rice koji, so it runs funkier and saltier than miso. The base of jjigae.",
   "flags": [
    "sodium"
   ],
   "swap": [
    "red-miso",
    "white-miso"
   ]
  },
  {
   "id": "soybean-sprouts",
   "name": "Soybean sprouts",
   "aka": [
    "kongnamul"
   ],
   "category": "vegetables",
   "roles": [
    "vegetable",
    "protein"
   ],
   "cuisines": [
    "korean"
   ],
   "cost": 1,
   "shelf": "fresh",
   "why": "Nuttier and crunchier than mung bean sprouts, with the bean still attached to the tail; the base of kongnamul-guk.",
   "form": "fresh",
   "flags": [],
   "swap": []
  },
  {
   "id": "green-papaya",
   "name": "Green papaya",
   "aka": [
    "unripe papaya",
    "papaya verde"
   ],
   "category": "vegetables",
   "form": "fresh",
   "roles": [
    "vegetable",
    "base"
   ],
   "cuisines": [
    "thai",
    "vietnamese"
   ],
   "cost": 2,
   "shelf": "fresh",
   "why": "Starchy and neutral raw, made for shredding into salads that stay crisp for hours.",
   "flags": [],
   "swap": [
    "cucumber",
    "cabbage-green"
   ]
  },
  {
   "id": "makrut-lime-leaves",
   "name": "Makrut lime leaves",
   "aka": [
    "kaffir lime leaves"
   ],
   "category": "aromatics",
   "form": "fresh, frozen",
   "roles": [
    "aromatic"
   ],
   "cuisines": [
    "thai",
    "indonesian"
   ],
   "cost": 3,
   "shelf": "freezer",
   "why": "A floral citrus scent found in no other leaf. Sold frozen, torn straight into the pot rather than chopped.",
   "flags": [],
   "swap": [
    "limes"
   ]
  },
  {
   "id": "long-beans",
   "name": "Long beans",
   "aka": [
    "yardlong beans",
    "snake beans",
    "kacang panjang"
   ],
   "category": "vegetables",
   "form": "fresh",
   "roles": [
    "vegetable"
   ],
   "cuisines": [
    "indonesian",
    "thai",
    "chinese",
    "vietnamese"
   ],
   "cost": 2,
   "shelf": "fresh",
   "why": "Snappier and starchier than green beans, and they hold their shape through a long simmer.",
   "flags": [],
   "swap": [
    "green-beans"
   ]
  },
  {
   "id": "dried-mint",
   "name": "Dried mint",
   "aka": [
    "na'na khoshk"
   ],
   "category": "herbs-dried",
   "form": "dried",
   "roles": [
    "herb"
   ],
   "cuisines": [
    "persian",
    "middle-eastern"
   ],
   "cost": 1,
   "shelf": "pantry",
   "why": "Turns fragrant and a shade darker when toasted dry, the traditional topping for adasi and other Persian stews.",
   "flags": [],
   "swap": [
    "mint"
   ]
  },
  {
   "id": "dried-limes",
   "name": "Dried limes",
   "aka": [
    "limoo amani",
    "black lime",
    "loomi"
   ],
   "category": "spices",
   "form": "whole, dried",
   "roles": [
    "spice",
    "acid"
   ],
   "cuisines": [
    "persian",
    "middle-eastern"
   ],
   "cost": 2,
   "shelf": "pantry",
   "why": "Whole limes fermented and sun-dried until nearly black; pierce and simmer whole for a tart, faintly smoky sourness fresh lime juice cannot match.",
   "flags": [],
   "swap": [
    "lime-juice"
   ]
  },
  {
   "id": "vanilla-extract",
   "name": "Vanilla extract",
   "aka": [
    "pure vanilla"
   ],
   "category": "spices",
   "form": "extract",
   "roles": [
    "spice",
    "sweet"
   ],
   "cuisines": [
    "universal"
   ],
   "cost": 3,
   "shelf": "pantry",
   "why": "A teaspoon makes date-sweetened baking read as dessert. Buy pure extract and skip anything cut with corn syrup or added sugar.",
   "flags": [
    "check-label"
   ],
   "swap": []
  },
  {
   "id": "whole-wheat-short-pasta",
   "name": "Whole wheat short pasta",
   "aka": [
    "ditalini",
    "tubetti",
    "whole wheat elbows",
    "whole wheat vermicelli"
   ],
   "category": "grains",
   "roles": [
    "base"
   ],
   "cuisines": [
    "french",
    "italian",
    "mediterranean"
   ],
   "cost": 1,
   "shelf": "pantry",
   "why": "Intact durum wheat instead of refined semolina. Small shapes hold their bite through a long simmer in soup, where regular pasta turns to mush.",
   "flags": [],
   "swap": [
    "farro",
    "whole-wheat-couscous"
   ],
   "form": "dried"
  },
  {
   "id": "cherry-tomatoes",
   "name": "Cherry tomatoes",
   "aka": [
    "grape tomatoes"
   ],
   "category": "vegetables",
   "form": "fresh",
   "roles": [
    "vegetable",
    "acid"
   ],
   "cuisines": [
    "italian",
    "mediterranean",
    "universal"
   ],
   "cost": 2,
   "shelf": "fresh",
   "why": "Roast whole until the skins split and they make their own dressing, no oil required.",
   "flags": [],
   "swap": [
    "fresh-tomatoes"
   ]
  },
  {
   "id": "hominy",
   "name": "Hominy",
   "aka": [
    "pozole corn",
    "nixtamalized corn"
   ],
   "category": "grains",
   "form": "canned, dried",
   "roles": [
    "base"
   ],
   "cuisines": [
    "mexican"
   ],
   "cost": 1,
   "shelf": "pantry",
   "why": "Corn kernels treated in an alkaline bath until they puff and split. The entire point of a pot of pozole.",
   "flags": [
    "check-label"
   ],
   "swap": []
  },
  {
   "id": "tomatillo",
   "name": "Tomatillo",
   "aka": [
    "husk tomato",
    "tomate verde"
   ],
   "category": "vegetables",
   "form": "fresh",
   "roles": [
    "base",
    "acid"
   ],
   "cuisines": [
    "mexican"
   ],
   "cost": 1,
   "shelf": "fresh",
   "why": "Papery husk hides a tart, bright fruit. Boiled and blended, it is the base of every green sauce.",
   "flags": [],
   "swap": []
  },
  {
   "id": "radishes",
   "name": "Radishes",
   "aka": [
    "red radish"
   ],
   "category": "vegetables",
   "form": "fresh",
   "roles": [
    "vegetable",
    "garnish"
   ],
   "cuisines": [
    "mexican",
    "universal"
   ],
   "cost": 1,
   "shelf": "fresh",
   "why": "Sliced paper-thin, they add the crunch a fried garnish would otherwise supply.",
   "flags": [],
   "swap": [
    "daikon-radish"
   ]
  },
  {
   "id": "aji-amarillo-paste",
   "name": "Aji amarillo paste",
   "aka": [
    "aji amarillo",
    "Peruvian yellow chile paste"
   ],
   "category": "chiles-fresh",
   "form": "paste",
   "roles": [
    "heat",
    "aromatic"
   ],
   "cuisines": [
    "peruvian"
   ],
   "cost": 2,
   "shelf": "fridge",
   "why": "Peru's everyday chile: fruity, floral, and only moderately hot, the color and backbone behind nearly every savory Peruvian dish.",
   "flags": [
    "check-label"
   ],
   "swap": [
    "habanero",
    "fresno"
   ]
  },
  {
   "id": "almond-flour",
   "name": "Almond flour",
   "aka": [
    "ground almonds",
    "almond meal"
   ],
   "category": "nuts-seeds",
   "form": "ground",
   "roles": [
    "thickener",
    "base"
   ],
   "cuisines": [
    "universal"
   ],
   "cost": 3,
   "shelf": "pantry",
   "why": "Blanched almonds ground fine. A whole-food stand-in for refined flour in batters and crusts, carrying fat and fiber instead of empty starch.",
   "flags": [
    "whole-food-fat"
   ],
   "swap": [
    "almonds"
   ]
  }
 ]
}