Recipe JSON Format

Use this format with AI tools, then paste/export JSON into BrewWeb import.

Required

  • name (string)

Type and enum rules

FieldTypeAllowed values / format
namestringRequired, non-empty
alcohol_typestringMead, Wine, Beer, Hard Cider
schedule_timezonestringIANA timezone, e.g. America/New_York
ingredientsarrayArray of ingredient objects
stepsarrayArray of step objects (or strings)
steps[].typestringprep, nutrient, feed, stabilize, package, other
steps[].time_of_daystringHH:MM 24-hour format
steps[].day_offsetnumber/stringDay number from start, e.g. 0, 1, 30
steps[].duration_minnumber/stringMinutes, e.g. 15, 60

Optional top-level fields

  • alcohol_type: Mead | Wine | Beer | Hard Cider
  • notes, water_type, aging_notes
  • schedule_timezone (IANA timezone, example: America/New_York)
  • Yeast and style fields: yeast_used, yeast_style, yeast_attenuation, yeast_temp, yeast_flocculation
  • Type details: mead/wine/beer/cider fields currently used in the UI

Ingredients format

{
  "ingredients": [
    {"name":"Honey", "amount":"15", "unit":"lb", "note":"Wildflower"},
    {"name":"Water", "amount":"4", "unit":"gallon"}
  ]
}

Steps format

{
  "steps": [
    {"description":"Mix must", "type":"prep", "day_offset":0, "time_of_day":"09:00", "duration_min":30},
    {"description":"Add nutrient", "type":"nutrient", "day_offset":1},
    {"description":"Stabilize", "type":"stabilize", "day_offset":30}
  ]
}

Single recipe example

{
  "name": "Traditional Mead 1 Gallon",
  "alcohol_type": "Mead",
  "notes": "Beginner recipe",
  "water_type": "Filtered Tap",
  "schedule_timezone": "America/New_York",
  "yeast_used": "Lalvin D47",
  "mead_target_og": "1.100",
  "mead_nutrients": "TOSNA 3.0 (Fermaid O)",
  "ingredients": [
    {"name":"Honey", "amount":"3", "unit":"lb"},
    {"name":"Water", "amount":"1", "unit":"gallon"}
  ],
  "steps": [
    {"description":"Mix must", "type":"prep", "day_offset":0},
    {"description":"Add nutrient", "type":"nutrient", "day_offset":1},
    {"description":"Add nutrient", "type":"nutrient", "day_offset":2},
    {"description":"Add nutrient", "type":"nutrient", "day_offset":3}
  ]
}

Multiple recipes example

[
  {"name":"Mead 1", "alcohol_type":"Mead"},
  {"name":"Cider 1", "alcohol_type":"Hard Cider"}
]

JSON Schema (draft 2020-12)

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": ["object", "array"],
  "description": "Single recipe object or array of recipe objects.",
  "$defs": {
    "ingredient": {
      "type": "object",
      "properties": {
        "name": {"type": "string"},
        "amount": {"type": ["string", "number"]},
        "unit": {"type": "string"},
        "note": {"type": "string"}
      },
      "required": ["name"],
      "additionalProperties": true
    },
    "step": {
      "oneOf": [
        {"type": "string"},
        {
          "type": "object",
          "properties": {
            "description": {"type": "string"},
            "type": {"type": "string", "enum": ["prep", "nutrient", "feed", "stabilize", "package", "other"]},
            "day_offset": {"type": ["string", "number", "integer"]},
            "time_of_day": {"type": "string", "pattern": "^([01][0-9]|2[0-3]):[0-5][0-9]$"},
            "duration_min": {"type": ["string", "number", "integer"]}
          },
          "additionalProperties": true
        }
      ]
    },
    "recipe": {
      "type": "object",
      "properties": {
        "name": {"type": "string", "minLength": 1},
        "alcohol_type": {"type": "string", "enum": ["Mead", "Wine", "Beer", "Hard Cider"]},
        "notes": {"type": "string"},
        "water_type": {"type": "string"},
        "aging_notes": {"type": "string"},
        "schedule_timezone": {"type": "string"},
        "ingredients": {"type": "array", "items": {"$ref": "#/$defs/ingredient"}},
        "steps": {"type": "array", "items": {"$ref": "#/$defs/step"}}
      },
      "required": ["name"],
      "additionalProperties": true
    }
  },
  "oneOf": [
    {"$ref": "#/$defs/recipe"},
    {"type": "array", "items": {"$ref": "#/$defs/recipe"}}
  ]
}

Prompt helper for AI

Convert the following recipe text into BrewWeb recipe import JSON.
Requirements:
- Return valid JSON only (no markdown).
- Use this schema:
  - required: name
  - alcohol_type one of: Mead, Wine, Beer, Hard Cider
  - ingredients[] objects: name, amount, unit, note
  - steps[] objects: description, type, day_offset, time_of_day (HH:MM), duration_min
- Include schedule_timezone when known.
- If multiple recipes are present, return a JSON array.