Phase 4-5: deployable container + corpus snapshot + CI fixes

deploy/docker-compose.yml — replace <product>/<registry> placeholders
with concrete values for Drawbar's stack:
- image: git.jpaul.io/justin/seed-mcp:latest (CF tunnel for pulls; CI
  pushes via LAN 192.168.0.2:1234 to avoid 100 MB body cap)
- container_name: seed-mcp
- port 8001:8000 (8001 host-side to not collide with crop-chem-docs
  on 8000)
- PRODUCT_NAME=crop_seed, hybrid search enabled, stateless HTTP
- llama-rerank shared with crop-chem-docs (NOT redefined here —
  expected to already be in Drawbar's parent compose network)
- networks.drawbar-mcp external: true so seed-mcp joins the existing
  cross-MCP shared network

.gitignore — corpus/ is now COMMITTED, not ignored. The monthly
refresh workflow scrapes and commits corpus changes; the image-only
workflow rebuilds indexes from the committed corpus. Allowing the
corpus to flow through git means the :corpus-YYYY.MM.DD image tag
pins to a specific seed-catalog snapshot. chroma/ and bm25/ remain
ignored — those are deterministically derived from corpus.

Initial committed snapshot: 614 varieties.
- bayer_seeds: 475 (DEKALB 288 + Asgrow 102 + WestBred 85)
- golden_harvest: 139 (Syngenta corn + soy; 36 sitemap URLs
  302-redirected = discontinued)

rag/chunk.py — normalize brand and crop to uppercase/lowercase in
Chroma metadata so cross-vendor brand-filter lookups don't break on
casing inconsistency (Bayer stores "DEKALB", Golden Harvest stores
"Golden Harvest"; _build_where uppercases user-supplied brand which
matched the former but not the latter pre-fix). Sidecar JSON keeps
original casing for display.

Stub scrapers (nk, agripro, becks_pfr, becks_products) — change
return code from 2 to 0 so the monthly-refresh CI workflow doesn't
fail on deferred sources. Real implementations will return 0 on
success / 1 on failure when they ship.

Smoke-tested cross-vendor retrieval against the 614-chunk index:
- list_versions shows both vendors with correct facet counts
- broad "corn hybrid 100 RM" query returns both DEKALB and Golden
  Harvest hits in top 5
- brand='Golden Harvest' filter returns 3 GH-only varieties
- variety-code prefilter still works (E085Z5 → top hit on GH)

Co-Authored-By: Claude Opus 4.7 (1M context) <[email protected]>
This commit is contained in:
2026-05-25 13:40:05 -04:00
co-authored by Claude Opus 4.7
parent 9d4a490731
commit 75f714b454
1235 changed files with 284483 additions and 94 deletions
+598
View File
@@ -0,0 +1,598 @@
{
"source": "bayer_seeds",
"source_key": "dekalb-dkc69-99",
"vendor": "Bayer",
"brand": "DEKALB",
"product_name": "DKC69-99 BRAND",
"product_id": "CORN_DKC69-99 BRAND_DEKALB_US",
"hybrid_prefix": "DKC69-99",
"hybrid_suffix": "BRAND",
"crop": "corn",
"release_year": 2021,
"relative_maturity": "119",
"maturity_group": null,
"wheat_class": null,
"trait_stack": [
"TRE"
],
"trait_descriptions": [
"Trecepta™ corn"
],
"positioning_statement": "DKC69-99 Brand is a 119 RM corn that offers excellent yield performance in the Southern Midwest and coastal U.S. Typically an attractive, robust plant type; it offers excellent staygreen and test weight. Ability to perform in stressed growing conditions.",
"strengths": [
"Plant at medium to medium high plant populations",
"Has shown excellent test weight, grain quality",
"Position on moderate to highly productive soils to maximize yield potential",
"Has shown adequate husk coverage",
"Avoid areas with high levels of Goss's Wilt pressure",
"Placement caution in areas of high greensnap risk"
],
"characteristics_groups": [
{
"label": "DISEASE RATINGS",
"type": "disease ratings",
"items": [
{
"characteristic": "GRAY LEAF SPOT",
"value": "5"
},
{
"characteristic": "SOUTHERN RUST",
"value": "4"
},
{
"characteristic": "ANTHRACNOSE STALK ROT",
"value": "4"
},
{
"characteristic": "GOSS'S WILT",
"value": "5"
},
{
"characteristic": "SOUTHERN CORN LEAF BLIGHT",
"value": "3"
},
{
"characteristic": "NORTHERN CORN LEAF BLIGHT - RACE 1",
"value": "3"
}
]
},
{
"label": "GROWTH",
"type": "growth",
"items": [
{
"characteristic": "SEEDLING GROWTH",
"value": "3"
},
{
"characteristic": "EMERGENCE",
"value": "3"
},
{
"characteristic": "ROOT STRENGTH",
"value": "3"
},
{
"characteristic": "STALK STRENGTH",
"value": "3"
},
{
"characteristic": "DROUGHT TOLERANCE",
"value": "3"
},
{
"characteristic": "GREENSNAP TOLERANCE",
"value": "5"
},
{
"characteristic": "PLANT HEIGHT",
"value": "Tall"
},
{
"characteristic": "EAR PLACEMENT",
"value": "Med High"
}
]
},
{
"label": "MANAGEMENT",
"type": "management",
"items": [
{
"characteristic": "GDUS TO MID-POLLINATION",
"value": "1400"
},
{
"characteristic": "GDUS TO BLACK LAYER",
"value": "2970"
},
{
"characteristic": "VALUE ADDED TRAIT",
"value": "TRE"
},
{
"characteristic": "RELATIVE MATURITY",
"value": "119"
},
{
"characteristic": "PLANTING RATE",
"value": "Med Low"
},
{
"characteristic": "NEW PRODUCT",
"value": "NO"
},
{
"characteristic": "VARIETY",
"value": "01080395"
}
]
},
{
"label": "HARVEST",
"type": "harvest",
"items": [
{
"characteristic": "STAYGREEN",
"value": "2"
},
{
"characteristic": "HARVEST APPEARANCE",
"value": "2"
},
{
"characteristic": "DRYDOWN",
"value": "3"
},
{
"characteristic": "TEST WEIGHT",
"value": "1"
}
]
},
{
"label": "HERBICIDE",
"type": "herbicide",
"items": [
{
"characteristic": "GROWTH REGULATORS SENSITIVITY",
"value": "A"
},
{
"characteristic": "ISOXAZOLES SENSITIVITY - PREEMERGENCE",
"value": "A"
},
{
"characteristic": "SULFONYLUREAS SENSITIVITY",
"value": "A"
}
]
},
{
"label": "PLANT DESCRIPTION",
"type": "plant description",
"items": [
{
"characteristic": "COB COLOR",
"value": "Red"
},
{
"characteristic": "KERNEL CAP COLOR",
"value": "Yellow"
},
{
"characteristic": "KERNEL ROW",
"value": "18"
}
]
}
],
"_scale_direction": "1-9 (9 = best)",
"regional_recommendations": [
{
"product_list_name": "Texas -- South of I-10",
"agronomist": "Scott Stanislav",
"agronomist_email": "[email protected]",
"variant_id": "CORN_DKC69-99 BRAND_DEKALB_US_2026_G2G_1"
},
{
"product_list_name": "West Tennessee",
"agronomist": "Wes Rodgers",
"agronomist_email": "[email protected]",
"variant_id": "CORN_DKC69-99 BRAND_DEKALB_US_2026_G1A_1"
},
{
"product_list_name": "Southeast (AL/FL/GA) 2025#2",
"agronomist": "Eddie Beasley",
"agronomist_email": "[email protected]",
"variant_id": "CORN_DKC69-99 BRAND_DEKALB_US_2026_G7R_1"
},
{
"product_list_name": "2025 Seed Guide",
"agronomist": "Greg Ferguson",
"agronomist_email": "[email protected]",
"variant_id": "CORN_DKC69-99 BRAND_DEKALB_US_2026_G3P_1"
},
{
"product_list_name": "2025 Seed Guide",
"agronomist": "Zachary Webb",
"agronomist_email": "[email protected]",
"variant_id": "CORN_DKC69-99 BRAND_DEKALB_US_2026_G4N_2"
},
{
"product_list_name": "2025 Seed Guide",
"agronomist": "Greg Ferguson",
"agronomist_email": "[email protected]",
"variant_id": "CORN_DKC69-99 BRAND_DEKALB_US_2026_G3R_1"
},
{
"product_list_name": "Eastern NC & Southeast VA",
"agronomist": "Zachary Webb",
"agronomist_email": "[email protected]",
"variant_id": "CORN_DKC69-99 BRAND_DEKALB_US_2026_G4R_1"
},
{
"product_list_name": "2025 Seed Guide",
"agronomist": "Zachary Webb",
"agronomist_email": "[email protected]",
"variant_id": "CORN_DKC69-99 BRAND_DEKALB_US_2026_G4F_2"
},
{
"product_list_name": "South Carolina/ SE North Carolina",
"agronomist": "Zachary Webb",
"agronomist_email": "[email protected]",
"variant_id": "CORN_DKC69-99 BRAND_DEKALB_US_2026_G4H_1"
},
{
"product_list_name": "North Delta",
"agronomist": "Josh Rupard",
"agronomist_email": "[email protected]",
"variant_id": "CORN_DKC69-99 BRAND_DEKALB_US_2026_G1H_1"
},
{
"product_list_name": "CAROLINAS/SE VIRGINIA",
"agronomist": "Zachary Webb",
"agronomist_email": "[email protected]",
"variant_id": "CORN_DKC69-99 BRAND_DEKALB_US_2026_G4A_1"
},
{
"product_list_name": "CAROLINAS/SE VIRGINIA",
"agronomist": "Zachary Webb",
"agronomist_email": "[email protected]",
"variant_id": "CORN_DKC69-99 BRAND_DEKALB_US_2026_G4D_1"
},
{
"product_list_name": "Eastern NC & Southeast VA",
"agronomist": "Zachary Webb",
"agronomist_email": "[email protected]",
"variant_id": "CORN_DKC69-99 BRAND_DEKALB_US_2026_G4F_1"
},
{
"product_list_name": "North and Central TX",
"agronomist": "Steve Carlson",
"agronomist_email": "[email protected]",
"variant_id": "CORN_DKC69-99 BRAND_DEKALB_US_2026_G2J_1"
},
{
"product_list_name": "Eastern NC & Southeast VA",
"agronomist": "Zachary Webb",
"agronomist_email": "[email protected]",
"variant_id": "CORN_DKC69-99 BRAND_DEKALB_US_2026_G4N_1"
},
{
"product_list_name": "CAROLINAS/SE VIRGINIA",
"agronomist": "Zachary Webb",
"agronomist_email": "[email protected]",
"variant_id": "CORN_DKC69-99 BRAND_DEKALB_US_2026_G4Q_4"
},
{
"product_list_name": "Southeast (AL/FL/GA) 2025#2",
"agronomist": "Eddie Beasley",
"agronomist_email": "[email protected]",
"variant_id": "CORN_DKC69-99 BRAND_DEKALB_US_2026_G7L_1"
},
{
"product_list_name": "Southeast (AL/FL/GA) 2025#2",
"agronomist": "Vint Hicks",
"agronomist_email": "[email protected]",
"variant_id": "CORN_DKC69-99 BRAND_DEKALB_US_2026_G7H_1"
},
{
"product_list_name": "CAROLINAS/SE VIRGINIA",
"agronomist": "Zachary Webb",
"agronomist_email": "[email protected]",
"variant_id": "CORN_DKC69-99 BRAND_DEKALB_US_2026_G4R_4"
},
{
"product_list_name": "2025 Seed Guide",
"agronomist": "Greg Ferguson",
"agronomist_email": "[email protected]",
"variant_id": "CORN_DKC69-99 BRAND_DEKALB_US_2026_G3A_1"
},
{
"product_list_name": "2025 Seed Guide",
"agronomist": "Greg Ferguson",
"agronomist_email": "[email protected]",
"variant_id": "CORN_DKC69-99 BRAND_DEKALB_US_2026_G3Q_1"
},
{
"product_list_name": "South Carolina/ SE North Carolina",
"agronomist": "Zachary Webb",
"agronomist_email": "[email protected]",
"variant_id": "CORN_DKC69-99 BRAND_DEKALB_US_2026_G4G_3"
},
{
"product_list_name": "2025 Seed Guide",
"agronomist": "Greg Ferguson",
"agronomist_email": "[email protected]",
"variant_id": "CORN_DKC69-99 BRAND_DEKALB_US_2026_G3F_1"
},
{
"product_list_name": "CAROLINAS/SE VIRGINIA",
"agronomist": "Jim Kiser",
"agronomist_email": "[email protected]",
"variant_id": "CORN_DKC69-99 BRAND_DEKALB_US_2026_G4A_3"
},
{
"product_list_name": "2025 Seed Guide",
"agronomist": "Greg Ferguson",
"agronomist_email": "[email protected]",
"variant_id": "CORN_DKC69-99 BRAND_DEKALB_US_2026_G3M_1"
},
{
"product_list_name": "North Delta",
"agronomist": "Josh Rupard",
"agronomist_email": "[email protected]",
"variant_id": "CORN_DKC69-99 BRAND_DEKALB_US_2026_G1Q_1"
},
{
"product_list_name": "South Carolina/ SE North Carolina",
"agronomist": "Zachary Webb",
"agronomist_email": "[email protected]",
"variant_id": "CORN_DKC69-99 BRAND_DEKALB_US_2026_G4F_3"
},
{
"product_list_name": "West Tennessee",
"agronomist": "Wes Rodgers",
"agronomist_email": "[email protected]",
"variant_id": "CORN_DKC69-99 BRAND_DEKALB_US_2026_G1J_1"
},
{
"product_list_name": "South Carolina/ SE North Carolina",
"agronomist": "Zachary Webb",
"agronomist_email": "[email protected]",
"variant_id": "CORN_DKC69-99 BRAND_DEKALB_US_2026_G4K_3"
},
{
"product_list_name": "2025 Seed Guide",
"agronomist": "Zachary Webb",
"agronomist_email": "[email protected]",
"variant_id": "CORN_DKC69-99 BRAND_DEKALB_US_2026_G4B_2"
},
{
"product_list_name": "Texas -- South of I-10",
"agronomist": "Scott Stanislav",
"agronomist_email": "[email protected]",
"variant_id": "CORN_DKC69-99 BRAND_DEKALB_US_2026_G2M_1"
},
{
"product_list_name": "CAROLINAS/SE VIRGINIA",
"agronomist": "Zachary Webb",
"agronomist_email": "[email protected]",
"variant_id": "CORN_DKC69-99 BRAND_DEKALB_US_2026_G4B_4"
},
{
"product_list_name": "2025 Seed Guide",
"agronomist": "Zachary Webb",
"agronomist_email": "[email protected]",
"variant_id": "CORN_DKC69-99 BRAND_DEKALB_US_2026_G4Q_2"
},
{
"product_list_name": "North and Central TX",
"agronomist": "Steve Carlson",
"agronomist_email": "[email protected]",
"variant_id": "CORN_DKC69-99 BRAND_DEKALB_US_2026_G2C_1"
},
{
"product_list_name": "CAROLINAS/SE VIRGINIA",
"agronomist": "Zachary Webb",
"agronomist_email": "[email protected]",
"variant_id": "CORN_DKC69-99 BRAND_DEKALB_US_2026_G4N_4"
},
{
"product_list_name": "South Carolina/ SE North Carolina",
"agronomist": "Zachary Webb",
"agronomist_email": "[email protected]",
"variant_id": "CORN_DKC69-99 BRAND_DEKALB_US_2026_G4B_3"
},
{
"product_list_name": "South Carolina/ SE North Carolina",
"agronomist": "Zachary Webb",
"agronomist_email": "[email protected]",
"variant_id": "CORN_DKC69-99 BRAND_DEKALB_US_2026_G4R_3"
},
{
"product_list_name": "2025 Seed Guide",
"agronomist": "Zachary Webb",
"agronomist_email": "[email protected]",
"variant_id": "CORN_DKC69-99 BRAND_DEKALB_US_2026_G4R_2"
},
{
"product_list_name": "North Delta",
"agronomist": "Josh Rupard",
"agronomist_email": "[email protected]",
"variant_id": "CORN_DKC69-99 BRAND_DEKALB_US_2026_G1R_1"
},
{
"product_list_name": "South Carolina/ SE North Carolina",
"agronomist": "Zachary Webb",
"agronomist_email": "[email protected]",
"variant_id": "CORN_DKC69-99 BRAND_DEKALB_US_2026_G4Q_3"
},
{
"product_list_name": "Texas -- South of I-10",
"agronomist": "Scott Stanislav",
"agronomist_email": "[email protected]",
"variant_id": "CORN_DKC69-99 BRAND_DEKALB_US_2026_G2A_1"
},
{
"product_list_name": "South Carolina/ SE North Carolina",
"agronomist": "Zachary Webb",
"agronomist_email": "[email protected]",
"variant_id": "CORN_DKC69-99 BRAND_DEKALB_US_2026_G4K_1"
},
{
"product_list_name": "Eastern NC & Southeast VA",
"agronomist": "Zachary Webb",
"agronomist_email": "[email protected]",
"variant_id": "CORN_DKC69-99 BRAND_DEKALB_US_2026_G4B_1"
},
{
"product_list_name": "Carolina's",
"agronomist": "Jim Kiser",
"agronomist_email": "[email protected]",
"variant_id": "CORN_DKC69-99 BRAND_DEKALB_US_2026_G4A_2"
},
{
"product_list_name": "Southeast (AL/FL/GA) 2025#2",
"agronomist": "Eddie Beasley",
"agronomist_email": "[email protected]",
"variant_id": "CORN_DKC69-99 BRAND_DEKALB_US_2026_G7D_1"
},
{
"product_list_name": "2025 Seed Guide",
"agronomist": "Greg Ferguson",
"agronomist_email": "[email protected]",
"variant_id": "CORN_DKC69-99 BRAND_DEKALB_US_2026_G3C_1"
},
{
"product_list_name": "South Carolina/ SE North Carolina",
"agronomist": "Zachary Webb",
"agronomist_email": "[email protected]",
"variant_id": "CORN_DKC69-99 BRAND_DEKALB_US_2026_G4G_1"
},
{
"product_list_name": "South Carolina/ SE North Carolina",
"agronomist": "Zachary Webb",
"agronomist_email": "[email protected]",
"variant_id": "CORN_DKC69-99 BRAND_DEKALB_US_2026_G4H_3"
},
{
"product_list_name": "2025 Seed Guide",
"agronomist": "Greg Ferguson",
"agronomist_email": "[email protected]",
"variant_id": "CORN_DKC69-99 BRAND_DEKALB_US_2026_G3B_1"
},
{
"product_list_name": "North and Central TX",
"agronomist": "Steve Carlson",
"agronomist_email": "[email protected]",
"variant_id": "CORN_DKC69-99 BRAND_DEKALB_US_2026_G2K_1"
},
{
"product_list_name": "North Delta",
"agronomist": "Josh Rupard",
"agronomist_email": "[email protected]",
"variant_id": "CORN_DKC69-99 BRAND_DEKALB_US_2026_G1C_1"
},
{
"product_list_name": "South Carolina/ SE North Carolina",
"agronomist": "Zachary Webb",
"agronomist_email": "[email protected]",
"variant_id": "CORN_DKC69-99 BRAND_DEKALB_US_2026_G4N_3"
},
{
"product_list_name": "CAROLINAS/SE VIRGINIA",
"agronomist": "Zachary Webb",
"agronomist_email": "[email protected]",
"variant_id": "CORN_DKC69-99 BRAND_DEKALB_US_2026_G4F_4"
},
{
"product_list_name": "CAROLINAS/SE VIRGINIA",
"agronomist": "Jim Kiser",
"agronomist_email": "[email protected]",
"variant_id": "CORN_DKC69-99 BRAND_DEKALB_US_2026_G4D_2"
},
{
"product_list_name": "CAROLINAS/SE VIRGINIA",
"agronomist": "Zachary Webb",
"agronomist_email": "[email protected]",
"variant_id": "CORN_DKC69-99 BRAND_DEKALB_US_2026_G4G_2"
},
{
"product_list_name": "North and Central TX",
"agronomist": "Steve Carlson",
"agronomist_email": "[email protected]",
"variant_id": "CORN_DKC69-99 BRAND_DEKALB_US_2026_G2U_1"
},
{
"product_list_name": "Eastern NC & Southeast VA",
"agronomist": "Zachary Webb",
"agronomist_email": "[email protected]",
"variant_id": "CORN_DKC69-99 BRAND_DEKALB_US_2026_G4Q_1"
},
{
"product_list_name": "CAROLINAS/SE VIRGINIA",
"agronomist": "Zachary Webb",
"agronomist_email": "[email protected]",
"variant_id": "CORN_DKC69-99 BRAND_DEKALB_US_2026_G4K_2"
},
{
"product_list_name": "CAROLINAS/SE VIRGINIA",
"agronomist": "Zachary Webb",
"agronomist_email": "[email protected]",
"variant_id": "CORN_DKC69-99 BRAND_DEKALB_US_2026_G4H_2"
},
{
"product_list_name": "2025 Seed Guide",
"agronomist": "Greg Ferguson",
"agronomist_email": "[email protected]",
"variant_id": "CORN_DKC69-99 BRAND_DEKALB_US_2026_G3N_1"
},
{
"product_list_name": "North Delta",
"agronomist": "Josh Rupard",
"agronomist_email": "[email protected]",
"variant_id": "CORN_DKC69-99 BRAND_DEKALB_US_2026_G1D_1"
},
{
"product_list_name": "North Delta",
"agronomist": "Josh Rupard",
"agronomist_email": "[email protected]",
"variant_id": "CORN_DKC69-99 BRAND_DEKALB_US_2026_G1B_1"
},
{
"product_list_name": "Southeast (AL/FL/GA) 2025#2",
"agronomist": "Vint Hicks",
"agronomist_email": "[email protected]",
"variant_id": "CORN_DKC69-99 BRAND_DEKALB_US_2026_G7P_1"
},
{
"product_list_name": "North Delta",
"agronomist": "Josh Rupard",
"agronomist_email": "[email protected]",
"variant_id": "CORN_DKC69-99 BRAND_DEKALB_US_2026_G1G_1"
},
{
"product_list_name": "Southeast (AL/FL/GA) 2025#2",
"agronomist": "Eddie Beasley",
"agronomist_email": "[email protected]",
"variant_id": "CORN_DKC69-99 BRAND_DEKALB_US_2026_G7B_1"
},
{
"product_list_name": "South Carolina/ SE North Carolina",
"agronomist": "Zachary Webb",
"agronomist_email": "[email protected]",
"variant_id": "CORN_DKC69-99 BRAND_DEKALB_US_2026_G4D_3"
}
],
"image_url": "https://cs-assets.bayer.com/is/image/bayer/62503_31_MY23_DK_SEED_BAG_RENDERING_TRECEPTA_A",
"source_urls": [
"https://www.cropscience.bayer.us/corn/dekalb/dekalb-dkc69-99-corn"
],
"sitemap_last_modified": "2026-05-12T14:40:41.961Z",
"fetched_at": "2026-05-25T17:06:42.285124+00:00",
"scraper_version": "0.1.0"
}