SAM ZAMOR/PROJECT FILES

Project File / 01 / Personal utility

I wanted a morning scroll that did not ruin the morning

A daily anti-doomscroll feed that learns which kinds of good news are actually interesting to you.

Filed
Read
5 min
Status
Live and refreshing daily
Positive Morning shown across desktop and mobile product views

I did not need another wellness app telling me to put my phone in a drawer. I needed the phone to stop opening with a wall of disasters.

Positive Morning started with a smaller question: what if the morning scroll still felt like a scroll, but the material was selected to leave you curious instead of vaguely poisoned?

01.01

The problem was not scrolling

Scrolling is useful. It is fast, low-friction, and very good at delivering novelty. The problem is that most feeds optimize novelty through outrage, fear, and status anxiety because those emotions are easy to measure.

So I kept the behaviour and replaced the objective. The product serves twenty positive internet stories, refreshed daily. Not affirmations. Not beige lifestyle advice. Actual developments in science, conservation, communities, health, art, and the occasional animal doing something excellent.

Product bet

Do not fight an entrenched habit. Give the habit a better destination.

01.02

Positive is not the same as interesting

The first feed proved something immediately: a page full of nice things can be just as boring as a page full of bad things. The curation had to understand taste, not merely sentiment.

The pipeline pulls from positive-news RSS and search sources, filters obvious doom terms, infers topics, and ranks the remaining stories. There is also a fallback set, because protecting the morning includes not showing a broken empty screen when a source disappears.

The useful constraint is twenty. Enough range to discover something. Few enough that the feed can end.

01.03

One slider instead of a personality quiz

Each story gets a red-yellow-green interest slider. Red means less like this. Yellow is neutral. Green means bring me more. The score updates preferences for topics and sources, then the next curation pass ranks accordingly.

That signal is deliberately more specific than a like button. A story can be good for the world and still not be for me. The product gets better by learning that distinction instead of pretending all positivity belongs in one bucket.

Verified behaviour

The ranking tests explicitly prove that greener topics rise above redder ones while neutral stays neutral.

01.04

The quiet machinery

Hermes refreshes the feed on a schedule, watches the sources, and keeps the curation loop moving. Convex stores the active stories and the feedback. The interface itself stays almost aggressively plain: headline, story, source, signal.

That is the part I like most. A fair amount of machinery exists so the product can feel like almost nothing at all.

What survived

Three things I would carry into the next build

  1. A better default often beats more self-control.
  2. Sentiment is a filter. Taste is the product.
  3. A feed should be allowed to end.