Not an AI wrapper for RSS. A private recommendation layer you can actually live with.

v0.1.0 covers the whole daily loop: subscribe, read, search, rank, explain, clean up, and recover. The point is not more knobs; it is a reader that stays calm as your source list grows.

Algorithmic flow, without platform-shaped sources.

Dibao ranks only the RSS and Atom feeds you added. The Recommended view blends interest match, source preference, freshness, article state, and penalties without inserting outside content or ad inventory.

  • Recommended and Latest live side by side.
  • Baseline ranking works before any provider is configured.
  • Ranking changes order, not source ownership.
RecommendedWhy
The Verge · 12 min ago

A personal feed should be auditable

Sources, freshness, and reading depth shape the ranking.

MIT Technology Review · 1 hour ago

Small embedding models for personal reading

Provider optional; baseline ranking always remains usable.

Simon Willison · 2 hours ago

RSS can be calm without becoming dumb

No ad slots and no platform-injected sources.

A recommendation should be able to explain itself.

Article-level explanations surface topic, source, freshness, state, and fallback signals. If provider, embedding, or profile data is missing, Dibao degrades gracefully instead of breaking the reader.

  • Interest clusters and source signals are visible.
  • Coverage, pendingJobs, failedJobs, and warnings are diagnosable.
  • Provider failure never blocks reading or local search.

Recommendation explanation

  1. Close to a positive interest cluster
  2. Reliable source with higher weight
  3. Fresh article
  4. Unread state prioritized

Current provider

Ollama · bge-m3 · 1024 dimensions

coverageRatio 0.78 · pendingJobs 0 · failedJobs 0

Clear the backlog without poisoning the profile.

Reader Commands can mark unread debt as read across Latest, Recommended, or submitted search scopes. They are audited separately from behavior events, so cleanup does not become false positive feedback.

  • Clear all, older than 24h, older than 7d, or older than 30d.
  • Favorite, Read Later, read/unread, and not-interested remain explicit actions.
  • Reader progress and article state continue to shape real recommendations.

Reader Command

Cleanup scope · Recommended Mark unread older than 7 days as read

Audited separately; not counted as positive feedback.

Personalization should have a radius you control.

A reader can become too good at showing only the familiar. Dibao lets you tune how tightly recommendations hug your established interests versus how much they explore the edges of your own subscriptions. The boundary remains your RSS library.

  • Lower levels are broader and more exploratory; higher levels stay closer to known interests.
  • The ranking scope never leaves feeds you subscribed to.
  • Dedupe, explicit negative feedback, and article state still apply.

Cocoon level

Current bias: keep familiar interests while letting edge topics from your subscriptions surface.

Only the ranking radius changes; sources do not.

Search, typography, and mobile installability are part of the product.

SQLite FTS5 searches titles, summaries, and full text with source, folder, state, and time filters. Settings cover language, reader typography, retention, feedback data, and providers. The PWA foundation adds installability, update prompts, and an offline app shell.

  • Sort search by relevance, latest, or recommendation-aware ordering.
  • Tune font size, line height, paragraph spacing, and reader width.
  • One container serves the Web app, API, and background jobs.

Local search

SourceFolderUnreadRec priority
42 results · SQLite FTS5 Small embedding models for personal reading

Dibao v0.1.0 has shipped. Install notes and updates are opening gradually through the Waitlist.

Request access