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:
justinandClaude Opus 4.7 committed 2026-05-25 13:40:05 -04:00
1 parent 9d4a490731
commit 75f714b454
1235 files changed
+284483 -94

No files matched your search

+360
View File
@@ -0,0 +1,360 @@
{
"source": "bayer_seeds",
"source_key": "dekalb-dkc112-35",
"vendor": "Bayer",
"brand": "DEKALB",
"product_name": "DKC112-35 BRAND",
"product_id": "CORN_DKC112-35 BRAND_DEKALB_US",
"hybrid_prefix": "DKC112-35",
"hybrid_suffix": "BRAND",
"crop": "corn",
"release_year": 2026,
"relative_maturity": "112",
"maturity_group": null,
"wheat_class": null,
"trait_stack": [
"SSP"
],
"trait_descriptions": [
"SmartStax® PRO with RNAi Technology"
],
"positioning_statement": "DKC112-35 brand is a broad acre SmartStax® PRO with RNAi Technology product with excellent yield potential, late season appearance and agronomics for a range of growing conditions.",
"strengths": [
"Candidate for early planting and late harvest.",
"Strong emergence and vigor.",
"Very good disease tolerance package.",
"Recommend medium to medium high populations.",
"Attractive plant type with consistent ear placement.",
"Good drought and heat stress tolerance."
],
"characteristics_groups": [
{
"label": "DISEASE RATINGS",
"type": "disease ratings",
"items": [
{
"characteristic": "GRAY LEAF SPOT",
"value": "5"
},
{
"characteristic": "COMMON RUST",
"value": "3"
},
{
"characteristic": "SOUTHERN RUST",
"value": "3"
},
{
"characteristic": "ANTHRACNOSE STALK ROT",
"value": "2"
},
{
"characteristic": "GOSS'S WILT",
"value": "4"
},
{
"characteristic": "EYE SPOT",
"value": "3"
},
{
"characteristic": "SOUTHERN CORN LEAF BLIGHT",
"value": "4"
},
{
"characteristic": "NORTHERN CORN LEAF BLIGHT - RACE 1",
"value": "4"
}
]
},
{
"label": "GROWTH",
"type": "growth",
"items": [
{
"characteristic": "SEEDLING GROWTH",
"value": "3"
},
{
"characteristic": "EMERGENCE",
"value": "3"
},
{
"characteristic": "ROOT STRENGTH",
"value": "2"
},
{
"characteristic": "STALK STRENGTH",
"value": "2"
},
{
"characteristic": "DROUGHT TOLERANCE",
"value": "3"
},
{
"characteristic": "GREENSNAP TOLERANCE",
"value": "3"
},
{
"characteristic": "PLANT HEIGHT",
"value": "Med Tall"
},
{
"characteristic": "EAR PLACEMENT",
"value": "Med High"
}
]
},
{
"label": "MANAGEMENT",
"type": "management",
"items": [
{
"characteristic": "GDUS TO MID-POLLINATION",
"value": "1334"
},
{
"characteristic": "GDUS TO BLACK LAYER",
"value": "2825"
},
{
"characteristic": "VALUE ADDED TRAIT",
"value": "SSP"
},
{
"characteristic": "RELATIVE MATURITY",
"value": "112"
},
{
"characteristic": "PLANTING RATE",
"value": "Med High"
},
{
"characteristic": "NEW PRODUCT",
"value": "NO"
},
{
"characteristic": "VARIETY",
"value": "01110953"
}
]
},
{
"label": "HARVEST",
"type": "harvest",
"items": [
{
"characteristic": "STAYGREEN",
"value": "2"
},
{
"characteristic": "HARVEST APPEARANCE",
"value": "2"
},
{
"characteristic": "DRYDOWN",
"value": "4"
},
{
"characteristic": "TEST WEIGHT",
"value": "5"
}
]
},
{
"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": "16"
}
]
}
],
"_scale_direction": "1-9 (9 = best)",
"regional_recommendations": [
{
"product_list_name": "Southeast (AL/FL/GA) 2026#2",
"agronomist": "Vint Hicks",
"agronomist_email": "[email protected]",
"variant_id": "CORN_DKC112-35 BRAND_DEKALB_US_2026_G7H_1"
},
{
"product_list_name": "2026 Seed Guide",
"agronomist": "Greg Ferguson",
"agronomist_email": "[email protected]",
"variant_id": "CORN_DKC112-35 BRAND_DEKALB_US_2026_G3A_1"
},
{
"product_list_name": "2026 Seed Guide",
"agronomist": "Greg Ferguson",
"agronomist_email": "[email protected]",
"variant_id": "CORN_DKC112-35 BRAND_DEKALB_US_2026_G3P_1"
},
{
"product_list_name": "2026 Seed Guide",
"agronomist": "Greg Ferguson",
"agronomist_email": "[email protected]",
"variant_id": "CORN_DKC112-35 BRAND_DEKALB_US_2026_G3M_1"
},
{
"product_list_name": "Eastern NC & Southeast VA",
"agronomist": "Zachary Webb",
"agronomist_email": "[email protected]",
"variant_id": "CORN_DKC112-35 BRAND_DEKALB_US_2026_G4G_1"
},
{
"product_list_name": "Eastern NC & Southeast VA",
"agronomist": "Zachary Webb",
"agronomist_email": "[email protected]",
"variant_id": "CORN_DKC112-35 BRAND_DEKALB_US_2026_G4H_1"
},
{
"product_list_name": "Eastern NC & Southeast VA",
"agronomist": "Zachary Webb",
"agronomist_email": "[email protected]",
"variant_id": "CORN_DKC112-35 BRAND_DEKALB_US_2026_G4Q_1"
},
{
"product_list_name": "2026 Seed Guide",
"agronomist": "Greg Ferguson",
"agronomist_email": "[email protected]",
"variant_id": "CORN_DKC112-35 BRAND_DEKALB_US_2026_G3B_1"
},
{
"product_list_name": "2026 Seed Guide",
"agronomist": "Greg Ferguson",
"agronomist_email": "[email protected]",
"variant_id": "CORN_DKC112-35 BRAND_DEKALB_US_2026_G3F_1"
},
{
"product_list_name": "2026 Seed Guide",
"agronomist": "Greg Ferguson",
"agronomist_email": "[email protected]",
"variant_id": "CORN_DKC112-35 BRAND_DEKALB_US_2026_G3N_1"
},
{
"product_list_name": "Eastern NC & Southeast VA",
"agronomist": "Zachary Webb",
"agronomist_email": "[email protected]",
"variant_id": "CORN_DKC112-35 BRAND_DEKALB_US_2026_G4B_1"
},
{
"product_list_name": "Eastern NC & Southeast VA",
"agronomist": "Zachary Webb",
"agronomist_email": "[email protected]",
"variant_id": "CORN_DKC112-35 BRAND_DEKALB_US_2026_G4D_1"
},
{
"product_list_name": "2026 Seed Guide",
"agronomist": "Greg Ferguson",
"agronomist_email": "[email protected]",
"variant_id": "CORN_DKC112-35 BRAND_DEKALB_US_2026_G3Q_1"
},
{
"product_list_name": "Eastern NC & Southeast VA",
"agronomist": "Zachary Webb",
"agronomist_email": "[email protected]",
"variant_id": "CORN_DKC112-35 BRAND_DEKALB_US_2026_G4N_1"
},
{
"product_list_name": "Southeast (AL/FL/GA) 2026",
"agronomist": "Eddie Beasley",
"agronomist_email": "[email protected]",
"variant_id": "CORN_DKC112-35 BRAND_DEKALB_US_2026_G7R_1"
},
{
"product_list_name": "Southeast (AL/FL/GA) 2026#2",
"agronomist": "Vint Hicks",
"agronomist_email": "[email protected]",
"variant_id": "CORN_DKC112-35 BRAND_DEKALB_US_2026_G7B_1"
},
{
"product_list_name": "2026 Seed Guide",
"agronomist": "Greg Ferguson",
"agronomist_email": "[email protected]",
"variant_id": "CORN_DKC112-35 BRAND_DEKALB_US_2026_G3C_1"
},
{
"product_list_name": "Southeast (AL/FL/GA) 2026",
"agronomist": "Eddie Beasley",
"agronomist_email": "[email protected]",
"variant_id": "CORN_DKC112-35 BRAND_DEKALB_US_2026_G7L_1"
},
{
"product_list_name": "Southeast (AL/FL/GA) 2026",
"agronomist": "Eddie Beasley",
"agronomist_email": "[email protected]",
"variant_id": "CORN_DKC112-35 BRAND_DEKALB_US_2026_G7D_1"
},
{
"product_list_name": "Eastern NC & Southeast VA",
"agronomist": "Zachary Webb",
"agronomist_email": "[email protected]",
"variant_id": "CORN_DKC112-35 BRAND_DEKALB_US_2026_G4A_1"
},
{
"product_list_name": "Eastern NC & Southeast VA",
"agronomist": "Zachary Webb",
"agronomist_email": "[email protected]",
"variant_id": "CORN_DKC112-35 BRAND_DEKALB_US_2026_G4K_1"
},
{
"product_list_name": "Southeast (AL/FL/GA) 2026#2",
"agronomist": "Vint Hicks",
"agronomist_email": "[email protected]",
"variant_id": "CORN_DKC112-35 BRAND_DEKALB_US_2026_G7P_1"
},
{
"product_list_name": "Eastern NC & Southeast VA",
"agronomist": "Zachary Webb",
"agronomist_email": "[email protected]",
"variant_id": "CORN_DKC112-35 BRAND_DEKALB_US_2026_G4F_1"
},
{
"product_list_name": "Eastern NC & Southeast VA",
"agronomist": "Zachary Webb",
"agronomist_email": "[email protected]",
"variant_id": "CORN_DKC112-35 BRAND_DEKALB_US_2026_G4R_1"
},
{
"product_list_name": "2026 Seed Guide",
"agronomist": "Greg Ferguson",
"agronomist_email": "[email protected]",
"variant_id": "CORN_DKC112-35 BRAND_DEKALB_US_2026_G3R_1"
}
],
"image_url": "https://cs-assets.bayer.com/is/image/bayer/62503_31_MY23_DK_SEED_BAG_RENDERING_SMARTSTAXPRO_RNAI_A",
"source_urls": [
"https://www.cropscience.bayer.us/corn/dekalb/dekalb-dkc112-35-corn"
],
"sitemap_last_modified": "2026-05-12T14:42:31.121Z",
"fetched_at": "2026-05-25T17:02:29.583011+00:00",
"scraper_version": "0.1.0"
}