# 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.