04 / Personal knowledge assistant
Second Memory
Personal projectDesign & engineering
Save it now. Find it when it matters.
Second Memory saves and organizes content from URLs, then helps you find it again through filters, hybrid retrieval, and an AI assistant. It supports videos, posts, repositories, and articles.
View source on GitHubSaving flow
From a URL to a saved item
The saving flow adds AI-assisted metadata extraction, summaries, and reusable tags. A Flutter client supports web and Android, including Android share intents.
Saved content can be filtered by tag, content type, and date. JSON and CSV import/export include duplicate handling.
Hybrid search
Two ways to retrieve, one ranked result
The Python/FastAPI backend uses PostgreSQL and pgvector. Search combines cosine-similarity vector retrieval with PostgreSQL full-text search, then merges the results using Reciprocal Rank Fusion.
LangGraph assistant
An assistant with tools and references
The LangGraph assistant uses search and listing tools to answer questions about saved content. Responses stream to the client and include clickable references to saved items.
The engineering focus includes tool boundaries, typed APIs, asynchronous streaming, and user data isolation.
Delivery
Self-hosting the application
Docker Compose and database migrations support self-hosting. The documented configuration uses hosted Groq inference and Gemini embeddings, so the application still depends on external model APIs.
- FlutterWeb + Android client
URL saving / share intents - FastAPIMetadata & summaries
Tags, import / export - PostgreSQL + pgvectorVector + full-text retrieval
Reciprocal Rank Fusion - LangGraphSearch & listing tools
Streaming answers + references
Application deployed with Docker Compose. Hosted Groq inference and Gemini embeddings supply the model APIs.