All posts
product2 min read

Why I Built Curora - Reading Only the Sources I Picked

Paste an RSS address and Curora collects new posts, with a few lines of AI summary on each. It separates what to skim from what to actually read.

A blog I follow posts, and I find out days later

It isn't a shortage of things to read. There's so much of it that the writing I meant to keep up with slips past, and plenty of days end with no memory of what I actually read.

So I built a reader where you pick the sources. Paste an RSS address into Curora and it collects new posts from that source alone. No recommendations, no trending section.

But plain RSS wasn't enough

Build it the old way and you get a screen with several hundred unread items. After enough rounds of opening something on the strength of its headline and closing it again, you stop opening the app at all.

So each post gets a few lines of summary. Read the summary, decide whether to skip or open, and the headline stops carrying all the weight. Posts on similar topics are grouped, and the skim view is kept separate from the reading view.

What's inside

  • Add and manage your own RSS sources
  • AI summaries of new posts
  • Grouping of similar posts and priority ordering
  • A quick-scan view and a full reading view

How it's built

The app is Flutter. A NestJS server fetches feeds on a schedule and produces the summaries. Summaries live on the server rather than on the device for a simple reason: when several people subscribe to the same post, the summary only needs to be produced once. Calling the model per device pays the same cost once per reader.

Where it stands

It's on the App Store and Google Play. In use, summary length and grouping don't fit every source equally well, and that's the part still being adjusted.