You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
What this is: A local search engine for your thinking — an Electron macOS app that indexes your AI sessions (Claude Code, Codex, ChatGPT), bookmarks (Twitter, GitHub, YouTube), and any URL you capture, then lets you search it all instantly.
Who it's for: Developers who think with AI daily and have accumulated hundreds of sessions across multiple tools. The persona has re-explained the same context to AI agents dozens of times.
Space/industry: Developer productivity / local-first tooling. Peers: Raycast, Spotlight, Obsidian, Perplexity — but none of them do this.
Project type: macOS Electron app — compact utility window, not a document editor or dashboard.
Core positioning: "A local Google for your thinking." Search is the entire product. Everything else (sources, capture, AI mode) is in service of the search box.
Aesthetic Direction
Direction: Warm Index — library-warm, not terminal-cold. Function-first but with personality.
Decoration level: Minimal. Typography and color warmth carry everything. No gradients, no decorative blobs.
Mood: The feeling of finding something in a personal archive under a warm lamp. Intimate, fast, trustworthy. Not corporate, not clinical.
Differentiation: Every competitor (Raycast, Alfred, DevonThink) uses cold grays or pure blacks. Spool's warm near-blacks and amber accent are a deliberate departure — the product deals with memory and personal thinking, and should feel accordingly.
Layout Philosophy
Core principle: The search box is the universe's center. Everything else orbits it.
Home state: Google homepage feel — large centered logo, large centered search box, source chips below as ambient context. Empty space is intentional — it creates gravity toward the search box.
Results state: Bar compresses to top (logo shrinks to S.), results fill the page. Transition echoes Google's home→results animation.
Approach: Compact utility. Window width ~720px. Not a document, not a dashboard.
Alignment: Left-aligned results. Centered only on the home/idle screen.
Max content width: 720px (window width)
Border radius: pill (9999px) for search bar / 10px for cards / 8px for inputs / 6px for buttons / 4px for badges
Typography
Logo/Display: Geist Sans 700 — large, tight letter-spacing (−0.04em), the period after "Spool" in accent color.
UI / Body: Geist Sans 400/500/600 — readable at 11–15px, developer-native, not overused. Do NOT use Inter, Roboto, or system-ui as primary.
Fragment content: Geist Mono 400/500 — all indexed content (conversation fragments, URLs, code) rendered in monospace. This visually separates "Spool UI" from "your content."
Counts / paths: Geist Mono with font-variant-numeric: tabular-nums.
Loading: Google Fonts CDN: https://fonts.googleapis.com/css2?family=Geist:wght@300;400;500;600;700&family=Geist+Mono:wght@400;500&display=swap
Type Scale
Role
Size
Weight
Font
Logo (home)
48px
700
Geist Sans
Wordmark (results bar)
16px
700
Geist Sans
Search input (home)
15px
400
Geist Sans
Search input (results)
13.5px
400
Geist Sans
Body / result actions
13px
400/500
Geist Sans
Fragment content
12px
400
Geist Mono
Secondary / meta
11px
400/500
Geist Sans
Labels / caps
11px
500
Geist Sans, letter-spacing 0.06em
Badges / paths
10–11px
500/600
Geist Mono
Color
Approach: Restrained — one amber accent, warm neutrals, color is rare and meaningful.
Light Mode
Token
Hex
Usage
--bg
#FAFAF8
App background — warm off-white, never pure white
--surface
#F4F4F0
Cards, titlebar, status bar
--surface2
#EEEEE9
Hovered surfaces, mode pill background
--border
#E8E8E2
Dividers, card borders
--border2
#D8D8D0
Input borders, focused-adjacent
--text
#1C1C18
Primary text
--muted
#6B6B60
Secondary text, labels
--faint
#ADADAA
Placeholder text, disabled state
--accent
#C85A00
Primary accent — amber/orange
--accent-bg
#FFF3E8
Accent-tinted backgrounds (selected state, AI answer)
Dark Mode
Token
Hex
Usage
--bg
#141410
Warm near-black, never pure #000
--surface
#1C1C18
Cards, titlebar, status bar
--surface2
#242420
Hovered surfaces
--border
#2E2E28
Dividers
--border2
#3A3A34
Input borders
--text
#F2F2EC
Primary text — warm near-white
--muted
#8A8A80
Secondary text
--faint
#505048
Placeholder, disabled
--accent
#F07020
Accent brightened for dark — still amber, never blue
--accent-bg
#2A1800
Accent backgrounds on dark
Source Badge Colors
Each data source has a fixed color used consistently across badges, chips, and dots.
Source
Light
Dark
Claude Code
#6B5B8A
#9B8BBF
Twitter / X
#3A3A3A
#888880
GitHub
#555555
#999990
YouTube
#B22222
#D44444
ChatGPT
#10A37F
#20C38F
Codex CLI
#1A6B3C
#40C87A
Semantic States
State
Light
Dark
Success / synced
#4ADE80 (dot)
same
Warning / stale
#FBBF24 (dot)
same
Error / disconnected
#F87171 (dot)
same
Spacing
Base unit: 4px
Density: Compact. This is a utility tool, not a document editor.