Build what AGT.83a measured (10/10 filed-and-correct on both free backends): a structured-extraction phase generated from the category spec (the instruction and the field list as data, not in worker.py), a worker mode that runs it without an agent loop - tool_get_file for the named pages, one json_schema/format call, deterministic guards (not-stated to null, numbers must be in the page text), one validate-and-retry - and files one ContentType.SolarPanel row on the moderated Products list (lands Pending). The research workflow then splits: extraction per datasheet, the agentic loop only for offers and reviews.