Lacuna
Lacuna is a document management system built for teams drowning in unstructured files. It combines full-text search with OpenAI embeddings to surface relevant documents instantly, even when users can't remember exact keywords.
Small teams often accumulate hundreds of documents across shared drives, Notion pages, and email attachments. Finding the right file means remembering where it was saved, what it was named, or who sent it. Traditional keyword search fails when users describe what they need in different words than the document uses.
A centralized platform that ingests documents from multiple sources and indexes them using both traditional full-text search and semantic embeddings. Users describe what they're looking for in natural language, and the system returns ranked results based on meaning, not just keyword matches.
I started with the data model -- documents, tags, and user permissions in PostgreSQL. The upload pipeline processes files, extracts text content, and generates OpenAI embeddings stored alongside the original content. The search layer combines pg_trgm fuzzy matching with cosine similarity on embeddings, weighted by recency and user interaction signals. The frontend is a clean dashboard with real-time search, drag-and-drop uploads, and a tagging system that learns from usage patterns.
- 01Semantic search powered by OpenAI embeddings
- 02Drag-and-drop document upload with automatic text extraction
- 03Smart tagging system that suggests categories based on content
- 04Role-based access control for team collaboration
- 05Real-time search with instant results as you type
- 06Document versioning and change history