Add ProHarvest Seeds: 119 varieties + 161 cross-vendor plot reports

ProHarvest Seeds (independent Corn Belt brand, proharvestseeds.com) exposes
a public, no-auth WordPress REST API — cleaner ingestion than the HTML-only
independents. Two new sources:

- `proharvest` (variety identity, 119 row-crop varieties: 70 corn / 47 soy /
  2 wheat). Enumerated via /wp/v2/seed (seed-type taxonomy), agronomics
  parsed from each /seed/<slug>/ detail page into structured
  characteristics_groups so the ratings actually embed. Mixed scale: disease
  1-9 numeric (9=best, no flip), agronomic/general qualitative, soil HR/R.

- `proharvest_plots` (trials, data_type=trial, 161 plots, 2024+2025). Per-
  cooperator harvest reports via the custom /wp-json/proharvest/v1/plots?y=
  endpoint + PDF table extraction. Many are cross-vendor head-to-head
  (ProHarvest/Apex vs Pioneer/DEKALB/Becks/Channel/Wyffels). Handles ruled
  tables, unruled tables (text fallback; soy drops the Test-Wt column → 4 vs
  5 numerics), and off-template third-party reports (sanity-gated to verbatim
  so junk rows never ship). Image-only PDFs skipped + counted.

- rag/chunk.py: route proharvest_plots through the shared cross-vendor plot
  renderer (structured) / verbatim body (raw_text fallback).
- sources.json + lessons.md (rating-scales, trial-data).
- README/CLAUDE.md corpus inventory brought current (it had drifted: bayer
  931 not 475; ebberts/lg/agrigold were unlisted). New totals: 1,645 variety
  + 6,787 trial records.

robots.txt permissive (only search + /dealer-* disallowed); no ToS
automation clause. CI rebuilds the index from the committed corpus.
This commit is contained in:
2026-06-04 21:04:33 -04:00
parent e356633d4f
commit 89eea0f2b4
567 changed files with 80023 additions and 8 deletions
@@ -0,0 +1,133 @@
{
"source": "proharvest_plots",
"source_key": "phpr-soybeans-2025-9840",
"data_type": "trial",
"vendor": "ProHarvest Seeds",
"brand": "ProHarvest Seeds",
"crop": "soybeans",
"state": "IL",
"state_abbrev": "il",
"city": "Hinckley",
"county": "Dekalb",
"year": 2025,
"plot_id": 9840,
"cooperator": "Agrinetics Seed Service",
"latitude": 41.769419415175776,
"longitude": -88.64045912028901,
"company_representative": "Jeff Horner",
"planted_date": "4/28/2025",
"harvested_date": "9/29/2025",
"previous_crop": "Corn",
"row_width": "30",
"population_seeds_per_acre": 140000,
"fungicide": null,
"herbicide": null,
"insecticide": null,
"tillage": "Conventional",
"irrigation": "Non-Irrigated",
"results": [
{
"brand": "ProHarvest",
"rank": 1,
"product": "AE2860",
"traits": null,
"metrics": {
"% H2O": 9.8,
"Test Wt.": 57.5,
"Yield": 88.03,
"+/- Ave": 2.1
}
},
{
"brand": "NuTech",
"rank": 2,
"product": "30N06E",
"traits": null,
"metrics": {
"% H2O": 9.9,
"Test Wt.": 56.7,
"Yield": 87.72,
"+/- Ave": 1.8
}
},
{
"brand": "NuTech",
"rank": 3,
"product": "28N05",
"traits": null,
"metrics": {
"% H2O": 10.5,
"Test Wt.": 54.3,
"Yield": 87.68,
"+/- Ave": 1.8
}
},
{
"brand": "ProHarvest",
"rank": 4,
"product": "3150",
"traits": null,
"metrics": {
"% H2O": 11.1,
"Test Wt.": 57.6,
"Yield": 87.62,
"+/- Ave": 1.7
}
},
{
"brand": "NuTech",
"rank": 5,
"product": "28N03E",
"traits": null,
"metrics": {
"% H2O": 10.6,
"Test Wt.": 56.8,
"Yield": 87.36,
"+/- Ave": 1.5
}
},
{
"brand": "NuTech",
"rank": 6,
"product": "29N05E",
"traits": null,
"metrics": {
"% H2O": 10.4,
"Test Wt.": 56.5,
"Yield": 84.52,
"+/- Ave": -1.4
}
},
{
"brand": "ProHarvest",
"rank": 7,
"product": "31E65S",
"traits": null,
"metrics": {
"% H2O": 10.7,
"Test Wt.": 57,
"Yield": 82.19,
"+/- Ave": -3.7
}
},
{
"brand": "ProHarvest",
"rank": 8,
"product": "2950",
"traits": null,
"metrics": {
"% H2O": 10.7,
"Test Wt.": 57.7,
"Yield": 81.97,
"+/- Ave": -3.9
}
}
],
"n_results": 8,
"raw_text": false,
"source_urls": [
"https://proharvestseeds.com/wp-content/uploads/2025/10/Soy-Agrinetics-Hinkley-IL-min.pdf"
],
"fetched_at": "2026-06-05T01:00:08.798869+00:00",
"scraper_version": "0.1.0"
}