Uutiset Stream

Product case

Uutiset Stream: the day's news without clickbait, synthesised from several outlets

The problem

Keeping up with the news takes time and is unreliable for three reasons. Headlines are written to be clicked, not to say what happened. Each outlet covers a story from its own angle, and readers usually see only one. And outlets publish the same volume every day, even though some days have many important stories and some have few.

I wanted a service where a busy reader learns the day's most important stories in a few minutes and can see whether different outlets report them the same way.

How the product evolved

I built the service in one day, in three iterations. Each version exposed what the previous one got wrong.

  1. A list of headlines. The first version picked 70 stories from a single source with short descriptions. It was quick to make, but the descriptions did not convey what had happened, and some headlines were still hooks.
  2. Full articles read. The second version read every article in full and rewrote the headlines to state facts. Summaries improved, but the perspective was still one outlet's, and a thorough summary of a single article comes close to replacing it, which is sensitive from a copyright point of view.
  3. Multi-source synthesis. The current version builds each story from 2–4 outlets, shows where sources differ and links to 5–6 outlets. This solved both problems: the content got better, and the service sends readers to publishers instead of replacing them.

Key product decisions

Showing where sources differ

Reading the same story across several outlets surfaces differences surprisingly often. In the Flydubai hijacking attempt, the prosecutor and Finnish public broadcaster Yle reported an axe as the weapon, while the Indian outlet Onmanorama reported a knife, and the size of the plane's drop ranged from 4 to 6 kilometres depending on the source. Every story gets its own section on these differences. It is the clearest thing that sets the service apart from an ordinary digest, and it also teaches readers to treat any single source critically.

Headlines that state the news

I set three rules for headlines: the headline says what happened, the person making a claim is named, and question and teaser headlines are not allowed. For example, "Xi Jinping's health raises questions" became "WSJ: Xi Jinping needed long rest breaks during his US visit".

Story count follows the news day

A fixed number of stories would force slow days to be padded with less important items. Instead, every story is scored, and each one that clears a threshold is included. The main factor is how many independent newsrooms cover the event, because outlets publish the same volume every day regardless of the news. Copies of the same wire story count as one source. A minimum and maximum keep the page readable, and on a slow day the page says plainly that there is little news.

Tuning without manual work

The scoring weights are tuned automatically from three signals. The first is the top-story lists of other newsrooms and Wikipedia's Current events page. The second is hindsight: whether a story gets follow-up coverage over the following week. The third is an AI reviewer using a fixed rubric. I deliberately do not use clicks as a signal, because optimising for clicks leads straight back to clickbait. New weights are adopted only if they fit the previous week's data better than the old ones, and no weight may change by more than 20 percent in a week.

What I deliberately left out

  • Minor domestic stories covered by a single outlet. They do not fit the multi-source model, and summarising them adds no value over the original.
  • Advertising. AdSense would have required a cookie banner, third-party scripts and human-reviewed content. It would have undone the site's security and privacy advantages, and early revenue would have been small.
  • An Instagram channel. Reach for news and political content on Meta's platforms is uncertain, and advertisers avoid news environments. The effort would not have served the product's goals.
  • Competing internationally from day one. The English-language market already has strong multi-source digests. Finnish language and a Finnish perspective are what set this service apart. The technology is ready for two languages, but the service starts in Finnish.

How it works

  1. CollectRSS feeds from dozens of outlets
  2. ClusterArticles about the same event become one story
  3. ScoreIndependent sources, reach, novelty and impact
  4. SynthesiseAI writes the headline, summary and source differences
  5. ValidateHTML and unknown links rejected, only approved sources
  6. PublishA static site deployed to Cloudflare Pages every morning

The site has no JavaScript, cookies or external resources, so its security policy allows only the site's own styles. Everything that comes from feeds and from the AI is treated as untrusted. The build rejects fields containing HTML and publishes only https links to approved news sites, which also protects against instructions hidden in an article misleading the AI. For search engines, every story has its own page with schema.org structured data. For AI agents there is llms.txt, Markdown versions of every page, a JSON API and feeds.

How success is measured

North star
Weekly returning readers. The value of the service is a daily habit, not a single visit.
Selection quality
How many selected stories were important and how many important ones were missed, compared against newsrooms' top-story lists and how stories developed later.
Content quality
Sources per story and the number of published corrections.
Reliability
Share of successful morning runs.

What I learned

  • AI-generated text is not a competitive advantage, because anyone can produce the same. A lasting advantage comes from things that take time: accumulated data on media coverage, content agreements with publishers and readers' trust.
  • Source availability constrains the product more than technology does. Paywalls, sites that block automated reading and the weak visibility of Finnish outlets in search results decide what the service can cover.
  • Cut scope early. Dropping ads and Instagram simplified both the technology and the message.

Next

  • Automating the morning run and the self-tuning of story scoring
  • An English edition for international readers living in Finland
  • Talks with publishers about content partnerships