Skip to main content

I built a research agent that reads the internet so I don’t have to. Then I plugged it into my wiki.

Or, how I trained an agent to research AI
Last updated: August 13, 2026
Every morning there are new arXiv papers, new trending repos, new blog posts from the labs. It's impossible to keep up. I used to keep ~40 tabs open and feel vaguely guilty about all of them. That's why I built an agent to do the reading for me.
The architecture is almost embarrassingly simple and I think that's the point.
A handful of collectors pull from arXiv, Hugging Face Daily Papers, GitHub Trending, and a set of RSS feeds. Every item gets scored 1 to 10 by Haiku against a prompt that knows exactly what I care about. The question isn't "is this interesting AI news?" it's "can I actually do something with this?" Then Sonnet takes the top 30 and writes one digest. Two models with two jobs: the cheap, fast one runs in parallel across everything while the better one gets a single call where quality actually matters.
# What the agent watches. The model handles relevance scoring.

arxiv:
modes: [weekly] # low-volume sweep; HF Daily Papers covers daily
categories: [cs.AI, cs.CL, cs.LG, cs.SE, stat.ML]
keywords: [agent, tool use, reasoning, rag, eval,
fine-tun, rlhf, grpo, reward model, coding agent, ...]

github:
spoken_language: en # github.com/trending, daily + weekly

rss:
- { name: OpenAI, url: https://openai.com/news/rss.xml }
- { name: Google DeepMind, url: https://deepmind.google/blog/rss.xml }
- { name: Simon Willison, url: https://simonwillison.net/atom/everything/ }
- { name: Latent Space, url: https://www.latent.space/feed }

obsidian:
vault_path: obsidian # scored items land here as notes
Some choices I'd like to defend:
  • Structured text over JSON mode. The triage model returns SCORE: 7 and TAKE: one sentence on why, parsed with regex. I'm sure someone is going to point out that this is fragile and they're not wrong but I don't care right now. It has not broken once. JSON mode would be solving a problem I don't have.
  • SQLite over a vector DB. Everything gets an ID, dedupe happens across sources and runs, and full-text search covers "what was that paper about reward models from three weeks ago?" Regex plus recency is genuinely enough for a digest window. I keep waiting to need embeddings. I haven't.
  • Markdown files as the interface. Digests are just files on disk. A tiny server renders them with no framework or build step.
The whole pipeline is instrumented with Weave. Each run is a span / conversation, each collector fetch shows up as a tool call, and every triage and call is logged with its full input, output, and token count. For an agent this small it might look like overkill, but it answered questions I would have otherwise guessed at: which sources produce items that never score above a 4, what a daily run actually costs, and why one paper scored a 9 when I would have given it a 6.

But here's the thing I didn't expect to matter most: the Obsidian loop.

The agent exports every scored item as a note into my vault. When I read one and mark it "important" or "follow-up" or "content-idea", the agent reads that back on the next run. Important items get boosted in the ranking. Skipped items disappear from future digests. My notes were something I was already doing anyway, and they became the agent's steering signal. No fine-tune, no feedback UI, in fact, no infrastructure at all.
There's a lot of energy right now around agents that plan, branch, spawn subagents, and run for hours. Those are real and useful. But there's a quieter category that I think is underrated: agents that do one narrow thing on a schedule and integrate with the tools you already live in. A pipeline agent bolted onto a wiki turns out to be a memory system. The agent handles volume while the wiki handles judgment.
If you keep any kind of personal knowledge base, whether that's Obsidian, Notion, org-mode, or a folder of markdown, you already have the hard half of this built. The agent is a weekend project. The habit of annotating what you read is the part that compounds.
The whole thing is a few TypeScript files, cron, a pile of cheap Haiku calls, and one Sonnet call a day. It's the least impressive agent I've built but it's the one I use the most.
Iterate on AI agents and models faster. Try Weights & Biases today.