AI Product · Knowledge Base
OpenMind
A self-hosted personal knowledge base that saves URLs, notes and quotes, enriches each one with AI, and hands them back through a rediscovery mode instead of leaving them to rot in a list.
Organisation
Independent Project
Role
Solo — full-stack
Timeline
2026
Stack
Overview
Every read-it-later app has the same failure mode: saving is easy, returning is not, and the archive quietly becomes a graveyard. OpenMind is my answer — a self-hosted knowledge base that makes saving frictionless, enriches what you save so it is findable later, and then actively brings things back to you.
Key Features
- Quick Save Bar that appears on scroll and accepts either a URL or raw text, so capturing something costs one interaction rather than a navigation.
- AI enrichment on save — saved items are auto-tagged and summarised, using Readability-based article extraction over Cheerio and JSDOM to pull clean content out of a page before the model ever sees it.
- Serendipity — a deliberate rediscovery mode that surfaces random items from the archive to keep or archive, turning a pile into a rotation.
- Mind, a masonry grid of everything saved, with SWR handling client-side fetching, caching and revalidation.
- Auth.js v5 with both Google OAuth and credentials, over a MongoDB adapter with Mongoose models.
- Cloudflare R2 via the S3 SDK for image storage, keeping media off the application database.
- A real test suite — Jest with Testing Library and both jsdom and node environments, covering the app rather than just the happy path.
- Dark mode with no flash, persisted to localStorage and applied before paint.
Impact
The enrichment step is what makes the archive worth keeping: auto-tagging and summarisation mean an item saved six months ago is still findable without remembering the exact words. Serendipity is what makes it worth opening — it converts a passive store into something that hands ideas back at random.