docs: update README sources table and drop retired sciCORE watcher references
This commit is contained in:
@@ -1,13 +1,14 @@
|
||||
# linkme
|
||||
|
||||
A personal job-hunting pipeline for the Swiss market. It scrapes LinkedIn (plus a handful of Swiss boards), filters out everything that doesn't fit the profile in `cv/polo.md`, appends what survives to a CSV, and pushes the good ones to Telegram twice a day.
|
||||
A personal job-hunting pipeline for the Swiss market. It scrapes LinkedIn (plus a handful of Swiss boards), filters out everything that doesn't fit the profile in `cv/polo.md`, appends what survives to a CSV, and pushes the good ones to Telegram throughout the day.
|
||||
|
||||
Two things run on their own once installed:
|
||||
One thing runs on its own once installed:
|
||||
|
||||
| automation | when | what it does |
|
||||
|---|---|---|
|
||||
| **daily digest** | 08:00 + 18:00 | fetch every search, push new profile-matching jobs to Telegram |
|
||||
| **sciCORE watch** | 08:47 | alert if sciCORE's open-positions page lists a *software* role |
|
||||
| **daily digest** | 09:00 / 12:00 / 15:00 / 17:00 / 20:00 | fetch every search + source, push new profile-matching jobs to Telegram |
|
||||
|
||||
sciCORE used to have its own separate 08:47 watcher; it's now just another source swept inside `bun fetch`/`bun daily` (see Sources below).
|
||||
|
||||
## Quick start
|
||||
|
||||
@@ -40,13 +41,13 @@ Then `bun daily --dry-run` prints the digest instead of sending it, and `bun dai
|
||||
```
|
||||
config.ts # keyword families, search areas, the sweep() generator
|
||||
fetch.ts # LinkedIn scraper, HTML parser, all title/content filters
|
||||
fetch-other.ts # the eight non-LinkedIn sources (see Sources below)
|
||||
fetch-other.ts # the ten non-LinkedIn sources (see Sources below)
|
||||
index.ts # orchestrator: run searches → dedupe → content-check → CSV
|
||||
recheck.ts # raw-mode fetch: lists what the filters dropped
|
||||
daily.ts # digest: fetch, match against the profile, send to Telegram
|
||||
profile.ts # title-level scoring — decides what's worth a notification
|
||||
telegram.ts # Telegram delivery + --setup chat-ID discovery
|
||||
scripts/ # one-off searches (*-temp.ts) and scicore-watch.sh
|
||||
scripts/ # one-off searches (*-temp.ts); scicore-watch.sh kept for history, retired
|
||||
cv/polo.md # the profile everything is ranked against
|
||||
results/jobs.csv # output, one row per job
|
||||
results/sent.txt # links already pushed — never sent twice
|
||||
@@ -67,6 +68,8 @@ LinkedIn is swept by `config.ts`'s search families. Everything else lives in `fe
|
||||
| **datacareer.ch** | Basel | 8 jobs on one page, no pagination |
|
||||
| **stellen-basel.ch** | Basel region | WordPress REST API |
|
||||
| **Basel intl orgs** | Basel | BIS (via the UNjobs mirror), Swiss TPH, Basel Institute on Governance |
|
||||
| **scicore.unibas.ch** | Basel | sciCORE's open-positions announcement list; used to be its own separate 08:47 watcher, now just another source |
|
||||
| **swisscom.com** | Switzerland | Swisscom's own Workday career site, pulled via its public CXS JSON API; small board and mostly German-language, so few survive the filters |
|
||||
|
||||
Two of these were dead until recently and are worth knowing about:
|
||||
|
||||
@@ -165,21 +168,16 @@ bun run scripts/luzern-temp.ts
|
||||
|
||||
## Scheduling
|
||||
|
||||
Both automations are launchd agents, not cron — this machine has no cron at all.
|
||||
The digest runs as a launchd agent, not cron — this machine has no cron at all.
|
||||
|
||||
```bash
|
||||
launchctl list | grep -E 'linkme|scicore' # are they loaded?
|
||||
launchctl unload ~/Library/LaunchAgents/com.rafapolo.linkme-daily.plist # stop the digest
|
||||
launchctl unload ~/Library/LaunchAgents/ch.polo.scicore-watch.plist # stop the watcher
|
||||
launchctl list | grep linkme # is it loaded?
|
||||
launchctl unload ~/Library/LaunchAgents/com.rafapolo.linkme-daily.plist # stop it
|
||||
```
|
||||
|
||||
If the Mac is asleep at the scheduled time, launchd runs the job once it wakes rather than skipping the day.
|
||||
|
||||
Logs: `results/daily.log` for the digest, `results/.scicore-watch/watch.log` for the watcher. The watcher logs every run — `no change`, `change ignored`, or the diff it sent — so silence on your phone can always be told apart from a broken script. Test its alert path without waiting for the real page to change:
|
||||
|
||||
```bash
|
||||
SCICORE_URL="file://$PWD/fixture.html" bash scripts/scicore-watch.sh
|
||||
```
|
||||
Logs: `results/daily.log`.
|
||||
|
||||
## recheck
|
||||
|
||||
|
||||
Reference in New Issue
Block a user