The Perpetual Business
A news engine that listens to topics, scores what matters, asks a human when it needs to, publishes, then watches what readers do with it — and uses that to teach itself which signals to chase next. Eight layers, one closed loop.
Topic and keyword agents pull from RSS, X/Twitter, YouTube, GitHub, LinkedIn, and Open Graph image scrapes. Each source is a discrete fetcher — easy to add, easy to silence.
A scheduled pipeline normalises raw items, deduplicates, and routes them onward. The funnel point — every signal in the system passes through here.
Items are scored against a tunable threshold — relevance, novelty, signal-to-noise. Items below the bar are auto-rejected; items above advance to review.
The approval queue is where the editor (me) intervenes. Approve, reject, or edit. Every decision becomes labelled training signal for the scorecard.
Approved items get placed into sections — hot takes, watchlist, lab notes, vibe, knowledge. The controller decides what shows where, and when it disappears.
The reader-facing surface. Front page, blog, system report, and the four numbered editions. This is where viewership is generated.
Views, dwell, click-through, and source/people stats are captured as events. These metrics are the closing signal of the loop.
Performance metrics reweight the scorecard and inform topic tuning. The system gets smarter about what the audience actually reads — autonomously, with editorial veto.
Built with Next.js, Supabase Postgres, and a workflow runner. Storage is row-level audited; every approval, rejection, score change, and view is replayable. The site you are reading is the output node of the loop above.