Everything between a URL you found and a page people read.
The engine has been running a real newspaper for years. What follows is what it does, in the order you would meet it.
Most of the work of an aggregator is the part where the feed does not exist.
Getting sources in
Autodiscovery first
Paste a URL and we look for RSS, Atom and JSON Feed, then try the common paths, then detect the platform. WordPress, Ghost, Substack, Craft, Umbraco and others have known patterns and we use them.
Shortcuts for the obvious ones
YouTube channels, subreddits, GitHub releases, Mastodon, Bluesky and Google News topics all resolve straight to a feed without you thinking about it.
A scraper builder for the rest
If there is genuinely no feed, point and click the headline on the page. We work out a selector that survives the site being redesigned, show you what it extracts, and save it as a recipe.
Recipes that repair themselves
When a site redesigns and a scraper stops returning items, we notice, read the new page, propose a fix, and check it against what the feed used to produce before applying it.
Pages with no dates
Some sites publish no timestamps at all. We record the state on the first run and treat anything new after that as new, so the page still orders correctly.
A page is a collection of feeds. A template is the skin it wears. Keeping them separate is what makes both reusable.
Pages and templates
Unlimited private pages
One page per subject, per competitor, per client. Put the same feed on as many as it belongs on. It stays one subscription and one fetch.
Four templates, properly designed
Broadsheet for a publication, River for a dense start page, Board for a noticeboard, Monitor for a watchlist. Each is responsive, dark-mode aware and accessible.
Edit the Twig if you want to
Templates are real templates. Edit them, keep a draft while the live page carries on serving, publish when you are ready, and roll back in one click.
Public, unlisted or private
Per page. A public page is indexed and cached at the edge. A private one needs a login and is never cached.
Filters that actually filter
Include or exclude by keyword, source, category, language or pattern, and set them differently for the same feed on different pages.
Let readers suggest feeds
Optional, off by default. Readers can propose a feed and a title, which lands in a queue for you to accept or reject. Nothing is crawled or published until you say so.
A front page that is stale is just a bookmark folder.
Live, and fast
Real-time push
When something arrives, it appears. No refresh, and no content jumping under your cursor: new items announce themselves and wait to be shown.
Cached at the edge
Public pages are served from Cloudflare, not from one box, and the cache is purged the moment a page changes.
Fetched politely
One shared crawl budget per target site across every customer, robots.txt honoured, and Retry-After respected. A hundred people following the same site does not become a hundred times the traffic.
Summarised once, for everyone. That is what makes it affordable.
Understanding what arrived
Summaries in plain words
A short summary under each headline, written by us rather than lifted from the article.
The same story, collapsed
When five sources cover one story, they become one entry with five source chips rather than five near-identical headlines.
Sorted by what matters
Categorisation, entity extraction and importance ranking decide what deserves the top of the page.
Translation
Follow a source in a language you do not read, and read it in one you do.
The page is the point, but it is not the only output.
Getting it back out
Your own domain
Point a domain at us and we handle the certificate. Your readers never see our infrastructure.
RSS, Atom and JSON Feed
Every page emits a feed, which quietly makes this a feed transformer: merge many, filter, republish as one.
Email digests
Daily or weekly, per page, to you or to a list.
An embeddable widget
One small script that drops a page into a site you already have.
Webhooks, Slack and Discord
A new item matching a filter can post itself wherever your team already is.
A read API
Proper OAuth, so scripts, menu-bar apps and Raycast can all read your pages.
The headline and the link. Never the article.
What we store
We keep the title, the link, the timestamp and the source name. We do not keep a paragraph of anybody's writing, not even a short one, and not even when their feed offers it.
A headline and a URL is exactly what a feed is published to distribute. The summary underneath is written by us, so there is no passage of anyone else's text anywhere in the system.
Every item links out and names its source. Your readers end up on the publisher's site, which is the arrangement that keeps everybody willing to be aggregated.