1.6 KiB
name, description, metadata
| name | description | metadata | ||
|---|---|---|---|---|
| news-rewrite-status | State of the news aggregator rewrite - old system still running, new one at ~/projects/news, design rationale lives in profile/CALIBRATION.md |
|
Two systems exist. news_triage (Rust, v0.2, container
connor_news-backend_1, config ~/config/news/config.toml) is still running in
production and serving Connor's notifications. ~/projects/news is the
greenfield Python rewrite, started 2026-09-08. Keep the old one running until cutover;
Connor chose no data import into the new schema.
The rewrite exists because signal quality failed, and the root cause was that the old
system had no representation of taste — three keywords fed to BM25 plus a two-term
substring blocklist. The fix is embeddings: interests, vetoes, and importance categories
written as prose in profile/profile.toml, embedded on CPU with bge-small-en-v1.5.
Before changing any scoring constant, read profile/CALIBRATION.md in that repo. The
constants were fitted against 3,885 real items and 40 real feedback labels, and two of the
findings are counterintuitive enough to be re-derived wrongly: blocks must be compared by
z-score within block (raw cosine gave geopolitics 78% of all items), and veto must be a
margin over the interest signal rather than a similarity threshold (a plain cutoff killed a
Middle East story about a mayor barring an Israeli football club).
Phases 0 and 1 are done. Phase 2 onward (ingest/embed/cluster, then scoring, delivery, web
UI) is not built. Plan file: ~/.claude/plans/alright-so-i-d-like-tranquil-sunset.md.
Related: news-triage-v02-gotchas