Files
seed-mcp/corpus/bayer_seeds/asgrow-ag27xf6.json
T
justin 75f714b454 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) <noreply@anthropic.com>
2026-05-25 13:40:05 -04:00

190 lines
4.9 KiB
JSON

{
"source": "bayer_seeds",
"source_key": "asgrow-ag27xf6",
"vendor": "Bayer",
"brand": "ASGROW",
"product_name": "AG27XF6 BRAND",
"product_id": "SOYBEANS_AG27XF6 BRAND_ASGROW_US",
"hybrid_prefix": "AG27XF6",
"hybrid_suffix": "BRAND",
"crop": "soybeans",
"release_year": 2026,
"relative_maturity": null,
"maturity_group": "2.7",
"wheat_class": null,
"trait_stack": [
"XF"
],
"trait_descriptions": [
"XtendFlex"
],
"positioning_statement": "Asgrow® AG27XF6 is a late 2 MG XtendFlex® soybean. AG27XF6 brand has very good standability, excellent resistance to brown stem rot and southern stem canker with potential for exceptional performance in high yielding environment.",
"strengths": [
"1) Medium-short plant with good standability.",
"2) Rps1c gene for resistance to Phytophthora with average field tolerance.",
"3) Excellent tolerance to brown stem rot and southern stem canker.",
"4) Potential for exceptional performance in high yielding environment.",
"5) Avoid placement at high white mold pressure environment."
],
"characteristics_groups": [
{
"label": "DISEASE RATINGS",
"type": "disease ratings",
"items": [
{
"characteristic": "SOYBEAN CYST NEMATODE",
"value": "MR3"
},
{
"characteristic": "PRR RESISTANCE",
"value": "Rps1c"
},
{
"characteristic": "PRR FIELD TOLERANCE",
"value": "5"
},
{
"characteristic": "WHITE MOLD",
"value": "6"
},
{
"characteristic": "BROWN STEM ROT",
"value": "2"
},
{
"characteristic": "SUDDEN DEATH SYNDROME",
"value": "6"
},
{
"characteristic": "SOUTHERN STEM CANKER",
"value": "2"
}
]
},
{
"label": "SENSITIVITY",
"type": "sensitivity",
"items": [
{
"characteristic": "CHLORIDE SENSITIVITY",
"value": "Inc"
}
]
},
{
"label": "MANAGEMENT",
"type": "management",
"items": [
{
"characteristic": "MATURITY GROUP",
"value": "2"
},
{
"characteristic": "VARIETY CODE",
"value": "01116483"
}
]
},
{
"label": "PLANT DESCRIPTION",
"type": "plantDescription",
"items": [
{
"characteristic": "GROWTH HABIT",
"value": "Indeterminate"
},
{
"characteristic": "HILUM COLOR",
"value": "BL"
},
{
"characteristic": "OIL CONTENT",
"value": "21.56"
},
{
"characteristic": "POD WALL COLOR",
"value": "BR"
},
{
"characteristic": "PROTEIN CONTENT",
"value": "39.1"
},
{
"characteristic": "RELATIVE MATURITY",
"value": "2.7"
},
{
"characteristic": "HERBICIDE TOLERANT TRAIT",
"value": "XF"
},
{
"characteristic": "CANOPY",
"value": "M"
},
{
"characteristic": "FLOWER COLOR",
"value": "Purple"
},
{
"characteristic": "PUBESCENCE COLOR",
"value": "T"
},
{
"characteristic": "PLANT HEIGHT CATEGORY",
"value": "MS"
}
]
},
{
"label": "PRODUCTION",
"type": "production",
"items": [
{
"characteristic": "EMERGENCE",
"value": "2"
},
{
"characteristic": "STANDABILITY",
"value": "3"
},
{
"characteristic": "NO-TILL ADAPTABILITY",
"value": "2"
},
{
"characteristic": "IRON CHLOROSIS",
"value": "6"
}
]
}
],
"_scale_direction": "1-9 (9 = best)",
"regional_recommendations": [
{
"product_list_name": "2027 Product Guide",
"agronomist": "Jeffrey Fuls",
"agronomist_email": "jeffrey.fuls@bayer.com",
"variant_id": "SOYBEANS_AG27XF6 BRAND_ASGROW_US_2027_J8L"
},
{
"product_list_name": "2027 Product Guide",
"agronomist": "Jeffrey Fuls",
"agronomist_email": "jeffrey.fuls@bayer.com",
"variant_id": "SOYBEANS_AG27XF6 BRAND_ASGROW_US_2027_J8P"
},
{
"product_list_name": "2027 Product Guide",
"agronomist": "Jeffrey Fuls",
"agronomist_email": "jeffrey.fuls@bayer.com",
"variant_id": "SOYBEANS_AG27XF6 BRAND_ASGROW_US_2027_J8J"
}
],
"image_url": "https://cs-assets.bayer.com/is/image/bayer/Asgrow_SeedBag_60267_2_B",
"source_urls": [
"https://www.cropscience.bayer.us/soybeans/asgrow/asgrow-ag27xf6-soybeans"
],
"sitemap_last_modified": "2026-05-18T15:42:27.744Z",
"fetched_at": "2026-05-25T16:59:36.865628+00:00",
"scraper_version": "0.1.0"
}