{
  "schemaVersion": "1.0",
  "meta": {
    "title": "SoilCommander Garden Layout Planner — UK crop knowledge base",
    "generatedOn": "2026-07-17",
    "provenance": "Built from a Gemini Deep Research report anchored on RHS (rhs.org.uk) and Garden Organic, UK conditions.",
    "layoutModel": "Intensive block / grid planting (equidistant spacing).",
    "unitPolicy": "Metric (cm, plants per m2). Month numbers 1-12, baseline Central UK.",
    "dataIntegrity": "No values invented. UNVERIFIED source fields are null and flagged. Derived values (block spacing, plants/m2 from in-row, harvest from days-to-maturity, season->month mapping) are labelled in each crop's 'flags'.",
    "nitrogenFixationNote": "Cross-source dispute: RHS presents legumes as fixing nitrogen that benefits neighbouring crops during the season (basis of 'Three Sisters'); Garden Organic states the legume uses that nitrogen for its own pods and only releases it when the plant is cut down and roots decompose. The tool should treat the Three Sisters pairing as Tier-1 for PHYSICAL support/shade, and label the in-season nitrogen benefit as disputed rather than asserting it.",
    "cropCount": 38
  },
  "rotationGroups": {
    "legumes": {
      "label": "Legumes",
      "note": "Nitrogen-fixing; brassicas benefit following them. Peas & beans."
    },
    "brassicas": {
      "label": "Brassicas",
      "note": "Clubroot & cabbage root fly risk; net & rotate. Cabbage, kale, roots like turnip/swede/radish/rocket."
    },
    "alliums": {
      "label": "Onion family",
      "note": "White rot persists in soil for years; long rotation. Onion, garlic, leek, shallot, spring onion."
    },
    "solanaceae": {
      "label": "Potato & tomato family",
      "note": "Blight-prone heavy feeders; keep apart & rotate hard. Potato, tomato, pepper, aubergine."
    },
    "roots": {
      "label": "Roots / umbellifers",
      "note": "Carrot fly risk. Carrot, parsnip, beetroot, celery, celeriac."
    },
    "cucurbits": {
      "label": "Cucurbits",
      "note": "Hungry, sprawling, frost-tender. Courgette, squash, pumpkin, cucumber."
    },
    "flexible": {
      "label": "Flexible / other",
      "note": "Low rotation constraint; useful gap-fillers. Lettuce, spinach, chard, sweetcorn."
    },
    "perennial": {
      "label": "Perennials",
      "note": "Pinned, out of rotation. Strawberry, rhubarb, asparagus."
    }
  },
  "companionPlantsGlossary": {
    "French marigold (Tagetes)": {
      "benefit": "Trap crop drawing whitefly away from tomatoes; roots also suppress some nematodes.",
      "tier": 1,
      "source": "https://www.gardenorganic.org.uk/expert-advice/how-to-grow/how-to-grow-flowers/companion-or-mixed-planting"
    },
    "Nasturtium": {
      "benefit": "Sacrificial trap crop that lures blackfly/aphids away from beans and brassicas.",
      "tier": 1,
      "source": "https://www.gardenorganic.org.uk/expert-advice/how-to-grow/how-to-grow-flowers/companion-or-mixed-planting"
    },
    "Clover / trefoil (living mulch)": {
      "benefit": "Undersowing brassicas disrupts the cabbage root fly's visual detection of the crop.",
      "tier": 1,
      "source": "https://www.rhs.org.uk/advice/grow-your-own/features/companion-planting"
    },
    "Sweet alyssum (Lobularia maritima)": {
      "benefit": "Nectar attracts hoverflies and parasitic wasps that predate aphids on lettuce.",
      "tier": 1,
      "source": "https://www.rhs.org.uk/advice/grow-your-own/features/companion-planting"
    },
    "Basil": {
      "benefit": "Traditionally interplanted with tomatoes; limited empirical support for pest deterrence.",
      "tier": 2,
      "source": "https://www.gardenorganic.org.uk/expert-advice/how-to-grow/how-to-grow-flowers/companion-or-mixed-planting"
    }
  },
  "crops": [
    {
      "id": "tomato",
      "name": "Tomato (outdoor / cordon)",
      "botanicalName": "Solanum lycopersicum",
      "family": "Solanaceae",
      "rotationGroup": "solanaceae",
      "rotationRole": "fruiting_heavy_feeder",
      "nitrogenFixer": false,
      "feeder": null,
      "feederConfidence": "unverified",
      "sun": "full",
      "heightClass": "tall",
      "habit": "cordon",
      "matureHeightCm": null,
      "matureSpreadCm": null,
      "support": true,
      "supportNote": "Tall canes or string; heavy fruit load.",
      "perennial": false,
      "protectedCropOnly": false,
      "sowingMethod": "indoors",
      "spacing": {
        "inRowCm": {
          "min": 35,
          "max": 45
        },
        "betweenRowCm": null,
        "plantsPerSqMSource": null,
        "planningPlantsPerSqM": 4.9,
        "blockSpacingCm": 45,
        "confidence": "derived_inrow"
      },
      "calendar": {
        "sow": [
          2,
          3,
          4
        ],
        "plantOut": [
          5
        ],
        "harvest": [
          7,
          8,
          9
        ],
        "protect": [
          5
        ],
        "daysToMaturity": null,
        "confidence": "explicit",
        "seasonMapped": false,
        "harvestDerived": false
      },
      "pests": [
        {
          "name": "Tomato blight",
          "type": "disease",
          "organicControl": "Use resistant cultivars; keep foliage dry; rotate away from potatoes.",
          "watchMonths": [
            6,
            7,
            8,
            9
          ],
          "source": "https://www.rhs.org.uk/vegetables/tomatoes/grow-your-own"
        },
        {
          "name": "Blossom end rot",
          "type": "disorder",
          "organicControl": "Water consistently to maintain calcium uptake.",
          "watchMonths": [
            7,
            8,
            9
          ],
          "source": "https://www.rhs.org.uk/advice/grow-your-own/in-month/september-jobs"
        }
      ],
      "companions": {
        "allies": [
          {
            "partner": "French marigold (Tagetes)",
            "tier": 1,
            "reason": "Trap crop draws whitefly off the foliage.",
            "inCropSet": false,
            "source": "https://www.gardenorganic.org.uk/expert-advice/how-to-grow/how-to-grow-flowers/companion-or-mixed-planting"
          },
          {
            "partner": "Basil",
            "tier": 2,
            "reason": "Traditional pairing; weak evidence for pest deterrence.",
            "inCropSet": false,
            "source": "https://www.gardenorganic.org.uk/expert-advice/how-to-grow/how-to-grow-flowers/companion-or-mixed-planting"
          }
        ],
        "avoid": [
          {
            "partner": "potato",
            "tier": 3,
            "reason": "Shared susceptibility to late blight (Phytophthora infestans).",
            "inCropSet": true,
            "source": "https://www.rhs.org.uk/vegetables/tomatoes/grow-your-own"
          }
        ]
      },
      "fieldNotes": null,
      "flags": [
        "spacing_derived_from_inrow",
        "feeder_unverified_in_source"
      ],
      "sources": [
        "https://www.rhs.org.uk/vegetables/tomatoes/grow-your-own",
        "https://www.rhs.org.uk/advice/grow-your-own/containers/may-edible-container-idea"
      ]
    },
    {
      "id": "potato-maincrop",
      "name": "Potato (maincrop)",
      "botanicalName": "Solanum tuberosum",
      "family": "Solanaceae",
      "rotationGroup": "solanaceae",
      "rotationRole": "tuber_heavy_feeder",
      "nitrogenFixer": false,
      "feeder": null,
      "feederConfidence": "unverified",
      "sun": "full",
      "heightClass": "medium",
      "habit": "mounded",
      "matureHeightCm": null,
      "matureSpreadCm": null,
      "support": false,
      "supportNote": "No support; earth up stems as they grow.",
      "perennial": false,
      "protectedCropOnly": false,
      "sowingMethod": "direct",
      "spacing": {
        "inRowCm": {
          "min": 30,
          "max": 38
        },
        "betweenRowCm": {
          "min": 38,
          "max": 50
        },
        "plantsPerSqMSource": {
          "min": 5.2,
          "max": 8.7
        },
        "planningPlantsPerSqM": 6.0,
        "blockSpacingCm": 41,
        "confidence": "verified"
      },
      "calendar": {
        "sow": [
          4
        ],
        "plantOut": [
          4
        ],
        "harvest": [
          8,
          9,
          10
        ],
        "protect": [
          6,
          7,
          8,
          9
        ],
        "daysToMaturity": null,
        "confidence": "explicit",
        "seasonMapped": false,
        "harvestDerived": false
      },
      "pests": [
        {
          "name": "Potato blight",
          "type": "disease",
          "organicControl": "Remove top growth at first sign; grow certified seed; rotate.",
          "watchMonths": [
            6,
            7,
            8
          ],
          "source": "https://www.rhs.org.uk/advice/grow-your-own/features/spring-potato-tips"
        },
        {
          "name": "Potato scab",
          "type": "disease",
          "organicControl": "Rotate crops; avoid dry soil; add fresh compost.",
          "watchMonths": [
            8,
            9
          ],
          "source": "https://www.rhs.org.uk/advice/grow-your-own/features/spring-potato-tips"
        }
      ],
      "companions": {
        "allies": [],
        "avoid": [
          {
            "partner": "tomato",
            "tier": 3,
            "reason": "Shared blight (Phytophthora infestans); never co-locate.",
            "inCropSet": true,
            "source": "https://www.rhs.org.uk/vegetables/tomatoes/grow-your-own"
          }
        ]
      },
      "fieldNotes": null,
      "flags": [
        "feeder_unverified_in_source"
      ],
      "sources": [
        "https://www.rhs.org.uk/vegetables/potatoes/grow-your-own",
        "https://www.rhs.org.uk/advice/grow-your-own/features/spring-potato-tips",
        "https://www.rhs.org.uk/education-learning/school-gardening/resources/food-growing/vegetable-crop-planner"
      ]
    },
    {
      "id": "carrot",
      "name": "Carrot",
      "botanicalName": "Daucus carota",
      "family": "Apiaceae",
      "rotationGroup": "roots",
      "rotationRole": "root_light_feeder",
      "nitrogenFixer": false,
      "feeder": "light",
      "feederConfidence": "verified",
      "sun": "full",
      "heightClass": "low",
      "habit": "root",
      "matureHeightCm": null,
      "matureSpreadCm": null,
      "support": false,
      "supportNote": null,
      "perennial": false,
      "protectedCropOnly": false,
      "sowingMethod": "direct",
      "spacing": {
        "inRowCm": {
          "min": 5,
          "max": 7.5
        },
        "betweenRowCm": {
          "min": 15,
          "max": 30
        },
        "plantsPerSqMSource": {
          "min": 33,
          "max": 133
        },
        "planningPlantsPerSqM": 100.0,
        "blockSpacingCm": 10,
        "confidence": "verified"
      },
      "calendar": {
        "sow": [
          2,
          3,
          4,
          5,
          6,
          7
        ],
        "plantOut": [],
        "harvest": [
          5,
          6,
          7,
          8,
          9,
          10
        ],
        "protect": [
          4,
          5,
          6,
          7,
          8,
          9
        ],
        "daysToMaturity": 90,
        "confidence": "explicit",
        "seasonMapped": false,
        "harvestDerived": true
      },
      "pests": [
        {
          "name": "Carrot fly",
          "type": "pest",
          "organicControl": "Cover with fine insect-proof mesh/fleece; avoid thinning in still air; resistant cultivars.",
          "watchMonths": [
            4,
            5,
            6,
            7,
            8,
            9
          ],
          "source": "https://www.rhs.org.uk/vegetables/carrots/grow-your-own"
        }
      ],
      "companions": {
        "allies": [
          {
            "partner": "onion",
            "tier": 2,
            "reason": "Traditional scent-masking; trials inconsistent — mesh is more reliable.",
            "inCropSet": true,
            "source": "https://www.gardenorganic.org.uk/expert-advice/how-to-grow/how-to-grow-flowers/companion-or-mixed-planting"
          }
        ],
        "avoid": []
      },
      "fieldNotes": null,
      "flags": [
        "harvest_derived_from_days_to_maturity"
      ],
      "sources": [
        "https://www.rhs.org.uk/vegetables/carrots/grow-your-own"
      ]
    },
    {
      "id": "onion-sets",
      "name": "Onion (from sets)",
      "botanicalName": "Allium cepa",
      "family": "Amaryllidaceae",
      "rotationGroup": "alliums",
      "rotationRole": "allium",
      "nitrogenFixer": false,
      "feeder": null,
      "feederConfidence": "unverified",
      "sun": "full",
      "heightClass": "low",
      "habit": "bulb",
      "matureHeightCm": null,
      "matureSpreadCm": null,
      "support": false,
      "supportNote": null,
      "perennial": false,
      "protectedCropOnly": false,
      "sowingMethod": "direct",
      "spacing": {
        "inRowCm": {
          "min": 5,
          "max": 15
        },
        "betweenRowCm": {
          "min": 20,
          "max": 30
        },
        "plantsPerSqMSource": {
          "min": 22,
          "max": 100
        },
        "planningPlantsPerSqM": 60.0,
        "blockSpacingCm": 13,
        "confidence": "verified"
      },
      "calendar": {
        "sow": [
          1,
          2,
          3,
          4
        ],
        "plantOut": [
          3,
          4,
          9
        ],
        "harvest": [],
        "protect": [
          3,
          4,
          9
        ],
        "daysToMaturity": null,
        "confidence": "explicit",
        "seasonMapped": false,
        "harvestDerived": false
      },
      "pests": [
        {
          "name": "Birds",
          "type": "pest",
          "organicControl": "Fleece/net until sets are rooted (birds tug them out).",
          "watchMonths": [
            3,
            4,
            9
          ],
          "source": "https://www.rhs.org.uk/vegetables/onions/grow-your-own"
        },
        {
          "name": "Onion white rot",
          "type": "disease",
          "organicControl": "No cure in soil — enforce strict long rotation.",
          "watchMonths": [
            6,
            7,
            8
          ],
          "source": "https://www.rhs.org.uk/advice/grow-your-own/in-month/september-jobs"
        }
      ],
      "companions": {
        "allies": [
          {
            "partner": "carrot",
            "tier": 2,
            "reason": "Traditional reciprocal scent-masking; mixed evidence.",
            "inCropSet": true,
            "source": "https://www.gardenorganic.org.uk/expert-advice/how-to-grow/how-to-grow-flowers/companion-or-mixed-planting"
          }
        ],
        "avoid": []
      },
      "fieldNotes": "Harvest month UNVERIFIED in source (typically mid/late summer).",
      "flags": [
        "harvest_months_unverified",
        "feeder_unverified_in_source"
      ],
      "sources": [
        "https://www.rhs.org.uk/vegetables/onions/grow-your-own"
      ]
    },
    {
      "id": "shallot",
      "name": "Shallot",
      "botanicalName": "Allium cepa var. aggregatum",
      "family": "Amaryllidaceae",
      "rotationGroup": "alliums",
      "rotationRole": "allium",
      "nitrogenFixer": false,
      "feeder": null,
      "feederConfidence": "unverified",
      "sun": "full",
      "heightClass": "low",
      "habit": "bulb",
      "matureHeightCm": null,
      "matureSpreadCm": null,
      "support": false,
      "supportNote": null,
      "perennial": false,
      "protectedCropOnly": false,
      "sowingMethod": "direct",
      "spacing": {
        "inRowCm": {
          "min": 10,
          "max": 10
        },
        "betweenRowCm": {
          "min": 25,
          "max": 25
        },
        "plantsPerSqMSource": {
          "min": 40,
          "max": 40
        },
        "planningPlantsPerSqM": 40.0,
        "blockSpacingCm": 16,
        "confidence": "verified"
      },
      "calendar": {
        "sow": [
          2,
          3,
          4
        ],
        "plantOut": [
          3,
          4,
          5
        ],
        "harvest": [
          6,
          7,
          8
        ],
        "protect": [
          3,
          4,
          5
        ],
        "daysToMaturity": null,
        "confidence": "seasonMapped",
        "seasonMapped": true,
        "harvestDerived": false
      },
      "pests": [
        {
          "name": "Onion neck rot",
          "type": "disease",
          "organicControl": "Cure and dry-store well; usually appears in storage.",
          "watchMonths": [
            12,
            1
          ],
          "source": "https://www.rhs.org.uk/vegetables/shallots/grow-your-own"
        },
        {
          "name": "Onion fly / leek moth",
          "type": "pest",
          "organicControl": "Physical insect-proof mesh.",
          "watchMonths": [
            5,
            6,
            7
          ],
          "source": "https://www.rhs.org.uk/vegetables/shallots/grow-your-own"
        }
      ],
      "companions": {
        "allies": [],
        "avoid": []
      },
      "fieldNotes": "Companions UNVERIFIED in source.",
      "flags": [
        "calendar_season_mapped",
        "feeder_unverified_in_source",
        "companions_unverified"
      ],
      "sources": [
        "https://www.rhs.org.uk/vegetables/shallots/grow-your-own"
      ]
    },
    {
      "id": "spring-onion",
      "name": "Spring onion",
      "botanicalName": "Allium fistulosum / A. cepa",
      "family": "Amaryllidaceae",
      "rotationGroup": "alliums",
      "rotationRole": "allium",
      "nitrogenFixer": false,
      "feeder": null,
      "feederConfidence": "unverified",
      "sun": "full",
      "heightClass": "low",
      "habit": "bulb",
      "matureHeightCm": null,
      "matureSpreadCm": null,
      "support": false,
      "supportNote": null,
      "perennial": false,
      "protectedCropOnly": false,
      "sowingMethod": "direct",
      "spacing": {
        "inRowCm": {
          "min": 2.5,
          "max": 2.5
        },
        "betweenRowCm": {
          "min": 20,
          "max": 20
        },
        "plantsPerSqMSource": {
          "min": 200,
          "max": 200
        },
        "planningPlantsPerSqM": 200.0,
        "blockSpacingCm": 7,
        "confidence": "verified"
      },
      "calendar": {
        "sow": [
          3,
          4,
          5,
          6,
          7,
          8
        ],
        "plantOut": [
          4,
          5
        ],
        "harvest": [
          3,
          4,
          5,
          6,
          7,
          8,
          9
        ],
        "protect": [],
        "daysToMaturity": null,
        "confidence": "explicit",
        "seasonMapped": false,
        "harvestDerived": false
      },
      "pests": [
        {
          "name": "Onion downy mildew",
          "type": "disease",
          "organicControl": "Avoid dense sowing; keep airflow.",
          "watchMonths": [
            6,
            7,
            8
          ],
          "source": "https://www.rhs.org.uk/vegetables/salad-onions/grow-your-own"
        },
        {
          "name": "Slugs",
          "type": "pest",
          "organicControl": "Biological/nematode control in damp weather.",
          "watchMonths": [
            3,
            4,
            5
          ],
          "source": "https://www.rhs.org.uk/vegetables/salad-onions/grow-your-own"
        }
      ],
      "companions": {
        "allies": [],
        "avoid": []
      },
      "fieldNotes": "Companions UNVERIFIED. Sow successionally for continuity.",
      "flags": [
        "feeder_unverified_in_source",
        "companions_unverified"
      ],
      "sources": [
        "https://www.rhs.org.uk/vegetables/salad-onions/grow-your-own"
      ]
    },
    {
      "id": "leek",
      "name": "Leek",
      "botanicalName": "Allium porrum",
      "family": "Amaryllidaceae",
      "rotationGroup": "alliums",
      "rotationRole": "allium",
      "nitrogenFixer": false,
      "feeder": null,
      "feederConfidence": "unverified",
      "sun": "full-or-partial",
      "heightClass": "medium",
      "habit": "upright",
      "matureHeightCm": {
        "min": 10,
        "max": 50
      },
      "matureSpreadCm": {
        "min": 10,
        "max": 50
      },
      "support": false,
      "supportNote": "No support; earth up to blanch stems.",
      "perennial": false,
      "protectedCropOnly": false,
      "sowingMethod": "direct",
      "spacing": {
        "inRowCm": {
          "min": 15,
          "max": 20
        },
        "betweenRowCm": {
          "min": 30,
          "max": 30
        },
        "plantsPerSqMSource": {
          "min": 16.6,
          "max": 22
        },
        "planningPlantsPerSqM": 20.0,
        "blockSpacingCm": 22,
        "confidence": "verified"
      },
      "calendar": {
        "sow": [
          3,
          4
        ],
        "plantOut": [
          5,
          6,
          7
        ],
        "harvest": [
          9,
          10,
          11,
          12,
          1,
          2
        ],
        "protect": [],
        "daysToMaturity": null,
        "confidence": "explicit",
        "seasonMapped": false,
        "harvestDerived": false
      },
      "pests": [
        {
          "name": "Leek rust",
          "type": "disease",
          "organicControl": "Resistant cultivars; avoid crowding for airflow.",
          "watchMonths": [
            7,
            8,
            9
          ],
          "source": "https://www.rhs.org.uk/vegetables/leeks/grow-your-own"
        },
        {
          "name": "Allium leaf miner",
          "type": "pest",
          "organicControl": "Insect-proof mesh over the crop.",
          "watchMonths": [
            3,
            4,
            10,
            11
          ],
          "source": "https://www.rhs.org.uk/vegetables/leeks/grow-your-own"
        }
      ],
      "companions": {
        "allies": [],
        "avoid": []
      },
      "fieldNotes": "Companions UNVERIFIED. Long bed occupancy (autumn-winter standing crop).",
      "flags": [
        "feeder_unverified_in_source",
        "companions_unverified"
      ],
      "sources": [
        "https://www.rhs.org.uk/vegetables/leeks/grow-your-own",
        "https://www.rhs.org.uk/plants/106043/allium-porrum/details"
      ]
    },
    {
      "id": "garlic",
      "name": "Garlic",
      "botanicalName": "Allium sativum",
      "family": "Amaryllidaceae",
      "rotationGroup": "alliums",
      "rotationRole": "allium",
      "nitrogenFixer": false,
      "feeder": null,
      "feederConfidence": "unverified",
      "sun": "full",
      "heightClass": "low",
      "habit": "bulb",
      "matureHeightCm": null,
      "matureSpreadCm": null,
      "support": false,
      "supportNote": null,
      "perennial": false,
      "protectedCropOnly": false,
      "sowingMethod": "direct",
      "spacing": {
        "inRowCm": {
          "min": 15,
          "max": 15
        },
        "betweenRowCm": {
          "min": 30,
          "max": 30
        },
        "plantsPerSqMSource": {
          "min": 22,
          "max": 22
        },
        "planningPlantsPerSqM": 22.0,
        "blockSpacingCm": 21,
        "confidence": "verified"
      },
      "calendar": {
        "sow": [
          11,
          2,
          3
        ],
        "plantOut": [
          11,
          2,
          3
        ],
        "harvest": [
          6,
          7
        ],
        "protect": [
          12,
          1,
          2
        ],
        "daysToMaturity": null,
        "confidence": "explicit",
        "seasonMapped": false,
        "harvestDerived": false
      },
      "pests": [
        {
          "name": "Slugs",
          "type": "pest",
          "organicControl": "Biological control on new spring growth.",
          "watchMonths": [
            3,
            4
          ],
          "source": "https://www.rhs.org.uk/plants/196810/allium-sativum-arno/details"
        },
        {
          "name": "Leek rust",
          "type": "disease",
          "organicControl": "Space adequately for airflow.",
          "watchMonths": [
            6,
            7
          ],
          "source": "https://www.rhs.org.uk/plants/196810/allium-sativum-arno/details"
        }
      ],
      "companions": {
        "allies": [
          {
            "partner": "strawberry",
            "tier": 2,
            "reason": "Chopped garlic leaves theorised to mask scent and repel aphids; weak evidence.",
            "inCropSet": true,
            "source": "https://www.rhs.org.uk/advice/grow-your-own/features/companion-planting"
          }
        ],
        "avoid": []
      },
      "fieldNotes": "Autumn planting needs cold vernalisation. Long bed occupancy.",
      "flags": [
        "feeder_unverified_in_source"
      ],
      "sources": [
        "https://www.rhs.org.uk/vegetables/garlic/grow-your-own",
        "https://www.rhs.org.uk/education-learning/school-gardening/resources/food-growing/vegetable-crop-planner"
      ]
    },
    {
      "id": "runner-bean",
      "name": "Runner bean",
      "botanicalName": "Phaseolus coccineus",
      "family": "Fabaceae",
      "rotationGroup": "legumes",
      "rotationRole": "legume_nfixer",
      "nitrogenFixer": true,
      "feeder": null,
      "feederConfidence": "unverified",
      "sun": "full",
      "heightClass": "tall",
      "habit": "climber",
      "matureHeightCm": null,
      "matureSpreadCm": null,
      "support": true,
      "supportNote": "Tall wigwam/A-frame ~2 m. Place on north edge.",
      "perennial": false,
      "protectedCropOnly": false,
      "sowingMethod": "indoors",
      "spacing": {
        "inRowCm": null,
        "betweenRowCm": null,
        "plantsPerSqMSource": null,
        "planningPlantsPerSqM": null,
        "blockSpacingCm": null,
        "confidence": "unverified"
      },
      "calendar": {
        "sow": [
          4,
          5
        ],
        "plantOut": [
          5,
          6
        ],
        "harvest": [
          7,
          8,
          9,
          10
        ],
        "protect": [
          5
        ],
        "daysToMaturity": null,
        "confidence": "explicit",
        "seasonMapped": false,
        "harvestDerived": false
      },
      "pests": [
        {
          "name": "Blackfly / aphids",
          "type": "pest",
          "organicControl": "Pinch out growing tips once at top of supports.",
          "watchMonths": [
            6,
            7,
            8
          ],
          "source": "https://www.rhs.org.uk/vegetables/runner-beans/grow-your-own"
        },
        {
          "name": "Bean rust",
          "type": "disease",
          "organicControl": "Clear plant debris; rotate.",
          "watchMonths": [
            8,
            9
          ],
          "source": "https://www.rhs.org.uk/vegetables/runner-beans/grow-your-own"
        }
      ],
      "companions": {
        "allies": [
          {
            "partner": "sweetcorn",
            "tier": 1,
            "reason": "Three Sisters: corn provides a climbing frame (in-season N benefit disputed).",
            "inCropSet": true,
            "source": "https://www.rhs.org.uk/advice/grow-your-own/features/three-sisters"
          },
          {
            "partner": "pumpkin",
            "tier": 1,
            "reason": "Three Sisters: squash/pumpkin shades soil, retains moisture.",
            "inCropSet": true,
            "source": "https://www.rhs.org.uk/advice/grow-your-own/features/three-sisters"
          },
          {
            "partner": "Nasturtium",
            "tier": 1,
            "reason": "Trap crop for blackfly.",
            "inCropSet": false,
            "source": "https://www.rhs.org.uk/advice/grow-your-own/features/three-sisters"
          }
        ],
        "avoid": []
      },
      "fieldNotes": "SPACING UNVERIFIED (sow 2 per cane, thin to 1). Needs spacing before auto-placement.",
      "flags": [
        "spacing_unverified_needs_input",
        "feeder_unverified_in_source"
      ],
      "sources": [
        "https://www.rhs.org.uk/vegetables/runner-beans/grow-your-own"
      ]
    },
    {
      "id": "french-bean-dwarf",
      "name": "French bean (dwarf)",
      "botanicalName": "Phaseolus vulgaris",
      "family": "Fabaceae",
      "rotationGroup": "legumes",
      "rotationRole": "legume_nfixer",
      "nitrogenFixer": true,
      "feeder": null,
      "feederConfidence": "unverified",
      "sun": "full",
      "heightClass": "medium",
      "habit": "bush",
      "matureHeightCm": {
        "min": 45,
        "max": 45
      },
      "matureSpreadCm": null,
      "support": false,
      "supportNote": "Short twigs keep pods off damp soil.",
      "perennial": false,
      "protectedCropOnly": false,
      "sowingMethod": "indoors",
      "spacing": {
        "inRowCm": {
          "min": 10,
          "max": 15
        },
        "betweenRowCm": {
          "min": 45,
          "max": 45
        },
        "plantsPerSqMSource": {
          "min": 14.8,
          "max": 22.2
        },
        "planningPlantsPerSqM": 18.0,
        "blockSpacingCm": 24,
        "confidence": "verified"
      },
      "calendar": {
        "sow": [
          4,
          5,
          6
        ],
        "plantOut": [
          5,
          6
        ],
        "harvest": [
          7,
          8
        ],
        "protect": [
          5
        ],
        "daysToMaturity": null,
        "confidence": "seasonMapped",
        "seasonMapped": true,
        "harvestDerived": false
      },
      "pests": [
        {
          "name": "Bean seed fly",
          "type": "pest",
          "organicControl": "Exclude early sowings with fleece.",
          "watchMonths": [
            4,
            5
          ],
          "source": "https://www.rhs.org.uk/vegetables/french-beans/grow-your-own"
        },
        {
          "name": "Bean rust",
          "type": "disease",
          "organicControl": "Strict crop rotation.",
          "watchMonths": [
            8,
            9
          ],
          "source": "https://www.rhs.org.uk/vegetables/french-beans/grow-your-own"
        }
      ],
      "companions": {
        "allies": [
          {
            "partner": "Nasturtium",
            "tier": 1,
            "reason": "Trap crop for blackfly.",
            "inCropSet": false,
            "source": "https://www.gardenorganic.org.uk/expert-advice/how-to-grow/how-to-grow-flowers/companion-or-mixed-planting"
          }
        ],
        "avoid": []
      },
      "fieldNotes": null,
      "flags": [
        "calendar_season_mapped",
        "feeder_unverified_in_source"
      ],
      "sources": [
        "https://www.rhs.org.uk/vegetables/french-beans/grow-your-own"
      ]
    },
    {
      "id": "broad-bean",
      "name": "Broad bean",
      "botanicalName": "Vicia faba",
      "family": "Fabaceae",
      "rotationGroup": "legumes",
      "rotationRole": "legume_nfixer",
      "nitrogenFixer": true,
      "feeder": null,
      "feederConfidence": "unverified",
      "sun": "full",
      "heightClass": "medium",
      "habit": "upright",
      "matureHeightCm": {
        "min": 50,
        "max": 50
      },
      "matureSpreadCm": null,
      "support": true,
      "supportNote": "Corner stakes linked with string.",
      "perennial": false,
      "protectedCropOnly": false,
      "sowingMethod": "direct",
      "spacing": {
        "inRowCm": {
          "min": 15,
          "max": 23
        },
        "betweenRowCm": {
          "min": 45,
          "max": 45
        },
        "plantsPerSqMSource": {
          "min": 9.6,
          "max": 14.8
        },
        "planningPlantsPerSqM": 12.0,
        "blockSpacingCm": 29,
        "confidence": "verified"
      },
      "calendar": {
        "sow": [
          11,
          12,
          1,
          3,
          4
        ],
        "plantOut": [
          3
        ],
        "harvest": [
          6,
          7,
          8
        ],
        "protect": [
          11,
          12,
          1,
          2
        ],
        "daysToMaturity": null,
        "confidence": "explicit",
        "seasonMapped": false,
        "harvestDerived": false
      },
      "pests": [
        {
          "name": "Blackfly",
          "type": "pest",
          "organicControl": "Pinch out shoot tips once first pods set.",
          "watchMonths": [
            4,
            5,
            6
          ],
          "source": "https://www.rhs.org.uk/vegetables/broad-beans/grow-your-own"
        },
        {
          "name": "Pea & bean weevil",
          "type": "pest",
          "organicControl": "Tolerate leaf-notch damage on established plants.",
          "watchMonths": [
            3,
            4,
            5
          ],
          "source": "https://www.rhs.org.uk/vegetables/broad-beans/grow-your-own"
        }
      ],
      "companions": {
        "allies": [
          {
            "partner": "Nasturtium",
            "tier": 1,
            "reason": "Trap crop for blackfly.",
            "inCropSet": false,
            "source": "https://www.gardenorganic.org.uk/expert-advice/how-to-grow/how-to-grow-flowers/companion-or-mixed-planting"
          }
        ],
        "avoid": []
      },
      "fieldNotes": "'Aquadulce Claudia' type can be autumn-sown to overwinter in mild areas.",
      "flags": [
        "feeder_unverified_in_source"
      ],
      "sources": [
        "https://www.rhs.org.uk/vegetables/broad-beans/grow-your-own"
      ]
    },
    {
      "id": "pea",
      "name": "Pea",
      "botanicalName": "Pisum sativum",
      "family": "Fabaceae",
      "rotationGroup": "legumes",
      "rotationRole": "legume_nfixer",
      "nitrogenFixer": true,
      "feeder": null,
      "feederConfidence": "unverified",
      "sun": "full",
      "heightClass": "tall",
      "habit": "climber",
      "matureHeightCm": {
        "min": 45,
        "max": 180
      },
      "matureSpreadCm": null,
      "support": true,
      "supportNote": "Pea sticks or netting; place taller types on north edge.",
      "perennial": false,
      "protectedCropOnly": false,
      "sowingMethod": "direct",
      "spacing": {
        "inRowCm": {
          "min": 5,
          "max": 10
        },
        "betweenRowCm": {
          "min": 60,
          "max": 60
        },
        "plantsPerSqMSource": {
          "min": 33,
          "max": 33
        },
        "planningPlantsPerSqM": 33.0,
        "blockSpacingCm": 17,
        "confidence": "verified"
      },
      "calendar": {
        "sow": [
          3,
          4,
          5,
          6
        ],
        "plantOut": [
          3,
          4
        ],
        "harvest": [
          6,
          7,
          8,
          9
        ],
        "protect": [
          3,
          4
        ],
        "daysToMaturity": null,
        "confidence": "explicit",
        "seasonMapped": false,
        "harvestDerived": false
      },
      "pests": [
        {
          "name": "Mice",
          "type": "pest",
          "organicControl": "Start indoors (e.g. in guttering) to protect seed.",
          "watchMonths": [
            3,
            4
          ],
          "source": "https://www.rhs.org.uk/vegetables/peas/grow-your-own"
        },
        {
          "name": "Powdery mildew",
          "type": "disease",
          "organicControl": "Deep, consistent watering in dry spells.",
          "watchMonths": [
            7,
            8
          ],
          "source": "https://www.rhs.org.uk/vegetables/peas/grow-your-own"
        }
      ],
      "companions": {
        "allies": [],
        "avoid": []
      },
      "fieldNotes": "Companions UNVERIFIED.",
      "flags": [
        "feeder_unverified_in_source",
        "companions_unverified"
      ],
      "sources": [
        "https://www.rhs.org.uk/vegetables/peas/grow-your-own"
      ]
    },
    {
      "id": "cabbage",
      "name": "Cabbage (summer/autumn)",
      "botanicalName": "Brassica oleracea (Capitata)",
      "family": "Brassicaceae",
      "rotationGroup": "brassicas",
      "rotationRole": "brassica_heavy_feeder",
      "nitrogenFixer": false,
      "feeder": null,
      "feederConfidence": "unverified",
      "sun": "full",
      "heightClass": "medium",
      "habit": "head",
      "matureHeightCm": {
        "min": 10,
        "max": 50
      },
      "matureSpreadCm": {
        "min": 10,
        "max": 50
      },
      "support": false,
      "supportNote": "No support; firm soil essential.",
      "perennial": false,
      "protectedCropOnly": false,
      "sowingMethod": "module",
      "spacing": {
        "inRowCm": {
          "min": 45,
          "max": 60
        },
        "betweenRowCm": {
          "min": 60,
          "max": 60
        },
        "plantsPerSqMSource": {
          "min": 2.7,
          "max": 3.7
        },
        "planningPlantsPerSqM": 3.0,
        "blockSpacingCm": 58,
        "confidence": "verified"
      },
      "calendar": {
        "sow": [
          2,
          3,
          4,
          5,
          6
        ],
        "plantOut": [
          5,
          6,
          7
        ],
        "harvest": [
          7,
          8,
          9,
          10
        ],
        "protect": [
          3,
          4,
          5,
          6,
          7
        ],
        "daysToMaturity": null,
        "confidence": "explicit",
        "seasonMapped": false,
        "harvestDerived": false
      },
      "pests": [
        {
          "name": "Cabbage root fly",
          "type": "pest",
          "organicControl": "Fine mesh or cabbage collars at the stem base.",
          "watchMonths": [
            5,
            6,
            7
          ],
          "source": "https://www.rhs.org.uk/vegetables/cabbages/grow-your-own"
        },
        {
          "name": "Club root",
          "type": "disease",
          "organicControl": "Rotate; lime acidic soil; never repeat brassicas in same bed.",
          "watchMonths": [
            6,
            7,
            8,
            9
          ],
          "source": "https://www.rhs.org.uk/vegetables/cabbages/grow-your-own"
        }
      ],
      "companions": {
        "allies": [
          {
            "partner": "Clover / trefoil (living mulch)",
            "tier": 1,
            "reason": "Undersowing disrupts cabbage root fly's visual detection.",
            "inCropSet": false,
            "source": "https://www.rhs.org.uk/advice/grow-your-own/features/companion-planting"
          }
        ],
        "avoid": []
      },
      "fieldNotes": null,
      "flags": [
        "feeder_unverified_in_source"
      ],
      "sources": [
        "https://www.rhs.org.uk/vegetables/cabbages/grow-your-own"
      ]
    },
    {
      "id": "kale",
      "name": "Kale",
      "botanicalName": "Brassica oleracea (Acephala)",
      "family": "Brassicaceae",
      "rotationGroup": "brassicas",
      "rotationRole": "brassica_heavy_feeder",
      "nitrogenFixer": false,
      "feeder": null,
      "feederConfidence": "unverified",
      "sun": "full-or-partial",
      "heightClass": "medium",
      "habit": "leafy",
      "matureHeightCm": null,
      "matureSpreadCm": null,
      "support": false,
      "supportNote": null,
      "perennial": false,
      "protectedCropOnly": false,
      "sowingMethod": "direct",
      "spacing": {
        "inRowCm": {
          "min": 30,
          "max": 30
        },
        "betweenRowCm": null,
        "plantsPerSqMSource": null,
        "planningPlantsPerSqM": 11.1,
        "blockSpacingCm": 30,
        "confidence": "derived_inrow"
      },
      "calendar": {
        "sow": [
          5,
          6
        ],
        "plantOut": [
          6,
          7
        ],
        "harvest": [
          11,
          12,
          1,
          2
        ],
        "protect": [],
        "daysToMaturity": null,
        "confidence": "seasonMapped",
        "seasonMapped": true,
        "harvestDerived": false
      },
      "pests": [
        {
          "name": "Cabbage root fly",
          "type": "pest",
          "organicControl": "Insect-proof mesh; collars.",
          "watchMonths": [
            5,
            6,
            7
          ],
          "source": "https://www.rhs.org.uk/advice/grow-your-own/features/companion-planting"
        }
      ],
      "companions": {
        "allies": [
          {
            "partner": "Clover / trefoil (living mulch)",
            "tier": 1,
            "reason": "Disrupts cabbage root fly detection.",
            "inCropSet": false,
            "source": "https://www.rhs.org.uk/advice/grow-your-own/features/companion-planting"
          }
        ],
        "avoid": []
      },
      "fieldNotes": "In-row 30 cm (dwarf) is the only sourced spacing; between-row UNVERIFIED. Key 'hungry gap' winter crop.",
      "flags": [
        "spacing_derived_from_inrow",
        "calendar_season_mapped",
        "feeder_unverified_in_source"
      ],
      "sources": [
        "https://www.rhs.org.uk/vegetables/choosing-mini-vegetables"
      ]
    },
    {
      "id": "broccoli-calabrese",
      "name": "Broccoli / calabrese",
      "botanicalName": "Brassica oleracea (Italica)",
      "family": "Brassicaceae",
      "rotationGroup": "brassicas",
      "rotationRole": "brassica_heavy_feeder",
      "nitrogenFixer": false,
      "feeder": null,
      "feederConfidence": "unverified",
      "sun": "full",
      "heightClass": "medium",
      "habit": "head",
      "matureHeightCm": null,
      "matureSpreadCm": null,
      "support": false,
      "supportNote": null,
      "perennial": false,
      "protectedCropOnly": false,
      "sowingMethod": "module",
      "spacing": {
        "inRowCm": {
          "min": 20,
          "max": 20
        },
        "betweenRowCm": null,
        "plantsPerSqMSource": null,
        "planningPlantsPerSqM": 25.0,
        "blockSpacingCm": 20,
        "confidence": "derived_inrow"
      },
      "calendar": {
        "sow": [
          4,
          5,
          6
        ],
        "plantOut": [
          6,
          7
        ],
        "harvest": [
          9,
          10,
          11,
          12
        ],
        "protect": [],
        "daysToMaturity": null,
        "confidence": "seasonMapped",
        "seasonMapped": true,
        "harvestDerived": false
      },
      "pests": [
        {
          "name": "Cabbage root fly",
          "type": "pest",
          "organicControl": "Fine mesh covering.",
          "watchMonths": [
            5,
            6,
            7
          ],
          "source": "https://www.rhs.org.uk/vegetables/chinese-cabbage/grow-your-own"
        }
      ],
      "companions": {
        "allies": [
          {
            "partner": "Clover / trefoil (living mulch)",
            "tier": 1,
            "reason": "Disrupts cabbage root fly detection.",
            "inCropSet": false,
            "source": "https://www.rhs.org.uk/advice/grow-your-own/features/companion-planting"
          }
        ],
        "avoid": []
      },
      "fieldNotes": "Sourced in-row 20 cm is for MINI heads; standard calabrese needs ~30 cm. Between-row UNVERIFIED.",
      "flags": [
        "spacing_derived_from_inrow",
        "calendar_season_mapped",
        "feeder_unverified_in_source"
      ],
      "sources": [
        "https://www.rhs.org.uk/vegetables/choosing-mini-vegetables"
      ]
    },
    {
      "id": "cauliflower",
      "name": "Cauliflower",
      "botanicalName": "Brassica oleracea (Botrytis)",
      "family": "Brassicaceae",
      "rotationGroup": "brassicas",
      "rotationRole": "brassica_heavy_feeder",
      "nitrogenFixer": false,
      "feeder": null,
      "feederConfidence": "unverified",
      "sun": "full",
      "heightClass": "medium",
      "habit": "head",
      "matureHeightCm": {
        "min": 50,
        "max": 100
      },
      "matureSpreadCm": {
        "min": 50,
        "max": 100
      },
      "support": false,
      "supportNote": null,
      "perennial": false,
      "protectedCropOnly": false,
      "sowingMethod": "module",
      "spacing": {
        "inRowCm": {
          "min": 45,
          "max": 60
        },
        "betweenRowCm": {
          "min": 60,
          "max": 60
        },
        "plantsPerSqMSource": {
          "min": 2.7,
          "max": 3.7
        },
        "planningPlantsPerSqM": 3.0,
        "blockSpacingCm": 58,
        "confidence": "verified"
      },
      "calendar": {
        "sow": [
          3,
          4,
          5
        ],
        "plantOut": [
          6,
          7
        ],
        "harvest": [
          8,
          9,
          10,
          11
        ],
        "protect": [
          3
        ],
        "daysToMaturity": null,
        "confidence": "explicit",
        "seasonMapped": false,
        "harvestDerived": false
      },
      "pests": [
        {
          "name": "Cabbage caterpillars",
          "type": "pest",
          "organicControl": "Physical mesh barrier against Large/Small White butterflies.",
          "watchMonths": [
            6,
            7,
            8
          ],
          "source": "https://www.rhs.org.uk/plants/346331/brassica-oleracea-(botrytis-group)-boris/details"
        },
        {
          "name": "Club root",
          "type": "disease",
          "organicControl": "Crop rotation to prevent build-up.",
          "watchMonths": [
            6,
            7,
            8,
            9
          ],
          "source": "https://www.rhs.org.uk/plants/346331/brassica-oleracea-(botrytis-group)-boris/details"
        }
      ],
      "companions": {
        "allies": [
          {
            "partner": "Clover / trefoil (living mulch)",
            "tier": 1,
            "reason": "Disrupts cabbage root fly detection.",
            "inCropSet": false,
            "source": "https://www.rhs.org.uk/advice/grow-your-own/features/companion-planting"
          }
        ],
        "avoid": []
      },
      "fieldNotes": "Needs uninterrupted moisture — drought causes 'buttoning'.",
      "flags": [
        "feeder_unverified_in_source"
      ],
      "sources": [
        "https://www.rhs.org.uk/vegetables/cauliflower/grow-your-own"
      ]
    },
    {
      "id": "brussels-sprouts",
      "name": "Brussels sprouts",
      "botanicalName": "Brassica oleracea (Gemmifera)",
      "family": "Brassicaceae",
      "rotationGroup": "brassicas",
      "rotationRole": "brassica_heavy_feeder",
      "nitrogenFixer": false,
      "feeder": "heavy",
      "feederConfidence": "verified",
      "sun": "full",
      "heightClass": "tall",
      "habit": "upright",
      "matureHeightCm": {
        "min": 50,
        "max": 100
      },
      "matureSpreadCm": {
        "min": 50,
        "max": 100
      },
      "support": true,
      "supportNote": "Sturdy cane in late summer; large sail area in autumn gales.",
      "perennial": false,
      "protectedCropOnly": false,
      "sowingMethod": "module",
      "spacing": {
        "inRowCm": {
          "min": 60,
          "max": 60
        },
        "betweenRowCm": {
          "min": 60,
          "max": 60
        },
        "plantsPerSqMSource": {
          "min": 2.7,
          "max": 2.7
        },
        "planningPlantsPerSqM": 2.7,
        "blockSpacingCm": 61,
        "confidence": "verified"
      },
      "calendar": {
        "sow": [
          2,
          3,
          4,
          5
        ],
        "plantOut": [
          6
        ],
        "harvest": [
          9,
          10,
          11,
          12
        ],
        "protect": [
          11,
          12,
          1,
          2
        ],
        "daysToMaturity": null,
        "confidence": "explicit",
        "seasonMapped": false,
        "harvestDerived": false
      },
      "pests": [
        {
          "name": "Cabbage root fly",
          "type": "pest",
          "organicControl": "Grow under insect-proof mesh.",
          "watchMonths": [
            5,
            6,
            7
          ],
          "source": "https://www.rhs.org.uk/problems/brussels-sprouts-problems"
        },
        {
          "name": "Pigeons",
          "type": "pest",
          "organicControl": "Taut netting over winter foliage.",
          "watchMonths": [
            11,
            12,
            1,
            2
          ],
          "source": "https://www.rhs.org.uk/problems/brussels-sprouts-problems"
        }
      ],
      "companions": {
        "allies": [
          {
            "partner": "Clover / trefoil (living mulch)",
            "tier": 1,
            "reason": "Early-stage protection from cabbage root fly.",
            "inCropSet": false,
            "source": "https://www.rhs.org.uk/advice/grow-your-own/features/companion-planting"
          }
        ],
        "avoid": []
      },
      "fieldNotes": "RHS explicitly confirms HEAVY feeder (up to 300 g/m2 fertiliser).",
      "flags": [],
      "sources": [
        "https://www.rhs.org.uk/vegetables/brussels-sprouts/grow-your-own",
        "https://www.rhs.org.uk/plants/2392/brassica-oleracea-gemmifera-group/details"
      ]
    },
    {
      "id": "turnip",
      "name": "Turnip",
      "botanicalName": "Brassica rapa (Rapifera)",
      "family": "Brassicaceae",
      "rotationGroup": "brassicas",
      "rotationRole": "brassica_root",
      "nitrogenFixer": false,
      "feeder": null,
      "feederConfidence": "unverified",
      "sun": "full-or-partial",
      "heightClass": "low",
      "habit": "root",
      "matureHeightCm": {
        "min": 10,
        "max": 50
      },
      "matureSpreadCm": {
        "min": 10,
        "max": 50
      },
      "support": false,
      "supportNote": null,
      "perennial": false,
      "protectedCropOnly": false,
      "sowingMethod": "direct",
      "spacing": {
        "inRowCm": {
          "min": 15,
          "max": 15
        },
        "betweenRowCm": {
          "min": 30,
          "max": 30
        },
        "plantsPerSqMSource": {
          "min": 22,
          "max": 22
        },
        "planningPlantsPerSqM": 22.0,
        "blockSpacingCm": 21,
        "confidence": "verified"
      },
      "calendar": {
        "sow": [
          3,
          4,
          5,
          6,
          7,
          8
        ],
        "plantOut": [],
        "harvest": [
          5,
          6,
          7,
          8,
          9,
          10,
          11
        ],
        "protect": [
          11,
          12,
          1,
          2
        ],
        "daysToMaturity": null,
        "confidence": "explicit",
        "seasonMapped": false,
        "harvestDerived": false
      },
      "pests": [
        {
          "name": "Flea beetle",
          "type": "pest",
          "organicControl": "Fleece if severe; cosmetic damage often tolerable.",
          "watchMonths": [
            4,
            5,
            6
          ],
          "source": "https://www.rhs.org.uk/plants/221572/brassica-rapa-rapifera-group-oasis/details"
        },
        {
          "name": "Club root",
          "type": "disease",
          "organicControl": "Enforce crop rotation.",
          "watchMonths": [
            6,
            7,
            8
          ],
          "source": "https://www.rhs.org.uk/plants/221572/brassica-rapa-rapifera-group-oasis/details"
        }
      ],
      "companions": {
        "allies": [
          {
            "partner": "Clover / trefoil (living mulch)",
            "tier": 1,
            "reason": "Disrupts root fly detection.",
            "inCropSet": false,
            "source": "https://www.rhs.org.uk/advice/grow-your-own/features/companion-planting"
          }
        ],
        "avoid": []
      },
      "fieldNotes": "Sow successionally; harvest young (golf-ball size).",
      "flags": [
        "feeder_unverified_in_source"
      ],
      "sources": [
        "https://www.rhs.org.uk/vegetables/turnips/grow-your-own"
      ]
    },
    {
      "id": "swede",
      "name": "Swede",
      "botanicalName": "Brassica napus (Napobrassica)",
      "family": "Brassicaceae",
      "rotationGroup": "brassicas",
      "rotationRole": "brassica_root",
      "nitrogenFixer": false,
      "feeder": null,
      "feederConfidence": "unverified",
      "sun": "full",
      "heightClass": "low",
      "habit": "root",
      "matureHeightCm": {
        "min": 10,
        "max": 50
      },
      "matureSpreadCm": {
        "min": 10,
        "max": 50
      },
      "support": false,
      "supportNote": null,
      "perennial": false,
      "protectedCropOnly": false,
      "sowingMethod": "direct",
      "spacing": {
        "inRowCm": {
          "min": 15,
          "max": 25
        },
        "betweenRowCm": {
          "min": 30,
          "max": 45
        },
        "plantsPerSqMSource": {
          "min": 8.8,
          "max": 22
        },
        "planningPlantsPerSqM": 15.0,
        "blockSpacingCm": 26,
        "confidence": "verified"
      },
      "calendar": {
        "sow": [
          4,
          5,
          6,
          7
        ],
        "plantOut": [],
        "harvest": [
          9,
          10,
          11,
          12,
          1,
          2
        ],
        "protect": [
          11,
          12,
          1,
          2
        ],
        "daysToMaturity": null,
        "confidence": "explicit",
        "seasonMapped": false,
        "harvestDerived": false
      },
      "pests": [
        {
          "name": "Powdery mildew",
          "type": "disease",
          "organicControl": "Keep moisture consistent; mulch to avoid drought stress.",
          "watchMonths": [
            7,
            8,
            9
          ],
          "source": "https://www.rhs.org.uk/vegetables/swede/grow-your-own"
        },
        {
          "name": "Cabbage root fly",
          "type": "pest",
          "organicControl": "Mesh covering.",
          "watchMonths": [
            5,
            6,
            7
          ],
          "source": "https://www.rhs.org.uk/vegetables/swede/grow-your-own"
        }
      ],
      "companions": {
        "allies": [
          {
            "partner": "Clover / trefoil (living mulch)",
            "tier": 1,
            "reason": "Disrupts root fly detection.",
            "inCropSet": false,
            "source": "https://www.rhs.org.uk/advice/grow-your-own/features/companion-planting"
          }
        ],
        "avoid": []
      },
      "fieldNotes": null,
      "flags": [
        "feeder_unverified_in_source"
      ],
      "sources": [
        "https://www.rhs.org.uk/vegetables/swede/grow-your-own"
      ]
    },
    {
      "id": "radish",
      "name": "Radish",
      "botanicalName": "Raphanus sativus",
      "family": "Brassicaceae",
      "rotationGroup": "brassicas",
      "rotationRole": "brassica_fast",
      "nitrogenFixer": false,
      "feeder": null,
      "feederConfidence": "unverified",
      "sun": "full-or-partial",
      "heightClass": "low",
      "habit": "root",
      "matureHeightCm": {
        "min": 10,
        "max": 50
      },
      "matureSpreadCm": {
        "min": 10,
        "max": 50
      },
      "support": false,
      "supportNote": null,
      "perennial": false,
      "protectedCropOnly": false,
      "sowingMethod": "direct",
      "spacing": {
        "inRowCm": {
          "min": 1,
          "max": 5
        },
        "betweenRowCm": {
          "min": 15,
          "max": 15
        },
        "plantsPerSqMSource": {
          "min": 133,
          "max": 666
        },
        "planningPlantsPerSqM": 200.0,
        "blockSpacingCm": 7,
        "confidence": "verified"
      },
      "calendar": {
        "sow": [
          2,
          3,
          4,
          5,
          6,
          7,
          8
        ],
        "plantOut": [],
        "harvest": [
          3,
          4,
          5,
          6,
          7,
          8,
          9
        ],
        "protect": [
          3
        ],
        "daysToMaturity": 35,
        "confidence": "explicit",
        "seasonMapped": false,
        "harvestDerived": true
      },
      "pests": [
        {
          "name": "Flea beetle",
          "type": "pest",
          "organicControl": "Fleece over drills at sowing.",
          "watchMonths": [
            4,
            5,
            6
          ],
          "source": "https://www.rhs.org.uk/vegetables/radishes/grow-your-own"
        },
        {
          "name": "Slugs & snails",
          "type": "pest",
          "organicControl": "Nematode biocontrol in damp spring weather.",
          "watchMonths": [
            3,
            4,
            5
          ],
          "source": "https://www.rhs.org.uk/vegetables/radishes/grow-your-own"
        }
      ],
      "companions": {
        "allies": [],
        "avoid": []
      },
      "fieldNotes": "~4 weeks to harvest — ideal succession/gap-filler. Companions UNVERIFIED.",
      "flags": [
        "harvest_derived_from_days_to_maturity",
        "feeder_unverified_in_source",
        "companions_unverified"
      ],
      "sources": [
        "https://www.rhs.org.uk/vegetables/radishes/grow-your-own"
      ]
    },
    {
      "id": "rocket",
      "name": "Rocket",
      "botanicalName": "Eruca vesicaria subsp. sativa",
      "family": "Brassicaceae",
      "rotationGroup": "brassicas",
      "rotationRole": "brassica_fast",
      "nitrogenFixer": false,
      "feeder": null,
      "feederConfidence": "unverified",
      "sun": "full-or-partial",
      "heightClass": "low",
      "habit": "leafy",
      "matureHeightCm": {
        "min": 50,
        "max": 100
      },
      "matureSpreadCm": {
        "min": 0,
        "max": 10
      },
      "support": false,
      "supportNote": null,
      "perennial": false,
      "protectedCropOnly": false,
      "sowingMethod": "direct",
      "spacing": {
        "inRowCm": {
          "min": 15,
          "max": 15
        },
        "betweenRowCm": {
          "min": 15,
          "max": 15
        },
        "plantsPerSqMSource": {
          "min": 44,
          "max": 44
        },
        "planningPlantsPerSqM": 44.0,
        "blockSpacingCm": 15,
        "confidence": "verified"
      },
      "calendar": {
        "sow": [
          2,
          3,
          4,
          5,
          6,
          7,
          8,
          9
        ],
        "plantOut": [
          3,
          4,
          5
        ],
        "harvest": [
          4,
          5,
          6,
          7,
          8,
          9,
          10
        ],
        "protect": [
          3,
          4
        ],
        "daysToMaturity": 40,
        "confidence": "explicit",
        "seasonMapped": false,
        "harvestDerived": true
      },
      "pests": [
        {
          "name": "Flea beetle",
          "type": "pest",
          "organicControl": "Physical barrier; tolerate cosmetic shot-holes.",
          "watchMonths": [
            4,
            5,
            6,
            7
          ],
          "source": "https://www.rhs.org.uk/plants/73475/eruca-vesicaria-subsp-sativa/details"
        },
        {
          "name": "Slugs & snails",
          "type": "pest",
          "organicControl": "Protect young plants / biocontrol.",
          "watchMonths": [
            3,
            4,
            5
          ],
          "source": "https://www.rhs.org.uk/plants/73475/eruca-vesicaria-subsp-sativa/details"
        }
      ],
      "companions": {
        "allies": [],
        "avoid": []
      },
      "fieldNotes": "Cut-and-come-again; sow successionally. Companions UNVERIFIED.",
      "flags": [
        "harvest_derived_from_days_to_maturity",
        "feeder_unverified_in_source",
        "companions_unverified"
      ],
      "sources": [
        "https://www.rhs.org.uk/vegetables/rocket/grow-your-own"
      ]
    },
    {
      "id": "lettuce",
      "name": "Lettuce",
      "botanicalName": "Lactuca sativa",
      "family": "Asteraceae",
      "rotationGroup": "flexible",
      "rotationRole": "leafy_light",
      "nitrogenFixer": false,
      "feeder": null,
      "feederConfidence": "unverified",
      "sun": "full-or-partial",
      "heightClass": "low",
      "habit": "leafy",
      "matureHeightCm": null,
      "matureSpreadCm": null,
      "support": false,
      "supportNote": null,
      "perennial": false,
      "protectedCropOnly": false,
      "sowingMethod": "direct",
      "spacing": {
        "inRowCm": {
          "min": 15,
          "max": 30
        },
        "betweenRowCm": {
          "min": 23,
          "max": 38
        },
        "plantsPerSqMSource": {
          "min": 8.7,
          "max": 28
        },
        "planningPlantsPerSqM": 16.0,
        "blockSpacingCm": 25,
        "confidence": "verified"
      },
      "calendar": {
        "sow": [
          2,
          3,
          4,
          5,
          6,
          7,
          8,
          9
        ],
        "plantOut": [
          3,
          4,
          5,
          6
        ],
        "harvest": [
          5,
          6,
          7,
          8,
          9,
          10
        ],
        "protect": [
          3,
          4,
          10
        ],
        "daysToMaturity": null,
        "confidence": "explicit",
        "seasonMapped": false,
        "harvestDerived": false
      },
      "pests": [
        {
          "name": "Slugs & snails",
          "type": "pest",
          "organicControl": "Nematode biocontrol or physical barrier.",
          "watchMonths": [
            3,
            4,
            9,
            10
          ],
          "source": "https://www.rhs.org.uk/advice/grow-your-own/features/fascinating-facts-and-figures-lettuce"
        },
        {
          "name": "Aphids",
          "type": "pest",
          "organicControl": "Encourage predators (see alyssum companion) or use trap crops.",
          "watchMonths": [
            6,
            7,
            8
          ],
          "source": "https://www.rhs.org.uk/advice/grow-your-own/features/fascinating-facts-and-figures-lettuce"
        }
      ],
      "companions": {
        "allies": [
          {
            "partner": "Sweet alyssum (Lobularia maritima)",
            "tier": 1,
            "reason": "Nectar draws hoverflies/parasitic wasps that eat aphids.",
            "inCropSet": false,
            "source": "https://www.rhs.org.uk/advice/grow-your-own/features/companion-planting"
          }
        ],
        "avoid": []
      },
      "fieldNotes": "Partial shade in summer delays bolting. Sow successionally.",
      "flags": [
        "feeder_unverified_in_source"
      ],
      "sources": [
        "https://www.rhs.org.uk/vegetables/lettuce/grow-your-own"
      ]
    },
    {
      "id": "spinach",
      "name": "Spinach",
      "botanicalName": "Spinacia oleracea",
      "family": "Amaranthaceae",
      "rotationGroup": "flexible",
      "rotationRole": "leafy_light",
      "nitrogenFixer": false,
      "feeder": null,
      "feederConfidence": "unverified",
      "sun": "full-or-partial",
      "heightClass": "low",
      "habit": "leafy",
      "matureHeightCm": null,
      "matureSpreadCm": null,
      "support": false,
      "supportNote": null,
      "perennial": false,
      "protectedCropOnly": false,
      "sowingMethod": "direct",
      "spacing": {
        "inRowCm": {
          "min": 8,
          "max": 15
        },
        "betweenRowCm": {
          "min": 30,
          "max": 30
        },
        "plantsPerSqMSource": {
          "min": 22,
          "max": 22
        },
        "planningPlantsPerSqM": 22.0,
        "blockSpacingCm": 21,
        "confidence": "verified"
      },
      "calendar": {
        "sow": [
          3,
          4,
          5,
          9
        ],
        "plantOut": [],
        "harvest": [
          10,
          11,
          12,
          1,
          2,
          3,
          4
        ],
        "protect": [
          3
        ],
        "daysToMaturity": null,
        "confidence": "explicit",
        "seasonMapped": false,
        "harvestDerived": false
      },
      "pests": [
        {
          "name": "Downy mildew",
          "type": "disease",
          "organicControl": "Avoid overcrowding; keep airflow.",
          "watchMonths": [
            5,
            6,
            9,
            10
          ],
          "source": "https://www.rhs.org.uk/vegetables/spinach/grow-your-own"
        },
        {
          "name": "Pigeons",
          "type": "pest",
          "organicControl": "Netting over winter/spring foliage.",
          "watchMonths": [
            11,
            12,
            1,
            2,
            3
          ],
          "source": "https://www.rhs.org.uk/vegetables/spinach/grow-your-own"
        }
      ],
      "companions": {
        "allies": [],
        "avoid": []
      },
      "fieldNotes": "Direct-sow only (transplanting triggers bolting). Companions UNVERIFIED.",
      "flags": [
        "feeder_unverified_in_source",
        "companions_unverified"
      ],
      "sources": [
        "https://www.rhs.org.uk/vegetables/spinach/grow-your-own"
      ]
    },
    {
      "id": "swiss-chard",
      "name": "Swiss chard",
      "botanicalName": "Beta vulgaris subsp. cicla",
      "family": "Amaranthaceae",
      "rotationGroup": "flexible",
      "rotationRole": "leafy_light",
      "nitrogenFixer": false,
      "feeder": null,
      "feederConfidence": "unverified",
      "sun": "full-or-partial",
      "heightClass": "low",
      "habit": "leafy",
      "matureHeightCm": {
        "min": 10,
        "max": 50
      },
      "matureSpreadCm": {
        "min": 10,
        "max": 50
      },
      "support": false,
      "supportNote": null,
      "perennial": false,
      "protectedCropOnly": false,
      "sowingMethod": "direct",
      "spacing": {
        "inRowCm": {
          "min": 10,
          "max": 10
        },
        "betweenRowCm": {
          "min": 45,
          "max": 45
        },
        "plantsPerSqMSource": {
          "min": 22,
          "max": 22
        },
        "planningPlantsPerSqM": 22.0,
        "blockSpacingCm": 21,
        "confidence": "verified"
      },
      "calendar": {
        "sow": [
          3,
          4,
          5,
          6,
          7
        ],
        "plantOut": [
          4,
          5,
          6,
          7
        ],
        "harvest": [
          6,
          7,
          8,
          9,
          10
        ],
        "protect": [],
        "daysToMaturity": 84,
        "confidence": "explicit",
        "seasonMapped": false,
        "harvestDerived": true
      },
      "pests": [
        {
          "name": "Grey mould",
          "type": "disease",
          "organicControl": "Space well for airflow in humid weather.",
          "watchMonths": [
            6,
            7,
            8
          ],
          "source": "https://www.rhs.org.uk/advice/grow-your-own/features/fascinating-facts-chard"
        },
        {
          "name": "Birds",
          "type": "pest",
          "organicControl": "Taut netting over emerging seedlings.",
          "watchMonths": [
            3,
            4,
            5
          ],
          "source": "https://www.rhs.org.uk/advice/grow-your-own/features/fascinating-facts-chard"
        }
      ],
      "companions": {
        "allies": [],
        "avoid": []
      },
      "fieldNotes": "Companions UNVERIFIED.",
      "flags": [
        "harvest_derived_from_days_to_maturity",
        "feeder_unverified_in_source",
        "companions_unverified"
      ],
      "sources": [
        "https://www.rhs.org.uk/vegetables/chard/grow-your-own"
      ]
    },
    {
      "id": "beetroot",
      "name": "Beetroot",
      "botanicalName": "Beta vulgaris",
      "family": "Amaranthaceae",
      "rotationGroup": "roots",
      "rotationRole": "root_light_feeder",
      "nitrogenFixer": false,
      "feeder": null,
      "feederConfidence": "unverified",
      "sun": "full",
      "heightClass": "low",
      "habit": "root",
      "matureHeightCm": null,
      "matureSpreadCm": null,
      "support": false,
      "supportNote": null,
      "perennial": false,
      "protectedCropOnly": false,
      "sowingMethod": "direct",
      "spacing": {
        "inRowCm": {
          "min": 10,
          "max": 10
        },
        "betweenRowCm": null,
        "plantsPerSqMSource": null,
        "planningPlantsPerSqM": 100.0,
        "blockSpacingCm": 10,
        "confidence": "derived_inrow"
      },
      "calendar": {
        "sow": [
          3,
          4,
          5,
          6,
          7
        ],
        "plantOut": [
          3,
          4,
          5
        ],
        "harvest": [
          6,
          7,
          8,
          9,
          10
        ],
        "protect": [
          11,
          12,
          1,
          2
        ],
        "daysToMaturity": null,
        "confidence": "seasonMapped",
        "seasonMapped": true,
        "harvestDerived": false
      },
      "pests": [
        {
          "name": "Hard frost (disorder)",
          "type": "disorder",
          "organicControl": "Insulate with 30 cm straw/bracken for over-winter storage in ground.",
          "watchMonths": [
            11,
            12,
            1,
            2
          ],
          "source": "https://www.rhs.org.uk/vegetables/root-vegetables-storing"
        }
      ],
      "companions": {
        "allies": [],
        "avoid": []
      },
      "fieldNotes": "Only in-row (10 cm) sourced; between-row UNVERIFIED. Multi-sow clusters common. Companions UNVERIFIED.",
      "flags": [
        "spacing_derived_from_inrow",
        "calendar_season_mapped",
        "feeder_unverified_in_source",
        "companions_unverified"
      ],
      "sources": [
        "https://www.rhs.org.uk/vegetables/beetroot/grow-your-own"
      ]
    },
    {
      "id": "parsnip",
      "name": "Parsnip",
      "botanicalName": "Pastinaca sativa",
      "family": "Apiaceae",
      "rotationGroup": "roots",
      "rotationRole": "root_light_feeder",
      "nitrogenFixer": false,
      "feeder": "light",
      "feederConfidence": "verified",
      "sun": "full-or-partial",
      "heightClass": "low",
      "habit": "root",
      "matureHeightCm": {
        "min": 10,
        "max": 50
      },
      "matureSpreadCm": {
        "min": 10,
        "max": 50
      },
      "support": false,
      "supportNote": null,
      "perennial": false,
      "protectedCropOnly": false,
      "sowingMethod": "direct",
      "spacing": {
        "inRowCm": null,
        "betweenRowCm": {
          "min": 30,
          "max": 30
        },
        "plantsPerSqMSource": null,
        "planningPlantsPerSqM": null,
        "blockSpacingCm": null,
        "confidence": "partial"
      },
      "calendar": {
        "sow": [
          4,
          5
        ],
        "plantOut": [],
        "harvest": [
          9,
          10,
          11,
          12,
          1,
          2,
          3
        ],
        "protect": [],
        "daysToMaturity": null,
        "confidence": "seasonMapped",
        "seasonMapped": true,
        "harvestDerived": false
      },
      "pests": [
        {
          "name": "Carrot fly",
          "type": "pest",
          "organicControl": "Insect-proof mesh; don't sow in recent carrot beds.",
          "watchMonths": [
            6,
            7,
            8,
            9
          ],
          "source": "https://www.rhs.org.uk/vegetables/parsnips/grow-your-own"
        }
      ],
      "companions": {
        "allies": [],
        "avoid": []
      },
      "fieldNotes": "Only between-row (30 cm) sourced; in-row UNVERIFIED. Direct-sow only. Companions UNVERIFIED.",
      "flags": [
        "spacing_partial_source",
        "calendar_season_mapped",
        "companions_unverified"
      ],
      "sources": [
        "https://www.rhs.org.uk/vegetables/parsnips/grow-your-own"
      ]
    },
    {
      "id": "celery",
      "name": "Celery",
      "botanicalName": "Apium graveolens",
      "family": "Apiaceae",
      "rotationGroup": "roots",
      "rotationRole": "heavy_feeder",
      "nitrogenFixer": false,
      "feeder": "heavy",
      "feederConfidence": "verified",
      "sun": "full-or-partial",
      "heightClass": "low",
      "habit": "upright",
      "matureHeightCm": null,
      "matureSpreadCm": null,
      "support": false,
      "supportNote": "Trench types blanched by earthing/collars.",
      "perennial": false,
      "protectedCropOnly": false,
      "sowingMethod": "module",
      "spacing": {
        "inRowCm": {
          "min": 23,
          "max": 23
        },
        "betweenRowCm": null,
        "plantsPerSqMSource": null,
        "planningPlantsPerSqM": 18.9,
        "blockSpacingCm": 23,
        "confidence": "derived_inrow"
      },
      "calendar": {
        "sow": [
          3,
          4
        ],
        "plantOut": [
          5,
          6
        ],
        "harvest": [
          8,
          9,
          10
        ],
        "protect": [],
        "daysToMaturity": null,
        "confidence": "explicit",
        "seasonMapped": false,
        "harvestDerived": false
      },
      "pests": [
        {
          "name": "Celery leaf spot",
          "type": "disease",
          "organicControl": "Cultural control; use clean seed.",
          "watchMonths": [
            7,
            8
          ],
          "source": "https://www.rhs.org.uk/vegetables/celery/grow-your-own"
        },
        {
          "name": "Slugs & snails",
          "type": "pest",
          "organicControl": "Biological control.",
          "watchMonths": [
            3,
            4,
            5
          ],
          "source": "https://www.rhs.org.uk/plants/106053/apium-graveolens-var-rapaceum/details"
        }
      ],
      "companions": {
        "allies": [],
        "avoid": []
      },
      "fieldNotes": "RHS confirms HEAVY feeder. Between-row UNVERIFIED. Companions UNVERIFIED.",
      "flags": [
        "spacing_derived_from_inrow",
        "companions_unverified"
      ],
      "sources": [
        "https://www.rhs.org.uk/vegetables/celery/grow-your-own"
      ]
    },
    {
      "id": "celeriac",
      "name": "Celeriac",
      "botanicalName": "Apium graveolens var. rapaceum",
      "family": "Apiaceae",
      "rotationGroup": "roots",
      "rotationRole": "heavy_feeder",
      "nitrogenFixer": false,
      "feeder": "heavy",
      "feederConfidence": "verified",
      "sun": "full-or-partial",
      "heightClass": "low",
      "habit": "root",
      "matureHeightCm": {
        "min": 10,
        "max": 50
      },
      "matureSpreadCm": {
        "min": 10,
        "max": 50
      },
      "support": false,
      "supportNote": null,
      "perennial": false,
      "protectedCropOnly": false,
      "sowingMethod": "module",
      "spacing": {
        "inRowCm": {
          "min": 30,
          "max": 30
        },
        "betweenRowCm": null,
        "plantsPerSqMSource": null,
        "planningPlantsPerSqM": 11.1,
        "blockSpacingCm": 30,
        "confidence": "derived_inrow"
      },
      "calendar": {
        "sow": [
          3
        ],
        "plantOut": [
          5,
          6
        ],
        "harvest": [
          9,
          10,
          11,
          12
        ],
        "protect": [
          11,
          12
        ],
        "daysToMaturity": null,
        "confidence": "explicit",
        "seasonMapped": false,
        "harvestDerived": false
      },
      "pests": [
        {
          "name": "Celery leaf miner",
          "type": "pest",
          "organicControl": "Cover with fleece/mesh.",
          "watchMonths": [
            5,
            6,
            7
          ],
          "source": "https://www.rhs.org.uk/plants/106053/apium-graveolens-var-rapaceum/details"
        },
        {
          "name": "Slugs & snails",
          "type": "pest",
          "organicControl": "Biological control.",
          "watchMonths": [
            3,
            4,
            5
          ],
          "source": "https://www.rhs.org.uk/plants/106053/apium-graveolens-var-rapaceum/details"
        }
      ],
      "companions": {
        "allies": [],
        "avoid": []
      },
      "fieldNotes": "~6-month crop needing constant moisture. Between-row UNVERIFIED.",
      "flags": [
        "spacing_derived_from_inrow",
        "companions_unverified"
      ],
      "sources": [
        "https://www.rhs.org.uk/vegetables/celeriac/grow-your-own"
      ]
    },
    {
      "id": "courgette",
      "name": "Courgette",
      "botanicalName": "Cucurbita pepo",
      "family": "Cucurbitaceae",
      "rotationGroup": "cucurbits",
      "rotationRole": "heavy_feeder",
      "nitrogenFixer": false,
      "feeder": null,
      "feederConfidence": "unverified",
      "sun": "full",
      "heightClass": "low",
      "habit": "sprawling",
      "matureHeightCm": null,
      "matureSpreadCm": null,
      "support": false,
      "supportNote": "Can be coaxed up a robust frame to save space.",
      "perennial": false,
      "protectedCropOnly": false,
      "sowingMethod": "indoors",
      "spacing": {
        "inRowCm": {
          "min": 75,
          "max": 90
        },
        "betweenRowCm": {
          "min": 100,
          "max": 120
        },
        "plantsPerSqMSource": {
          "min": 0.9,
          "max": 0.9
        },
        "planningPlantsPerSqM": 1.0,
        "blockSpacingCm": 100,
        "confidence": "verified"
      },
      "calendar": {
        "sow": [
          4,
          5
        ],
        "plantOut": [
          5
        ],
        "harvest": [
          7,
          8,
          9
        ],
        "protect": [
          5
        ],
        "daysToMaturity": null,
        "confidence": "seasonMapped",
        "seasonMapped": true,
        "harvestDerived": false
      },
      "pests": [
        {
          "name": "Slugs",
          "type": "pest",
          "organicControl": "Protect direct-sown/young seedlings immediately.",
          "watchMonths": [
            5,
            6
          ],
          "source": "https://www.rhs.org.uk/advice/grow-your-own/allotments/sow-tender-veg-outdoors"
        }
      ],
      "companions": {
        "allies": [],
        "avoid": []
      },
      "fieldNotes": "Raised-bed spacing 75x100 cm; big footprint — place at bed edge. Companions UNVERIFIED.",
      "flags": [
        "calendar_season_mapped",
        "feeder_unverified_in_source",
        "companions_unverified"
      ],
      "sources": [
        "https://www.rhs.org.uk/vegetables/courgettes/grow-your-own"
      ]
    },
    {
      "id": "winter-squash",
      "name": "Winter squash",
      "botanicalName": "Cucurbita spp.",
      "family": "Cucurbitaceae",
      "rotationGroup": "cucurbits",
      "rotationRole": "heavy_feeder",
      "nitrogenFixer": false,
      "feeder": null,
      "feederConfidence": "unverified",
      "sun": "full",
      "heightClass": "low",
      "habit": "sprawling",
      "matureHeightCm": null,
      "matureSpreadCm": null,
      "support": false,
      "supportNote": "Sprawls as living mulch or climbs a robust frame.",
      "perennial": false,
      "protectedCropOnly": false,
      "sowingMethod": "indoors",
      "spacing": {
        "inRowCm": null,
        "betweenRowCm": null,
        "plantsPerSqMSource": {
          "min": 1,
          "max": 1
        },
        "planningPlantsPerSqM": 1.0,
        "blockSpacingCm": 100,
        "confidence": "partial"
      },
      "calendar": {
        "sow": [
          4,
          5
        ],
        "plantOut": [
          5
        ],
        "harvest": [
          9,
          10,
          11
        ],
        "protect": [
          5
        ],
        "daysToMaturity": null,
        "confidence": "seasonMapped",
        "seasonMapped": true,
        "harvestDerived": false
      },
      "pests": [
        {
          "name": "Fungus gnats / sciarid fly",
          "type": "pest",
          "organicControl": "Nematode biocontrol at indoor seedling stage.",
          "watchMonths": [
            4,
            5
          ],
          "source": "https://www.rhs.org.uk/gardens/articles/pumpkins-at-rhs-gardens"
        }
      ],
      "companions": {
        "allies": [
          {
            "partner": "sweetcorn",
            "tier": 1,
            "reason": "Three Sisters: ground-cover shades soil, retains moisture.",
            "inCropSet": true,
            "source": "https://www.rhs.org.uk/advice/grow-your-own/features/three-sisters"
          },
          {
            "partner": "runner-bean",
            "tier": 1,
            "reason": "Three Sisters guild member.",
            "inCropSet": true,
            "source": "https://www.rhs.org.uk/advice/grow-your-own/features/three-sisters"
          }
        ],
        "avoid": []
      },
      "fieldNotes": "Only Three-Sisters density (1/m2) sourced; row spacing UNVERIFIED. Sprawling — needs edge/ground space.",
      "flags": [
        "spacing_partial_source",
        "calendar_season_mapped",
        "feeder_unverified_in_source"
      ],
      "sources": [
        "https://www.rhs.org.uk/vegetables/squash/grow-your-own"
      ]
    },
    {
      "id": "pumpkin",
      "name": "Pumpkin",
      "botanicalName": "Cucurbita pepo/maxima",
      "family": "Cucurbitaceae",
      "rotationGroup": "cucurbits",
      "rotationRole": "heavy_feeder",
      "nitrogenFixer": false,
      "feeder": "heavy",
      "feederConfidence": "verified",
      "sun": "full",
      "heightClass": "low",
      "habit": "sprawling",
      "matureHeightCm": null,
      "matureSpreadCm": null,
      "support": false,
      "supportNote": "Trails; can climb a robust frame.",
      "perennial": false,
      "protectedCropOnly": false,
      "sowingMethod": "indoors",
      "spacing": {
        "inRowCm": {
          "min": 75,
          "max": 90
        },
        "betweenRowCm": {
          "min": 120,
          "max": 150
        },
        "plantsPerSqMSource": {
          "min": 0.74,
          "max": 1
        },
        "planningPlantsPerSqM": 0.8,
        "blockSpacingCm": 112,
        "confidence": "verified"
      },
      "calendar": {
        "sow": [
          4,
          5,
          6
        ],
        "plantOut": [
          5,
          6
        ],
        "harvest": [
          9,
          10
        ],
        "protect": [
          10
        ],
        "daysToMaturity": null,
        "confidence": "explicit",
        "seasonMapped": false,
        "harvestDerived": false
      },
      "pests": [
        {
          "name": "Powdery mildew",
          "type": "disease",
          "organicControl": "Deep consistent watering; avoid drought stress.",
          "watchMonths": [
            7,
            8,
            9
          ],
          "source": "https://www.rhs.org.uk/advice/grow-your-own/features/fascinating-facts-and-figures-pumpkins"
        },
        {
          "name": "Slugs",
          "type": "pest",
          "organicControl": "Start indoors to bypass early grazing.",
          "watchMonths": [
            4,
            5
          ],
          "source": "https://www.rhs.org.uk/advice/grow-your-own/features/fascinating-facts-and-figures-pumpkins"
        }
      ],
      "companions": {
        "allies": [
          {
            "partner": "sweetcorn",
            "tier": 1,
            "reason": "Three Sisters: living mulch.",
            "inCropSet": true,
            "source": "https://www.rhs.org.uk/advice/grow-your-own/features/three-sisters"
          },
          {
            "partner": "runner-bean",
            "tier": 1,
            "reason": "Three Sisters guild member.",
            "inCropSet": true,
            "source": "https://www.rhs.org.uk/advice/grow-your-own/features/three-sisters"
          }
        ],
        "avoid": []
      },
      "fieldNotes": "RHS confirms heavy feeder (grow on compost heap). Very large footprint.",
      "flags": [],
      "sources": [
        "https://www.rhs.org.uk/vegetables/pumpkins/grow-your-own"
      ]
    },
    {
      "id": "cucumber-ridge",
      "name": "Cucumber (outdoor / ridge)",
      "botanicalName": "Cucumis sativus",
      "family": "Cucurbitaceae",
      "rotationGroup": "cucurbits",
      "rotationRole": "heavy_feeder",
      "nitrogenFixer": false,
      "feeder": null,
      "feederConfidence": "unverified",
      "sun": "full",
      "heightClass": "tall",
      "habit": "climber",
      "matureHeightCm": {
        "min": 10,
        "max": 50
      },
      "matureSpreadCm": {
        "min": 150,
        "max": 250
      },
      "support": true,
      "supportNote": "Grows best vertically up hazel poles/trellis (to ~250 cm). Place on north edge.",
      "perennial": false,
      "protectedCropOnly": false,
      "sowingMethod": "indoors",
      "spacing": {
        "inRowCm": null,
        "betweenRowCm": null,
        "plantsPerSqMSource": null,
        "planningPlantsPerSqM": null,
        "blockSpacingCm": null,
        "confidence": "unverified"
      },
      "calendar": {
        "sow": [
          4
        ],
        "plantOut": [
          6
        ],
        "harvest": [
          7,
          8,
          9
        ],
        "protect": [
          5
        ],
        "daysToMaturity": null,
        "confidence": "explicit",
        "seasonMapped": false,
        "harvestDerived": false
      },
      "pests": [
        {
          "name": "Glasshouse whitefly",
          "type": "pest",
          "organicControl": "Trap crops or tolerate; worse under cover.",
          "watchMonths": [
            6,
            7,
            8
          ],
          "source": "https://www.rhs.org.uk/plants/105568/cucumis-sativus/details"
        },
        {
          "name": "Powdery mildew / cucumber mosaic virus",
          "type": "disease",
          "organicControl": "Keep moisture consistent; remove infected plants.",
          "watchMonths": [
            7,
            8
          ],
          "source": "https://www.rhs.org.uk/plants/105568/cucumis-sativus/details"
        }
      ],
      "companions": {
        "allies": [],
        "avoid": []
      },
      "fieldNotes": "SPACING UNVERIFIED. Vertical climber — needs spacing before auto-placement. Companions UNVERIFIED.",
      "flags": [
        "spacing_unverified_needs_input",
        "feeder_unverified_in_source",
        "companions_unverified"
      ],
      "sources": [
        "https://www.rhs.org.uk/vegetables/cucumbers/grow-your-own"
      ]
    },
    {
      "id": "sweetcorn",
      "name": "Sweetcorn",
      "botanicalName": "Zea mays",
      "family": "Poaceae",
      "rotationGroup": "flexible",
      "rotationRole": "tall_block",
      "nitrogenFixer": false,
      "feeder": null,
      "feederConfidence": "unverified",
      "sun": "full",
      "heightClass": "tall",
      "habit": "upright",
      "matureHeightCm": {
        "min": 150,
        "max": 250
      },
      "matureSpreadCm": {
        "min": 50,
        "max": 100
      },
      "support": false,
      "supportNote": "Staking only in very exposed sites.",
      "perennial": false,
      "protectedCropOnly": false,
      "sowingMethod": "indoors",
      "spacing": {
        "inRowCm": {
          "min": 40,
          "max": 45
        },
        "betweenRowCm": {
          "min": 45,
          "max": 45
        },
        "plantsPerSqMSource": {
          "min": 4.9,
          "max": 4.9
        },
        "planningPlantsPerSqM": 4.9,
        "blockSpacingCm": 45,
        "confidence": "verified"
      },
      "calendar": {
        "sow": [
          4,
          5,
          6
        ],
        "plantOut": [
          5,
          6
        ],
        "harvest": [
          8,
          9,
          10
        ],
        "protect": [
          5
        ],
        "daysToMaturity": null,
        "confidence": "explicit",
        "seasonMapped": false,
        "harvestDerived": false
      },
      "pests": [
        {
          "name": "Smut",
          "type": "disease",
          "organicControl": "Cut out and destroy grey galls in hot weather.",
          "watchMonths": [
            7,
            8
          ],
          "source": "https://www.rhs.org.uk/plants/117623/zea-mays-ovation/details"
        },
        {
          "name": "Badgers / mice / birds",
          "type": "pest",
          "organicControl": "Physical cage over ripening cobs.",
          "watchMonths": [
            8,
            9,
            10
          ],
          "source": "https://www.rhs.org.uk/plants/117623/zea-mays-ovation/details"
        }
      ],
      "companions": {
        "allies": [
          {
            "partner": "runner-bean",
            "tier": 1,
            "reason": "Three Sisters: corn is the climbing frame for beans.",
            "inCropSet": true,
            "source": "https://www.rhs.org.uk/advice/grow-your-own/features/three-sisters"
          },
          {
            "partner": "pumpkin",
            "tier": 1,
            "reason": "Three Sisters: squash shades soil at corn's base.",
            "inCropSet": true,
            "source": "https://www.rhs.org.uk/advice/grow-your-own/features/three-sisters"
          }
        ],
        "avoid": []
      },
      "fieldNotes": "MUST be planted in a square block (not a single row) for wind pollination. Tall — place on north edge.",
      "flags": [
        "feeder_unverified_in_source"
      ],
      "sources": [
        "https://www.rhs.org.uk/advice/grow-your-own/allotments/sow-tender-veg-outdoors",
        "https://www.rhs.org.uk/plants/117623/zea-mays-ovation/details"
      ]
    },
    {
      "id": "pepper-chilli",
      "name": "Pepper / chilli",
      "botanicalName": "Capsicum",
      "family": "Solanaceae",
      "rotationGroup": "solanaceae",
      "rotationRole": "fruiting_heavy_feeder",
      "nitrogenFixer": false,
      "feeder": null,
      "feederConfidence": "unverified",
      "sun": "full",
      "heightClass": "low",
      "habit": "bush",
      "matureHeightCm": {
        "min": 20,
        "max": 60
      },
      "matureSpreadCm": {
        "min": 30,
        "max": 30
      },
      "support": true,
      "supportNote": "Short canes for taller varieties.",
      "perennial": false,
      "protectedCropOnly": true,
      "sowingMethod": "indoors",
      "spacing": {
        "inRowCm": null,
        "betweenRowCm": null,
        "plantsPerSqMSource": null,
        "planningPlantsPerSqM": null,
        "blockSpacingCm": null,
        "confidence": "unverified"
      },
      "calendar": {
        "sow": [
          2,
          3,
          4
        ],
        "plantOut": [
          5
        ],
        "harvest": [
          7,
          8,
          9
        ],
        "protect": [
          3,
          4,
          5
        ],
        "daysToMaturity": null,
        "confidence": "explicit",
        "seasonMapped": false,
        "harvestDerived": false
      },
      "pests": [
        {
          "name": "Glasshouse red spider mite",
          "type": "pest",
          "organicControl": "Damp down floors to raise humidity.",
          "watchMonths": [
            6,
            7,
            8
          ],
          "source": "https://www.rhs.org.uk/vegetables/chilli-pepper/grow-your-own"
        },
        {
          "name": "Aphids / whitefly",
          "type": "pest",
          "organicControl": "Trap crops or biological controls.",
          "watchMonths": [
            4,
            5,
            6,
            7
          ],
          "source": "https://www.rhs.org.uk/vegetables/chilli-pepper/grow-your-own"
        }
      ],
      "companions": {
        "allies": [],
        "avoid": []
      },
      "fieldNotes": "PROTECTED CROP (greenhouse/polytunnel in UK). Only 22 cm pot diameter sourced — open-bed spacing UNVERIFIED.",
      "flags": [
        "spacing_unverified_needs_input",
        "feeder_unverified_in_source",
        "companions_unverified",
        "protected_crop_greenhouse_only"
      ],
      "sources": [
        "https://www.rhs.org.uk/vegetables/peppers/grow-your-own",
        "https://www.rhs.org.uk/vegetables/chilli-pepper/grow-your-own"
      ]
    },
    {
      "id": "aubergine",
      "name": "Aubergine",
      "botanicalName": "Solanum melongena",
      "family": "Solanaceae",
      "rotationGroup": "solanaceae",
      "rotationRole": "fruiting_heavy_feeder",
      "nitrogenFixer": false,
      "feeder": null,
      "feederConfidence": "unverified",
      "sun": "full",
      "heightClass": "medium",
      "habit": "bush",
      "matureHeightCm": null,
      "matureSpreadCm": null,
      "support": true,
      "supportNote": "Sturdy bamboo cane for heavy fruit.",
      "perennial": false,
      "protectedCropOnly": true,
      "sowingMethod": "indoors",
      "spacing": {
        "inRowCm": null,
        "betweenRowCm": null,
        "plantsPerSqMSource": null,
        "planningPlantsPerSqM": null,
        "blockSpacingCm": null,
        "confidence": "unverified"
      },
      "calendar": {
        "sow": [
          2,
          3
        ],
        "plantOut": [
          5
        ],
        "harvest": [
          8,
          9,
          10
        ],
        "protect": [
          1,
          2,
          3,
          4,
          5,
          6,
          7,
          8,
          9,
          10,
          11,
          12
        ],
        "daysToMaturity": null,
        "confidence": "explicit",
        "seasonMapped": false,
        "harvestDerived": false
      },
      "pests": [
        {
          "name": "Glasshouse whitefly",
          "type": "pest",
          "organicControl": "Biological predators or trap crops.",
          "watchMonths": [
            6,
            7,
            8
          ],
          "source": "https://www.rhs.org.uk/vegetables/aubergines/grow-your-own"
        },
        {
          "name": "Glasshouse red spider mite",
          "type": "pest",
          "organicControl": "Increase humidity by damping down.",
          "watchMonths": [
            6,
            7,
            8
          ],
          "source": "https://www.rhs.org.uk/vegetables/aubergines/grow-your-own"
        }
      ],
      "companions": {
        "allies": [],
        "avoid": []
      },
      "fieldNotes": "PROTECTED CROP (needs greenhouse/polytunnel all season). SPACING UNVERIFIED. Companions UNVERIFIED.",
      "flags": [
        "spacing_unverified_needs_input",
        "feeder_unverified_in_source",
        "companions_unverified",
        "protected_crop_greenhouse_only"
      ],
      "sources": [
        "https://www.rhs.org.uk/vegetables/aubergines/grow-your-own"
      ]
    },
    {
      "id": "strawberry",
      "name": "Strawberry",
      "botanicalName": "Fragaria x ananassa",
      "family": "Rosaceae",
      "rotationGroup": "perennial",
      "rotationRole": "perennial",
      "nitrogenFixer": false,
      "feeder": null,
      "feederConfidence": "unverified",
      "sun": "full",
      "heightClass": "low",
      "habit": "low",
      "matureHeightCm": null,
      "matureSpreadCm": null,
      "support": false,
      "supportNote": null,
      "perennial": true,
      "protectedCropOnly": false,
      "sowingMethod": "runners",
      "spacing": {
        "inRowCm": {
          "min": 30,
          "max": 30
        },
        "betweenRowCm": {
          "min": 75,
          "max": 75
        },
        "plantsPerSqMSource": {
          "min": 4.4,
          "max": 4.4
        },
        "planningPlantsPerSqM": 4.4,
        "blockSpacingCm": 48,
        "confidence": "verified"
      },
      "calendar": {
        "sow": [
          8,
          9
        ],
        "plantOut": [
          3,
          4,
          5
        ],
        "harvest": [
          6,
          7
        ],
        "protect": [
          3,
          4
        ],
        "daysToMaturity": null,
        "confidence": "explicit",
        "seasonMapped": false,
        "harvestDerived": false
      },
      "pests": [
        {
          "name": "Grey mould",
          "type": "disease",
          "organicControl": "Straw mulch under fruit; water at the base only.",
          "watchMonths": [
            6,
            7
          ],
          "source": "https://www.rhs.org.uk/fruit/strawberries/grow-your-own"
        },
        {
          "name": "Red spider mite / aphids",
          "type": "pest",
          "organicControl": "Biological controls.",
          "watchMonths": [
            5,
            6,
            7
          ],
          "source": "https://www.rhs.org.uk/fruit/strawberries/grow-your-own"
        }
      ],
      "companions": {
        "allies": [
          {
            "partner": "garlic",
            "tier": 2,
            "reason": "Chopped garlic leaves theorised to repel aphids; weak evidence.",
            "inCropSet": true,
            "source": "https://www.rhs.org.uk/advice/grow-your-own/features/companion-planting"
          }
        ],
        "avoid": []
      },
      "fieldNotes": "Perennial — pin as a fixed bed feature, out of rotation.",
      "flags": [
        "feeder_unverified_in_source"
      ],
      "sources": [
        "https://www.rhs.org.uk/fruit/strawberries/grow-your-own"
      ]
    },
    {
      "id": "rhubarb",
      "name": "Rhubarb",
      "botanicalName": "Rheum rhabarbarum",
      "family": "Polygonaceae",
      "rotationGroup": "perennial",
      "rotationRole": "perennial",
      "nitrogenFixer": false,
      "feeder": null,
      "feederConfidence": "unverified",
      "sun": "full-or-partial",
      "heightClass": "medium",
      "habit": "large-leaf",
      "matureHeightCm": null,
      "matureSpreadCm": null,
      "support": false,
      "supportNote": null,
      "perennial": true,
      "protectedCropOnly": false,
      "sowingMethod": "crowns",
      "spacing": {
        "inRowCm": {
          "min": 100,
          "max": 100
        },
        "betweenRowCm": {
          "min": 120,
          "max": 120
        },
        "plantsPerSqMSource": {
          "min": 0.83,
          "max": 0.83
        },
        "planningPlantsPerSqM": 0.83,
        "blockSpacingCm": 110,
        "confidence": "verified"
      },
      "calendar": {
        "sow": [
          10,
          11,
          3,
          4
        ],
        "plantOut": [
          10,
          11,
          3,
          4
        ],
        "harvest": [
          4,
          5,
          6,
          7
        ],
        "protect": [
          1,
          2
        ],
        "daysToMaturity": null,
        "confidence": "explicit",
        "seasonMapped": false,
        "harvestDerived": false
      },
      "pests": [],
      "companions": {
        "allies": [],
        "avoid": []
      },
      "fieldNotes": "Perennial, very large footprint (1 m). Pests & companions UNVERIFIED. Optional forcing in late winter.",
      "flags": [
        "feeder_unverified_in_source",
        "companions_unverified"
      ],
      "sources": [
        "https://www.rhs.org.uk/fruit/rhubarb/grow-your-own"
      ]
    },
    {
      "id": "asparagus",
      "name": "Asparagus",
      "botanicalName": "Asparagus officinalis",
      "family": "Asparagaceae",
      "rotationGroup": "perennial",
      "rotationRole": "perennial",
      "nitrogenFixer": false,
      "feeder": null,
      "feederConfidence": "unverified",
      "sun": "full",
      "heightClass": "tall",
      "habit": "fern",
      "matureHeightCm": null,
      "matureSpreadCm": null,
      "support": true,
      "supportNote": "Support summer ferns with twine/stakes against wind.",
      "perennial": true,
      "protectedCropOnly": false,
      "sowingMethod": "crowns",
      "spacing": {
        "inRowCm": null,
        "betweenRowCm": null,
        "plantsPerSqMSource": null,
        "planningPlantsPerSqM": null,
        "blockSpacingCm": null,
        "confidence": "unverified"
      },
      "calendar": {
        "sow": [],
        "plantOut": [
          3,
          4
        ],
        "harvest": [
          4,
          5
        ],
        "protect": [],
        "daysToMaturity": null,
        "confidence": "explicit",
        "seasonMapped": false,
        "harvestDerived": false
      },
      "pests": [
        {
          "name": "Asparagus beetle",
          "type": "pest",
          "organicControl": "Hand-pick adults/larvae daily through May.",
          "watchMonths": [
            5,
            6
          ],
          "source": "https://www.rhs.org.uk/advice/grow-your-own/in-month/may-jobs"
        }
      ],
      "companions": {
        "allies": [],
        "avoid": []
      },
      "fieldNotes": "Perennial, out of rotation. SPACING UNVERIFIED. Dedicated permanent bed; ~2-3 yrs to first crop.",
      "flags": [
        "spacing_unverified_needs_input",
        "feeder_unverified_in_source",
        "companions_unverified"
      ],
      "sources": [
        "https://www.rhs.org.uk/vegetables/asparagus/grow-your-own"
      ]
    }
  ]
}