How it works
Hourly RSS in, clustered investment stories out. Relevance score, recency decay, and a merge step with no extra model calls.
The problem
A raw RSS pile is unreadable. The same story lands from three wires, the important one is buried under a product launch, and none of it tells you whether it matters for a portfolio. Newsroom turns those overlapping feeds into a short ranked desk: one card per theme, sources attached, ranked by investment relevance that fades as the story ages.
The pipeline
Every hour the site pulls the configured RSS and Atom sources. Each article is enriched by a small model: theme, entities, tags, a one-line summary, and an investment-relevance score from 0 to 10. Articles below the floor are dropped.
A larger model then groups the survivors into themes. Each cluster keeps a title, a two-sentence summary, tags, and the original article links. Cluster ids are a hash of title plus article ids, so a rerun does not fork the same story.
A final merge step, with no model calls, collapses duplicates across hours. Two clusters merge when they share enough articles, or when their tags are very similar and they were created within a day. The merged card keeps the strongest summary and unions the sources.
How ranking works
The live feed is sorted by relevance decayed with a 24-hour half-life. A 9 that broke this morning outranks a 9 from yesterday. Ties break on publish time, then id. That order is computed when the hourly run finishes and served as a snapshot, so readers do not pay for a table scan.
Clusters expire after three days. This is a live desk, not an archive. Shared links work until the story ages out.
What this is not
There are no affiliate links and no generated citations. Every cluster still points at the source articles. The models can be wrong; the sources are how you check. This is not investment advice.