Add 4 independent seed brands: Latham, Stine, 1st Choice, Burrus (+623 varieties)

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.
This commit is contained in:
2026-06-04 21:57:30 -04:00
parent 22e8092faf
commit 9600235466
1254 changed files with 103589 additions and 4 deletions
+33
View File
@@ -102,6 +102,39 @@ rows). *Soil Adaptability* uses `HR` (highly recommended) / `R`
all three. Ebbert's-style independent brand, but ratings ARE parsed
into structured groups so they're retrievable.
**Latham Hi-Tech Seeds**: numeric ratings `~1-9 where LOWER = BETTER`
(1 = best / most tolerant / most resistant) — **REVERSED from Bayer,
same direction as NK / AgriPro**. There's no on-page legend; the
direction was derived empirically (top-rated stalks/roots cluster at
1.01.5, weak traits at 3.03.5). Categorical values pass through
verbatim: SCN source (`PI 88788`), Phytophthora gene (`Rps 1k`),
Anthracnose (`ASR`). `NA`/blank = not rated.
**Stine Seed**: **corn** is `1-9 numeric, 9 = Excellent / best`
(HIGHER = better, same as Bayer — read from the on-page legend:
9 Excellent … 5 Below Average). **Soybeans are QUALITATIVE** (vigor
Excellent/Very Good/Good; disease Resistant/Strong/Good/Susceptible
where Resistant/Strong = best), with SCN source + RPS gene passed
through, not a number. So a Stine corn "8" is strong but a Latham
"8" is weak — never compare the raw numbers across these two.
**Burrus Seed**: numeric ratings `1-10, 10 = best / most tolerant`
(HIGHER = better; observed range 410). Herbicide tolerances and Bt
insect-protection are `Yes/No` (verbatim). `NR`/blank/`0`/`-` = not
rated. Covers brands Burrus / Power Plus / DONMARIO.
**1st Choice Seeds**: `0-10, HIGHER = better` (0-4 Below Average,
5 Average, 6 Good, 7 Very Good, 8 Excellent, 9-10 Superior). Many
older corn hybrids publish only partial ratings (source gap); wheat
is identity-only.
**⚠️ Direction is NOT consistent across the independents.** HIGHER =
better: Bayer, Golden Harvest, Stine(corn), ProHarvest(disease),
Burrus(1-10), 1st Choice(0-10). LOWER = better (1 = best): NK,
AgriPro, **Latham**. Qualitative (no direction): Stine(soy),
ProHarvest(general/agronomic), AgriPro(agronomic), Ebbert's. A raw
numeric rating is meaningless without its `_scale_direction`.
**Always check the chunk's "Rating scale" line or call
`lookup_variety(source_key)` and look at `_scale_direction` if you
are unsure.** Cross-vendor comparisons are valid AFTER you've