TL;DR: I built smoothbrain so Claude can find what I’ve already discussed, decided or worked on across chats, notes and meetings. Less time spent digging through apps and explaining things again. It’s open source, so you can use it with your own history.
Intro
One of the most frustrating things about using AI is having context in 5 different apps. I use Wisprflow to record my meetings, Claude for anything code related, ChatGPT for anything that involves 3D or design work, Notion MCP for project management, then obviously there is context in gmail, Whatsapp etc. AI works best when it has proper context. So I built smoothbrain in order to make that happen.
I’ve open sourced this repo. If you use Wispr flow, Claude and ChatGPT you are going to find this useful.
What's in it
As all these data sources have their own format, and some closed, the first thing I built was a one gets a small converter that turns everything into one plain text file per conversation.
As of this week it holds 3,177 items:
1,419 Claude.ai chats, from three data exports, merged so each conversation appears once
1,082 Notion pages and databases
414 Codex sessions and 121 Claude Code sessions
51 Wispr Flow meetings, with full transcripts and speaker names
28 Claude Design chats, 12 Claude Projects, and 48 of Claude Code's memory notes
That's 81 MB of text, going back to January 2021.
Before anything is written to my local, it goes through a scrubber, two years of AI logs holds a lot of nonsense and more importantly, some sensitive stuff: API keys, database passwords, bot tokens. The scrubber reads every .env file on my laptop and redacts those things wherever they appear, plus anything that looks like a known key format. It made 1,009 redactions across 110 files on the first pass. The whole thing is backed up to a private GitHub repo.
The table of contents
The biggest problem with 81mb of context is that you can’t ask AI to read the whole thing before you ask it a question. It won't fit, and if it did it would skim. The idea I borrowed, from Victor Taelin's OptChat, is to build a table of contents the model can work down through instead.
Every item has a summary of about 500 characters, written by Claude Haiku. Those summaries roll up into a summary for each day, the days into weeks, the weeks into months, and the months into one overview page at the top. As well as this, everything is filed under a project (HELM, MVXX, Spanish, Health and so on), with a summary per project per month and one per project overall. Each page links to the pages below it, all the way down to the original conversation.
Fig. 1 — Overview of how the model works
Super long conversations get one extra layer. My longest chat is a single HELM thread that ran for weeks and comes to about 1.5 million characters. It's cut into 19 sections, and each section gets its own short note with the line numbers it covers. So the model never has to read the whole thing; it reads the notes, picks the section about the factory shortlist, and opens those few hundred lines.
Asking it a question
The brain connects to Claude through MCP, which is the standard way to give an AI tools. Mine has five: look at the overview, search, zoom into a page of the tree, read part of an original file, and save a note. The last one is so I can say "save this to my brain" in any chat and have it there the next morning.
For example, when I ask "what did I decide about XYZ pricing?" in a fresh session, smoothbrain searched for "XYZ pricing" and got back the matching summaries, plus the lines in the original files where those words appear together. It opened the XYZ project page, then October's page. It searched again with different words, because the first search hadn't found the decision itself. Then it read 120 lines of a Notion page and a section of a Codex session. After six tool calls and 37 seconds (I’m working on ways to get the time down), it came back with the current price, the tier I'd dropped and why.
Fig. 2 — How search works
The search itself is old technology. It's ripgrep, a fast text search, run over all 81 MB, which takes well under a second. I could have used embeddings here, which search by meaning. I didn't, partly because a plain text search is exact and repeatable and lets the model quote line numbers, and partly because the summaries are written to be searched. The downside is that if I search "cost" and the conversation only ever said "price", it can miss it. The model usually works around that by trying other words, which is what it did above.
Doing it on a subscription
All of the summarising runs through my Claude subscription, using Claude Code in the background (claude -p), with no API key. I already pay for Claude, and I didn't want a second bill for a side project.
The first pass was big. Summarising 3,177 items took about 17 hours of background processing, and the roll-ups another hour: Haiku for the item summaries, Sonnet for days, weeks and months, Opus for the project pages and the overview. At API prices that would have been about $145. On the subscription it cost nothing extra, though it did eat a fair chunk of my weekly usage. From now on it runs every night at 02:30 and only touches what changed, which on its first night was four items and fourteen pages of the tree.
Notion needed a trick I'm a bit pleased with. Claude.ai has connectors for Notion, Gmail and so on, but they only work inside a chat. So the script runs a tiny Haiku chat whose only instruction is "make exactly these tool calls, then say DONE", and reads the raw results straight off the output as they stream past. Haiku never retypes anything, so it's cheap, and any connector on my account becomes something a script can call.
Where it is now
It runs every night. In Claude Code and the Claude desktop app, I can ask about anything I’ve worked on and get an answer from my own history, with sources. The overview page it wrote about me is more accurate than I’d like.
A few things still need work. It only runs on my laptop, so I can’t use it from Claude on my phone or from ChatGPT yet. Next up is a hosted copy behind a login.
Search still matches words, so it can miss a conversation if I phrase the question differently. And Notion is the expensive part of the nightly run: there’s no record of which database rows have changed, so it re-reads every database every night.
I’ve put the code on GitHub as smoothbrain, with my data removed. If you use Wispr Flow, the bit that reads its meetings straight off your laptop is probably useful on its own.