NeuralOS
A full-stack AI-powered notes application that uses semantic search and GPT-4 to help you capture, organize, and recall your thoughts using natural language
Tech Stack
Context
The Problem
Traditional note-taking apps let you save notes, but finding them later is painful. Keyword search fails when you can't remember exact words.
Constraints
- Must understand meaning behind notes, not just match keywords
- Real-time instant search results
- Privacy-first design
- Support multiple auth methods (email/password, Google, GitHub OAuth)
Stakes
Portfolio piece demonstrating full-stack engineering with AI/ML integration, vector databases, and modern authentication
My Role
Title
Full-Stack Software Engineering
Team
Personal Project working by myself
Ownership
End-to-end ownership: system architecture, frontend, backend API, AI integration, database design, and deployment
Approach & Key Decisions
Built a full-stack notes application with a React frontend communicating via REST API to a FastAPI backend, which orchestrates OpenAI for embeddings/chat, Pinecone for vector search, and Supabase for auth and data persistence.
Pinecone vector database for semantic search
Enables similarity search on note embeddings so users can find notes by meaning rather than exact keyword matches.
OpenAI text-embedding-3-small for embeddings + GPT-4o-mini for chat
Notes are auto-indexed with embeddings on save. GPT-4 synthesizes answers from retrieved notes with full context.
FastAPI for backend
Async support, automatic OpenAPI docs, and type hints make it ideal for building a clean REST API quickly.
Supabase for auth and database
Provides PostgreSQL database, user authentication, and real-time capabilities in one managed service. Supports email/password and OAuth (Google, GitHub).
Hooks-based state management with single-file architecture
Keeps frontend simple and maintainable at 1,800 lines of React without needing Redux or complex state libraries.
Alternatives Considered
Considered using a traditional SQL full-text search but semantic search provides dramatically better results when users can't recall exact wording
Challenges & Solutions
⚠Challenge
Semantic search needed to understand meaning, not just match keywords
✓Solution
Integrated OpenAI embeddings (text-embedding-3-small) with Pinecone vector database to enable similarity search across all user notes
⚠Challenge
AI responses needed context from user's entire knowledge base
✓Solution
Built retrieval-augmented generation (RAG) pipeline: query Pinecone for relevant notes, pass them as context to GPT-4o-mini, synthesize personalized answers
⚠Challenge
Managing authentication across multiple providers
✓Solution
Leveraged Supabase Auth for unified handling of email/password, Google OAuth, and GitHub OAuth sign-in options
⚠Challenge
Auto-indexing notes for search without slowing down saves
✓Solution
Notes are auto-indexed for semantic search upon save, generating embeddings asynchronously to keep the UI responsive
Outcomes & Impact
Codebase
1,795 lines of JavaScript/React, 69K+ lines of CSS
API Coverage
Full REST API: POST /notes, GET /notes, GET /search, PATCH /notes/:id, DELETE /notes/:id
AI Features
Semantic search with GPT-4 synthesized answers and related note suggestions with match percentages
Authentication
Full auth flow with email/password and OAuth (Google, GitHub) via Supabase
Organization
Favorites, Archives, Trash & Restore, Dark/Light mode, Keyboard shortcuts