Ideas / Brain Dumps (quick capture with semantic search) #38

Closed
opened 2026-01-29 18:21:48 +00:00 by jason.woltje · 1 comment
Owner

Overview

Add an Ideas model for brain dump capture with semantic search via pgvector.

Background

Brain dumps are sacred. Nothing gets lost unless explicitly requested. This supports ADHD-friendly capture where:

  1. Capture everything first
  2. Organize and connect after
  3. Challenge and sanity-check AFTER dumping completes

Requirements

Prisma Schema

model Idea {
  id          String   @id @default(uuid()) @db.Uuid
  workspaceId String   @map("workspace_id") @db.Uuid
  domainId    String?  @map("domain_id") @db.Uuid
  projectId   String?  @map("project_id") @db.Uuid
  
  title       String?
  content     String   @db.Text  // The brain dump
  
  status      IdeaStatus @default(CAPTURED)
  priority    TaskPriority @default(MEDIUM)
  
  category    String?
  tags        String[]
  
  metadata    Json     @default("{}")
  
  // Embedding for semantic search (pgvector)
  embedding   Unsupported("vector(1536)")?
  
  createdBy   String   @map("creator_id") @db.Uuid
  createdAt   DateTime @default(now()) @map("created_at") @db.Timestamptz
  updatedAt   DateTime @updatedAt @map("updated_at") @db.Timestamptz
  
  // Relations
  workspace   Workspace @relation(fields: [workspaceId], references: [id], onDelete: Cascade)
  domain      Domain?   @relation(fields: [domainId], references: [id], onDelete: SetNull)
  project     Project?  @relation(fields: [projectId], references: [id], onDelete: SetNull)
  creator     User      @relation(fields: [createdBy], references: [id], onDelete: Cascade)
  
  @@map("ideas")
}

enum IdeaStatus {
  CAPTURED     // Just captured, unprocessed
  PROCESSING   // Being organized/analyzed
  ACTIONABLE   // Converted to task/project
  ARCHIVED     // Kept for reference
  DISCARDED    // Explicitly removed
}

API Endpoints

  • GET /api/ideas — List ideas (with filters)
  • POST /api/ideas — Quick capture (minimal fields required)
  • PATCH /api/ideas/:id — Update idea
  • DELETE /api/ideas/:id — Soft delete
  • POST /api/ideas/search — Semantic search via embedding

UI

  • Quick Capture Widget — Minimal friction input
  • Ideas List — Grouped by status/domain
  • Semantic Search — "Find ideas about..."
  • Convert to Task — One-click conversion

Acceptance Criteria

  • Prisma schema with migration
  • API endpoints with tests
  • Quick capture endpoint (title optional, content required)
  • Embedding generation on create/update (Ollama integration)
  • Semantic search endpoint
  • Quick Capture widget in HUD
  • Convert idea to task action
## Overview Add an **Ideas** model for brain dump capture with semantic search via pgvector. ## Background Brain dumps are sacred. Nothing gets lost unless explicitly requested. This supports ADHD-friendly capture where: 1. Capture everything first 2. Organize and connect after 3. Challenge and sanity-check AFTER dumping completes ## Requirements ### Prisma Schema ```prisma model Idea { id String @id @default(uuid()) @db.Uuid workspaceId String @map("workspace_id") @db.Uuid domainId String? @map("domain_id") @db.Uuid projectId String? @map("project_id") @db.Uuid title String? content String @db.Text // The brain dump status IdeaStatus @default(CAPTURED) priority TaskPriority @default(MEDIUM) category String? tags String[] metadata Json @default("{}") // Embedding for semantic search (pgvector) embedding Unsupported("vector(1536)")? createdBy String @map("creator_id") @db.Uuid createdAt DateTime @default(now()) @map("created_at") @db.Timestamptz updatedAt DateTime @updatedAt @map("updated_at") @db.Timestamptz // Relations workspace Workspace @relation(fields: [workspaceId], references: [id], onDelete: Cascade) domain Domain? @relation(fields: [domainId], references: [id], onDelete: SetNull) project Project? @relation(fields: [projectId], references: [id], onDelete: SetNull) creator User @relation(fields: [createdBy], references: [id], onDelete: Cascade) @@map("ideas") } enum IdeaStatus { CAPTURED // Just captured, unprocessed PROCESSING // Being organized/analyzed ACTIONABLE // Converted to task/project ARCHIVED // Kept for reference DISCARDED // Explicitly removed } ``` ### API Endpoints - `GET /api/ideas` — List ideas (with filters) - `POST /api/ideas` — Quick capture (minimal fields required) - `PATCH /api/ideas/:id` — Update idea - `DELETE /api/ideas/:id` — Soft delete - `POST /api/ideas/search` — Semantic search via embedding ### UI - **Quick Capture Widget** — Minimal friction input - **Ideas List** — Grouped by status/domain - **Semantic Search** — "Find ideas about..." - **Convert to Task** — One-click conversion ## Acceptance Criteria - [ ] Prisma schema with migration - [ ] API endpoints with tests - [ ] Quick capture endpoint (title optional, content required) - [ ] Embedding generation on create/update (Ollama integration) - [ ] Semantic search endpoint - [ ] Quick Capture widget in HUD - [ ] Convert idea to task action
jason.woltje added this to the M3-Features (0.0.3) milestone 2026-01-29 18:25:32 +00:00
Author
Owner

Absorbed by Knowledge Module.

The Knowledge Module provides:

  • Quick capture via entry creation
  • Semantic search for retrieval
  • Wiki-style linking for connections

See: #81 (Epic), docs/design/knowledge-module.md

Absorbed by **Knowledge Module**. The Knowledge Module provides: - Quick capture via entry creation - Semantic search for retrieval - Wiki-style linking for connections See: #81 (Epic), `docs/design/knowledge-module.md`
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: mosaic/stack#38