Back to projects
Second Brain

Second Brain

In Progress

Second 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

TypeScriptReactNode.jsExpressMongoDBTailwind CSS

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

Designed & developed by Vishesh Verma