1.4 KiB
USAC collector operations
From the repository root: python w1.py usac.
Offline parsing is covered by python -m unittest discover -s tests -v.
python w1.py usac --fixture PATH accepts saved index HTML, with the same output
behavior as the live command.
The public source is https://www.usac.org/about/procurement/. The collector
extracts solicitation identifiers, links and table dates, then classifies records
as potentially open, expired, awarded or needing date review. Presence in the
index is not proof of an actionable opportunity. It reads
data/opportunities.json for deduplication and never modifies that pipeline.
Outputs retain the legacy runs/YYYY-MM-DD/usac.json and new_candidates.json
locations using the machine's local date. Repeated runs on the same day overwrite
those two outputs; preserve them before a repeat. W1-017 did not change that
behavior. Its CLI test substitutes a temporary output root, preserving history.
If access or parsing fails, inspect the index and individual solicitation manually. Do not bypass access restrictions. Dates, eligibility, organizational references, insurance and submission requirements still require review before action. USAC IT-26-139 remains excluded by the existing bidder-readiness decision.
W1-017 corrected a discovered decoding issue: the existing pipeline has a UTF-8
BOM. USAC now reads it with utf-8-sig, as LRS already did. Pipeline bytes and
solicitation classification rules are unchanged.