Personal Intelligence Digest

A daily digest whose queries come from a fixed interest profile, sharpened by an accumulated knowledge base.

  • 2026–present
  • Personal

Why there is no measurement

No measurement, and the repo is not public yet

No measurement

Why not

Nothing here is measured, and the system is now built in a way that makes the missing experiment obvious. Both layers are in the same prompt, so the natural comparison — the fixed interest profile alone against the profile with knowledge-base context added — is one edit away and has never been run. There is no held-out set and no rubric for what a good digest item is, so I could not grade the result if I ran it today. The repository is also private, so a reader could not check a number even if I produced one. This is an honest small project, and inflating it would cost more than leaving it plain.

Problem

A news digest built on a keyword list tells you about the things you already knew to ask for, and the list ages faster than you maintain it. I wanted the questions to move as my interests moved — without giving up the guarantee that the handful of things I always need covered actually get covered.

Approach

Two layers rather than one. A hand-written interest profile sets mandatory coverage — the beats that must appear in every run regardless of what the knowledge base says. On top of that, entries pulled from the knowledge base sharpen the angle, so the specific questions asked on a given day are a function of what I have recently been collecting. Results are filtered for staleness and for URLs already sent, summarised, and pushed to Telegram daily. It is deliberately one small module — the interesting part is where those two layers meet, not the plumbing.

The idea

Most personal news automation is a keyword list with a scheduler attached. It works, and it has one structural flaw: it can only surface what you already thought to name. The list ages, you stop trimming it, and eventually it delivers yesterday’s interests reliably.

The obvious fix is to throw the list away and derive every query from an accumulated knowledge base instead. This page used to claim that is what happens here. It is not, and the correction is the more interesting version.

There is still a list. A hand-written interest profile states the beats that must be covered every day — at least two on AI and LLMs, one on UK contracting, one on Irish or UK macro — and it is maintained by hand, by me. The knowledge base sits on top of that rather than underneath it: up to twelve recent entries are passed in as context, and the instruction is explicit that they are there to add sharper angles, not to replace the mandatory coverage.

Why the list stayed

Pure derivation was worse, and the code carries the scar. Entries about methodology and strategy — how I take notes, how I position myself — produced queries like “personal KB system design”, which return nothing a news digest should care about. The system now filters the knowledge base down to externally-facing domains before deriving anything, and carries an explicit list of subjects never to search for.

That is the honest shape of it: a floor set by hand because the derived layer could not be trusted to hold one, and a derived layer on top because the floor alone goes stale. Neither half is the clever part. The split is.

Current state

It is one module of Python — around 24 KB, one file — on a daily schedule, delivering to Telegram. Results are dropped if the article is older than three weeks, if a paper is older than two months, or if the URL was already sent in the last seven days. The staleness filters are not redundant with asking the search provider for recent results: the provider dates by when it indexed a page, not by when the page was published, so old articles arrive labelled fresh and have to be re-checked against their own publish date.

It has been useful to me and it has not been evaluated. Those are both true, and the second one is why there is no number at the top of this page.

It has also not needed a commit since May, which I mention only because it is easy to read a quiet repository as an abandoned one. The schedule has kept running; there has been nothing to fix. Being small is most of the reason.

Open-sourcing is in progress; the repository link will appear here once it is public and I have audited the claims on this page against the code.