
Second Brain
In ProgressSecond Brain is a full-stack app for capturing notes and links and later retrieving them through natural-language search instead of manual browsing. Every piece of content is embedded with Google's Gemini embedding model and stored in a Pinecone vector index; when you ask a question, the app runs a similarity search over your own notes, then feeds the most relevant matches to Gemini 2.5 Flash (via LangChain) to generate a direct, sourced answer. Content can be organized with categories and tags, links are auto-detected and embedded (e.g. YouTube), and you can generate a public share link to expose a read-only view of your brain.
Why I Built This
I wanted a note-taking tool that doesn't just store information but can actually answer questions about it — closer to how a second brain should work, where you ask 'what did I save about X' instead of scrolling through folders to find it.
Role
Full Stack Developer
Duration
3 months
Status
In Progress
Tech Stack
Key Features
- Semantic search over your notes using Gemini embeddings + Pinecone vector search
- AI-generated answers (RAG) that summarize the most relevant saved content for a given question
- Notes and links with category and tag organization
- Automatic YouTube link detection and embedding
- JWT-based authentication with httpOnly cookies
- Shareable public link to expose a read-only view of your brain
Challenges & Solutions
- Built a RAG pipeline end-to-end: embedding content on save, upserting to Pinecone with per-user metadata filtering, and querying it at search time
- Designed the search flow to gracefully degrade — filtering low-confidence vector matches before passing context to the LLM, and returning a clear 'nothing found' response otherwise
- Structured the Express API around auth-protected routers (content, categories, tags, brain) with consistent response handling
What I Learned
- Practical experience wiring an embedding model, a vector database, and an LLM together into a working retrieval-augmented generation flow
- Handling per-user data isolation in a shared vector index via metadata filtering
- Tradeoffs of user-scoped JWT/cookie auth vs. session-based approaches in an Express API