{"service":"pairing worker","now":"2026-11-06T23:17: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":"228c32f42e0e","started_at":"2026-11-06T23:14:42+00:00","finished_at":"2026-11-06T23:15:09+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":3,"added":3,"route":"Legistar calendar"}},{"step":"money","status":"skipped","detail":"campaign finance rows retrieved 2026-11-06 are newer than 7 days","counts":{}},{"step":"shortlist","status":"ok","detail":"8 new passages hit a donor's stated priority","counts":{"meetings_read":6,"funded_pairs":62,"new_candidates":8,"sent_to_filter":8,"left_for_next_run":0}},{"step":"filter","status":"ok","detail":"0 kept for review, 8 dropped with reasons","counts":{"judged":8,"kept_for_review":0,"dropped":8,"undecided_errors":0}}]},"next_run_at":"2026-11-07T23:15:09+00:00","next_run_in_seconds":86257,"next":"a run of the steps meetings, money, shortlist, filter","last_error":null,"counts":{"meetings_stored":6,"dropped_pairs_kept_with_reasons":19,"donor_statements":28,"approvals_logged":0}}