Skip to content
← All Work

Lacuna

2025Full-StackAI

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.

Lacuna

The Problem

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.

The Solution

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.

The Approach

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.


Technology
Next.js
TypeScript
PostgreSQL
OpenAI API
Tailwind CSS

Key Features
  1. 01Semantic search powered by OpenAI embeddings
  2. 02Drag-and-drop document upload with automatic text extraction
  3. 03Smart tagging system that suggests categories based on content
  4. 04Role-based access control for team collaboration
  5. 05Real-time search with instant results as you type
  6. 06Document versioning and change history

Interested in working together?