Schedule and notifications¶
Refresh schedule¶
Settings → Refresh schedule. Two modes, checked once a minute by the running server:
- Refresh at
06:00, 11:00, 18:00, 23:00(default; PC-local clock times). Fires once per slot. A slot that passes while the server is down - or before it was started - is skipped, not run late. - Every N hours - used only when the list of times is empty.
The Jobs page shows "auto-refresh at … · next 18:00" beside the Refresh button, and the progress strip while a run is in flight. Each scheduled run does a full refresh, rescores, posts the Discord digest, and queues fit scoring for the gated new jobs.
A preview instance started with JOBSCOUT_PORT never schedules, so two servers on one machine
cannot refresh the same database at once.
There is no OS-level task
The scheduler lives inside python server.py. Keep it running (a terminal tab, a logon
task). python refresh.py is the CLI equivalent if you prefer the OS scheduler - but not
both at once.
Discord digest¶
Settings → Notifications: paste a webhook URL, tick enable, Send test. After every
refresh, the new postings at or above notify.min_score in your loc_classes (home, home
state, US-remote by default) are posted as one embed, max_items lines, with a link to the
Jobs page filtered to New this refresh. The webhook lives in config/local.yaml only.
"New this refresh"¶
db.upsert_jobs returns the ids it inserted; they are kept with the last-refresh report and
back the checkbox on the Jobs page, so "what arrived since I last looked" is one click even
without Discord.
Fit scoring after a refresh¶
New jobs that pass the gate are queued automatically (capped by fit.max_per_run); the Jobs
page shows "Fit scoring: N left · ~M min" and reloads as batches land. Switch it off under
Settings → Fit scoring if you want refreshes to stay cheap.