A conversational book recommender that takes a feeling, a question, a theme, or a mood — and suggests two or three books, chosen by something that learns your taste the way a friend would.
Most book recommenders work the same way: given what you already liked, here's more like it. They're built for scale, not for taste. The result is an echo chamber — the same books circling back to you in slightly different shapes, the same algorithmic popularity bubble dressed up as personalization.
But the way I actually find books is closer to a conversation with a knowledgeable friend. Someone who knows what I've read, hears the mood I'm in, and suggests two or three things — sometimes safe, sometimes a stretch. Someone who builds an evolving picture of who I am as a reader. Marginalia is my attempt to make that.
I built a conversational book recommender. It takes a feeling, a question, a theme, or a mood — and suggests two or three books.
You don't pick filters or browse categories. You write the way you'd write to a friend — "something for the last week of winter", "a book that reads like a long walk", "I want to understand grief without drowning in it". The system reads the request, reaches into what it knows about you, and comes back with a small handful of suggestions, each with its own reason for being there.
The same reading history can be read in different ways. Marginalia lets you choose the voice doing the reading — four personas that produce meaningfully different suggestions from identical data.
Deeper, slower, more considered — pulls from the canon and the philosophical shelves. Good for when you want a book to sit with.
The friend at the independent bookstore who reads everything new. Curated taste, contemporary leanings, knows what's just out.
Pushes against your patterns. Suggests the book outside your comfort zone — the one that argues with what you already believe.
Matches you where you are. Reads the emotional weather of the request and suggests something kind, something close.
Every so often, Marginalia writes a prose portrait of your taste — not a list of genres, but a narrative observation of what you keep returning to, what you avoid, where you've drifted lately. It refreshes as your reading evolves, so the picture is never stale.
Beyond the prose, there's a visualization: a constellation of themes pulled from across your books, connected where they overlap. You can pull on a node and see which books sit underneath it, where it touches other themes, where the gaps are. It's the structure of your reading made visible.
A real librarian wouldn't just answer questions — they'd notice things. Marginalia does the same: when it detects a shift in your reading patterns (a sudden swerve toward grief, a new fixation on a place, a long absence from fiction), it surfaces a perceptive question of its own. The conversation goes both ways.
The recommender runs Claude Sonnet for the reasoning that produces suggestions, with Haiku handling the cheaper signal extraction — tagging themes, noticing patterns, keeping the taste portrait fresh. Web search is integrated through Claude's built-in tool, so the system can reach for what's just been published.
State lives locally in SQLite — every book has a full lifecycle: suggested → purchased → reading → read or abandoned. There's no remote infrastructure, no analytics calls. Every API request reconstructs your full context from scratch, which means Anthropic never holds persistent state, and yet the system still gets sharper as your library grows.