Lumen: product plan
Lumen is a reading companion: save what you want to read, highlight and annotate it, ask a model about any passage, and send what matters to the notes app you already use.
The problem it solves
Web clippers treat highlighting as a separate mode and treat every clip as a new note. While researching a piece of writing that breaks three ways:
- Highlighting blocks copying. In highlighter mode every selection becomes a highlight, so a passage cannot be copied into another page or an LLM.
- No choice of destination. A second clip lands in a new note instead of the note you are writing, and clipping the same page again duplicates every highlight.
- PDFs and images are out of reach. Chrome's PDF viewer cannot be scripted by extensions.
Principles
- Never take over the selection. A toolbar appears next to a selection; Ctrl+C always works.
- A destination is a note. Collections point at one note (Obsidian, Notion, a markdown file, a webhook). New highlights flow there, once each, recorded in a delivery ledger.
- Platform agnostic. Markdown is the lingua franca. Lumen's own store is the source of truth and every integration is just a sink.
- Bring your own model. Lumen's hosted model, Ollama, any OpenAI compatible API, or Claude through the local CLI.
- Joy from objects, not noise. Calm gray surfaces; glossy keys and tiles; a glow streak that rewards attention, not volume.
Scope
Shipped in this version (v2)
| Area | Feature |
|---|---|
| Auth | Google and GitHub SSO (OAuth 2 with PKCE), account linking by verified email, 30 day sessions, demo sandbox |
| Library | Save by URL (server extraction) or from the extension (page HTML), reader view, inbox / reading / done / archived, favourites, tags, collections, search, keyset pagination |
| Reader | Serif reader, selection toolbar, five highlight colours, margin notes, copy with citation and text fragment link, progress tracking, finish celebration |
| AI | Explain, define, simplify, summarise, ask; streamed; Workers AI with daily quotas |
| Spark | Writing ideas generated only from your highlights, each citing sources |
| Destinations | Obsidian (Local REST API, client delivered), Notion (server push), Markdown download, signed webhooks; delivery ledger guarantees once only |
| Glow | Points ledger, streaks, daily goal, levels |
| Extension | Selection toolbar, persistent highlights, target collection picker, auto send, local only mode, context menu, keyboard shortcuts, four AI providers |
| Claude | Native messaging helper that runs claude -p --model <m> |
| Data | JSON export, collection export as markdown, account deletion |
Shipped in 2.1
| Area | Feature |
|---|---|
| Agents | MCP server (14 tools, 2 prompts), Connect agent flow, agent keys with client names |
| Discover | Radar (Hacker News, dev.to) per topic, follow and mute topics, save trending stories |
| Habit | Daily and weekly reads within the time budget, resurfaced highlights, reminders with snooze, extension notifications |
| Social | Readers like you (anonymous, at least two readers), per item "readers like you saved this" |
| Insight | Analytics page |
| Growth | Docs, comparisons, answers, legal and changelog pages with structured data; sitemap, robots, llms.txt, Open Graph image |
Shipped in 2.2
| Area | Feature |
|---|---|
| Business | Freemium: free plan forever (library, highlights, notes, collections, extension, Obsidian and markdown, daily reads, reminders, export); 7 day Pro trial (Spark, Radar, agents, analytics, Notion and webhooks, 500 hosted answers a day); paywall and in app pricing; Stripe Checkout, portal and webhook ready |
| Onboarding | Welcome card and a ten step spotlight tour, replayable from Settings or the ? button |
| Extension | Dark mode, custom collection picker, create a collection and a new Obsidian note from the popup, ask about the page in the popup, Summarize in the toolbar |
| License | AGPL-3.0 |
Next
| Priority | Feature | Notes |
|---|---|---|
| P1 | PDF highlighting | Open PDF links in a bundled pdf.js viewer page inside the extension; store files in R2 |
| P1 | Billing | Stripe Checkout + webhook to flip users.plan; enforce Pro limits |
| P0 | MCP OAuth | Authorization server metadata and dynamic client registration for native Claude connectors |
| P1 | Email magic link | Cloudflare Email Sending; same session machinery |
| P1 | Imports | Pocket CSV, Readwise, Omnivore, Instapaper |
| P2 | Image and region clips | captureVisibleTab, crop, optional OCR, stored in R2 |
| P2 | Full text search | D1 FTS5 table over items and highlights |
| P2 | Shared collections (Team) | collection_members table, roles |
| P3 | Weekly digest | Cron Trigger + email of the week's highlights and Spark ideas |
| P3 | Firefox and Safari builds | WXT targets; Safari needs the Xcode wrapper |
Milestones
- M1 Core (done): schema, API, auth, web app, reader, highlights, ledger.
- M2 Capture (done): extension rewrite on the shared core, destinations, Claude helper.
- M3 Money: billing, plan limits, email login.
- M4 Formats: PDFs, images, FTS.
- M5 Together: teams, digests, other browsers.
Success measures
- A reader highlights 3+ passages in their first session (activation).
- 40% of weekly actives have a collection with a destination (the core promise).
- Zero duplicate deliveries (ledger correctness; alert on
deliveries.attempts > 3).