Here you go — just copy everything below the line:
Problem
fetch_fec_candidate() in fetch_finance.py passes is_active_candidate: True as a query parameter when hitting the FEC API. This filters out any member who hasn’t run a campaign recently, silently returning no FEC data for a large portion of currently serving Congress members.
Root cause
FEC’s definition of “active candidate” is narrower than “currently serving.” Members between election cycles, in safe seats, or who haven’t recently filed get excluded by this filter even though they’re in office right now.
Fix
Remove the is_active_candidate parameter from the FEC API call in fetch_fec_candidate(). Allow FEC to return all matching candidate records, then rely on name and state matching to identify the correct record.
File: fetch_finance.py → function fetch_fec_candidate()
Acceptance criteria
∙ is_active_candidate param removed from FEC API call
∙ Members previously returning empty FEC data now populate fec_candidate_id, fec_committee_id, total_raised, pac_contributions, individual_contributions, and cash_on_hand
∙ No regression on members who were already populating correctly
∙ No new duplicate candidate matches introduced by loosening the filter
Here you go — just copy everything below the line:
Problem
fetch_fec_candidate() in fetch_finance.py passes is_active_candidate: True as a query parameter when hitting the FEC API. This filters out any member who hasn’t run a campaign recently, silently returning no FEC data for a large portion of currently serving Congress members.
Root cause
FEC’s definition of “active candidate” is narrower than “currently serving.” Members between election cycles, in safe seats, or who haven’t recently filed get excluded by this filter even though they’re in office right now.
Fix
Remove the is_active_candidate parameter from the FEC API call in fetch_fec_candidate(). Allow FEC to return all matching candidate records, then rely on name and state matching to identify the correct record.
File: fetch_finance.py → function fetch_fec_candidate()
Acceptance criteria
∙ is_active_candidate param removed from FEC API call
∙ Members previously returning empty FEC data now populate fec_candidate_id, fec_committee_id, total_raised, pac_contributions, individual_contributions, and cash_on_hand
∙ No regression on members who were already populating correctly
∙ No new duplicate candidate matches introduced by loosening the filter