How content is discovered, annotated, and synthesized -- and what Claude does with it.
Everything here passed a manual filter. The algorithm surfaces it; I decide whether it belongs. What gets published reflects what I think is worth thinking about -- not what performed well or what arrived most recently.
X surfaces the content. I read it, decide it's worth keeping, and bookmark it. Nothing enters the pipeline without that manual decision -- the algorithm is just the delivery mechanism.
One click with the Obsidian Reader browser extension clips the tweet and its full reply thread to my local Obsidian vault, filed under a Tweets label. The full thread context -- not just the top-level post -- is preserved as markdown.
Obsidian stores each clip as a structured markdown file in a local directory. The files accumulate there until the next scheduled ingest. Nothing is sent anywhere until Claude picks them up.
A Claude scheduled task runs each day. It calls a parser that compares files in the Obsidian Tweets directory against the existing tweets.json and outputs only entries that haven't been ingested yet. If nothing is new, it stops there.
For each new tweet, Claude reads the full thread and generates four things: a commentary (2-3 sentences on why it matters from a research or policy lens), a plain-language version of the same take, a set of tags for granular filtering, and two classification fields -- sector (the subject domain) and source type (Official, Company, or Individual). Existing entries are used as labeled examples so classifications stay consistent over time.
After ingesting new entries, Claude reads everything -- all tweets and papers -- and rewrites the Takeaways section from scratch. This is not a summary of new additions. It's a synthesis of the argument the whole collection is making at that moment. As the corpus grows and diversifies, the takeaways shift to reflect what the reading list is actually saying collectively.
Claude appends the enriched entries to tweets.json, writes the updated takeaways.json, and deploys the full site to Cloudflare Pages via Wrangler. The UI is a static site -- no server, no database. The data files are the source of truth.
Each entry is tagged along three dimensions: tags for granular topic filtering, sector for the subject domain, and source type for who produced it. These drive the sort and filter controls on the main page.
Classification decisions are grounded in the existing corpus -- Claude uses prior entries as labeled examples before assigning fields to new ones. The test for sector is: what is the primary reason this is interesting? The test for source type is: is this an institution speaking officially, or a person speaking for themselves?
The Takeaways section is not an index of recent additions. It's Claude's attempt to answer: what is the argument this collection is making right now? Each theme spans multiple entries and is grounded by links to the specific tweets and papers that support it.
Takeaways are regenerated in full on every ingest run. They are not cached or manually edited. As the corpus grows into new domains -- capital markets, philosophy, geopolitics -- the synthesis will shift to reflect what the reading list is actually engaging with at any given time.