Four independent regional brands across IA/IN/IL (variety-identity sources, each parsed into structured characteristics_groups so ratings embed): - latham (264: 155 corn + 109 soy) — Latham Hi-Tech Seeds, Alexander IA. WordPress REST enum (/wp-json/wp/v2/varieties) + /products/<slug>/ detail HTML. Scale 1-9 LOWER=better (reversed, like NK/AgriPro). - stine (217: 58 corn + 159 soy) — Stine Seed, Adel IA (largest US independent). sitemap enum + /{crop}/traits/<slug>/<code>/ detail HTML. Corn 1-9 (9=best); soy qualitative. - first_choice (78: 52 corn + 22 soy + 4 wheat) — 1st Choice Seeds, Rushville IN (employee-owned). Per-crop sitemap -> detail HTML. Scale 0-10 higher=better. ~40 older corn pages thin at source; wheat identity-only. - burrus (64: 38 corn + 26 soy) — Burrus Seed, Arenzville IL. Seedware JSON API. Scale 1-10 (10=best). Brands Burrus/Power Plus/DONMARIO. robots ai-train=no + named-bot blocks; operator opted in, scraper uses a non-blacklisted UA + honors Crawl-delay 10. All 623 validated through rag.chunk.chunks_from_variety (0 errors; 6 identity-only pages from source gaps). No chunk.py change needed (identity sources auto-route to chunks_from_variety). Docs: - sources.json: 4 entries + Hoegemeyer added to _excluded_sources. The Corteva ToU (shared across pioneer.com / hoegemeyer.com / therightseed.com / corteva.com + the Vylor spinoff) bans scrapers + competitive use, so the whole Corteva family is one excluded ToU domain. - docs_mcp/lessons.md: rating-scales updated with all 4 directions + an explicit cross-vendor warning (Latham 1=best vs Stine/Burrus higher=best — never compare raw numbers without _scale_direction). - README + CLAUDE corpus inventory: now 2,268 variety + 6,787 trial records. CI rebuilds the index from the committed corpus.
Co-authored-by: claude <[email protected]> Co-committed-by: claude <[email protected]>