30b182e28a
User flagged LG, AgriGold, and Ebbert's (local Ohio breeder) are
all active in farmer territory. Built three scrapers — corpus now
covers 5,839 chunks across 11 brands.
Net new varieties: 310
lg_seeds 170 — corn 78 + soy 63 + alfalfa 16 + sorghum 13
→ adds FIRST alfalfa coverage (FD 3-5 range)
agrigold 111 — corn 60 + soy 51
ebberts_seeds 29 — corn 17 + soy 12 (regional OH/IN breeder)
scrape/sources/lg_seeds.py — embedded-JSON pattern (cleanest):
- /products/<crop> pages have a `var products = [...]` blob with the
variety summary (Variety, Maturity, Traits[], Bullets[], CropType).
- Per-variety detail page (/products/<crop>/<Variety>) carries the
ratings as `<span class="bar-N">` where N is 1-9 on the canonical
scale. Same 9=best direction as Bayer / Golden Harvest.
- Three sections per page: Characteristics / Management / Disease
Tolerance, plus a few qualitative bars ("Tar Spot Susceptible",
"Fungicide Response High") preserved as text values.
scrape/sources/agrigold.py — 5-circle scale:
- Listing page has 60+ /corn/explore-corn-hybrids/<CODE> URLs.
- Detail page renders ratings as <div class="scale"> blocks with 5
child <div class="circle"> elements, of which N have class
"circle selected" → rating N on a 1-5 scale.
- 7 sections per page incl. Silage Characteristics (Dairy Silage
Rating, NDFd 30 Hr, Crude Protein), Planting Applications, Soil
Adaptability, Plant Characteristics, Product Features.
- Distinct rating direction (1-5 vs Bayer's 1-9) — declared in
_scale_direction so chunker preamble renders correctly.
scrape/sources/ebberts_seeds.py — small regional breeder, verbatim
text approach:
- Single page per crop (corn / soybeans / wheat). Each variety is an
<h1> + multi-section CSS-grid block where labels and values are in
separate adjacent cells. Reconstructing perfectly-aligned columns
for a 29-variety total isn't worth the engineering — chunk body
carries the verbatim text in document order, LLM can read the
tabular content.
- Scale: 1-5 (1 = best, lower = more resistant), inferred from
marketing-vs-rating cross-checks ("Robust tall plants" + STANDABILITY
1.0 → 1 = best).
- Politeness: robots.txt asks for Crawl-delay: 5; honored.
All three new scrapers smoke-tested:
- LG corn LG5701 RM 116 SmartStax → 3 characteristic groups with
Disease Tolerance ratings (Northern/Southern Leaf Blight 8-9, etc.)
- AgriGold A616-30 RM 86 VT2RIB → 7 groups incl. silage and soil
adaptability ratings
- Ebbert's 7000TR RIB RM 100 → 1098-char verbatim body covering
CHARACTERISTICS, DISEASE RATINGS, herbicide tolerance, etc.
Corpus state after this PR:
- 5,839 chunks (was 5,529)
- 11 brands (was 8)
- 8 crops (corn 3047, soy 2209, silage 359, wheat 123, sorghum 49,
cotton 30, alfalfa 16, canola 6) — alfalfa is brand-new
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
38 lines
1002 B
JSON
38 lines
1002 B
JSON
{
|
|
"source": "ebberts_seeds",
|
|
"source_key": "ebberts-g3880e",
|
|
"vendor": "Ebbert's Seeds",
|
|
"brand": "Ebbert's Seeds",
|
|
"product_name": "G3880E",
|
|
"product_id": null,
|
|
"hybrid_prefix": "G3880E",
|
|
"hybrid_suffix": null,
|
|
"crop": "soybeans",
|
|
"release_year": null,
|
|
"relative_maturity": null,
|
|
"maturity_group": "3.8",
|
|
"wheat_class": null,
|
|
"trait_stack": [],
|
|
"trait_descriptions": [],
|
|
"positioning_statement": null,
|
|
"strengths": [],
|
|
"characteristics_groups": [],
|
|
"page_text_chars": 2707,
|
|
"_scale_direction": "1-5 (1 = best, lower = more resistant)",
|
|
"regional_recommendations": [
|
|
{
|
|
"product_list_name": "Ebbert's service area (Eastern Corn Belt — OH/IN/IL)",
|
|
"agronomist": null,
|
|
"agronomist_email": null,
|
|
"variant_id": null
|
|
}
|
|
],
|
|
"image_url": null,
|
|
"source_urls": [
|
|
"https://www.ebbertsseeds.com/soybeans-2/"
|
|
],
|
|
"sitemap_last_modified": null,
|
|
"fetched_at": "2026-05-26T16:36:52.143029+00:00",
|
|
"scraper_version": "0.1.0"
|
|
}
|