Companies
Core table interface for managing and searching investment pipeline.
Features
Dual Search
Name: SQL LIKE queries, instant filtering
AI Semantic: Natural language (e.g., "SaaS 50M+ revenue"), Vectorize embeddings, Workers AI
Table
Sorting: Click headers, Shift+Click multi-column (name, revenue, growth, margin, employees, LLM score)
Filtering: Country, status, source (combinable)
Selection: Checkboxes, select all, bulk actions
View Modes
3 density levels: Compact (max density), Comfortable (default), Detailed (readable)
Pagination
Server-side, 50/page, first/prev/next/last nav
Bulk Actions
Select → Click kebab menu → "Generate Embeddings" → Queue batches → Track in Activity log
Parallel processing via Cloudflare Queues.
Schema
{
id: string // 'cmp_' + nanoid()
name: string
revenue_eur?: number // M€
revenue_growth?: number // %
ebitda_margin?: number // %
employee_count?: number
llm_score_overall?: number // 0-10,000
status: string
source?: string
}Implementation
Frontend: apps/web/src/views/Companies.vue (TanStack Vue Table, 300ms debounce)
Backend: apps/api-worker/src/routes/companies.ts (Vectorize + D1)
Composable: useCompanySearch.ts (dual search state)