{"service":"pairing worker","now":"2026-11-06T23:45:31+00:00","does":"Once a day, slowly: fetches new Board and committee transcripts from Legistar and the officials' campaign filings from DataSF, shortlists passages that touch a donor's stated priority, asks the AI filter to drop pairs that share only topic words or take opposing positions (kept with reasons), and puts what is left in the review queue.","last_run":{"run_id":"7642be42488b","started_at":"2026-11-06T23:42:34+00:00","finished_at":"2026-11-06T23:45:01+00:00","status":"finished","steps":[{"step":"meetings","status":"ok","detail":"8 meeting rows of the Board and its standing committees carry no transcript link","counts":{"calendar_rows":99,"with_transcript":91,"already_stored":11,"added":3,"route":"Legistar calendar"}},{"step":"money","status":"ok","detail":"campaign finance rows retrieved 2026-11-06","counts":{"families":17,"rows":174,"independent_reports":390}},{"step":"shortlist","status":"ok","detail":"94 new passages hit a donor's stated priority","counts":{"meetings_read":14,"funded_pairs":62,"new_candidates":94,"sent_to_filter":40,"left_for_next_run":54}},{"step":"filter","status":"ok","detail":"2 kept for review, 38 dropped with reasons","counts":{"judged":40,"kept_for_review":2,"dropped":38,"undecided_errors":0}}]},"next_run_at":"2026-11-07T23:45:01+00:00","next_run_in_seconds":86369,"next":"a run of the steps meetings, money, shortlist, filter","last_error":null,"counts":{"pairings_approved":5,"pairings_pending":5,"meetings_stored":14,"dropped_pairs_kept_with_reasons":67,"donor_statements":29,"approvals_logged":6}}