Productivity · Applied AI

Save it anywhere. It files itself.

Trove is an AI bookmark platform with intelligent auto-organization and multi-platform sync. Save from the web, the browser, or straight out of ChatGPT and Claude — and it summarizes, tags and files the result on the way in.

enrichment · on savelive
URL capturedweb · extension · MCP
Extract → summarize → tag
titlesummarytagscollection
Filed into a collectionno empty state

~823

Commits, Oct 2025 – Aug 2026

457

TypeScript / TSX source files

46

Database models

6

Contributors

The problem

Bookmarks pile up unread and unfindable.

Existing tools are dumb lists. No context, no summaries, no organization — and no way to reach saved content from where people actually work: chat assistants, social feeds, mobile.

The approach

One bookmark backend, delivered to four client surfaces from a single pnpm monorepo. The organizing work happens at save time rather than being left to the user, and the same data layer answers every surface.

Client surfaces

One backend, four front doors.

Each surface is a thin client over the same shared packages, so behaviour stays consistent and a fix does not have to be made four times.

ProductionNext.js webappThe primary product: bookmark CRUD, collections, a catch-up reading queue, CSV bulk import and a reading log.
LiveMCP serverExposes Trove as tools and inline widgets inside ChatGPT, Claude Desktop and Code, VS Code and Goose — save and search conversationally.
IntegratingChrome extensionCaptures social-media posts and ordinary pages straight into Trove from the browser.
PlannediOS / AndroidReact Native clients built on the same shared data layer, so mobile inherits the backend rather than reimplementing it.

The engineering that carries it.

Shared-core architecture@trove/database (Prisma with a repository pattern) and @trove/shared (URL text extraction, AI summarization) are consumed by every app. A feature ships once and lands on every surface.
AI enrichment pipelineOn save, Trove fetches page content and generates a title, summary and tags, then suggests a collection. Includes a latency-optimization workstream and special handling for hard sources such as X/Twitter URLs and GitHub READMEs.
Starter collections and auto-classificationAn onboarding topic-selection flow drops new users into a pre-populated, topic-mapped workspace instead of an empty state.
OAuth 2.1 and MCP integrationA full authorization-code flow between the webapp consent UI and the MCP server, with Supabase as the identity provider. The MCP Apps implementation follows SEP-1865, so one widget renders in every host without per-vendor branches.
Stripe subscription billingDynamic pricing tiers with grandfathering logic, so existing users keep the terms they signed up on when pricing changes.
Production hardeningUpstash Redis rate limiting on every API route, CSP and security headers, input and response sanitization, bot protection, and a recurring security-review process.

Stack

TypeScript end to end.

Frontend

  • Next.js 15
  • React 19
  • Tailwind
  • shadcn/ui

Services

  • Node + Express (MCP)
  • OpenAI
  • Upstash Redis
  • Stripe

Data

  • Prisma ORM
  • Supabase PostgreSQL
  • Supabase Auth

Infrastructure

  • AWS EC2 + PM2
  • AWS Amplify
  • DigitalOcean

5

Applications

2

Shared packages

1

pnpm workspace

Process

Plan-first delivery.

Every feature starts as a written masterplan document, paired with a testing artifact and reviewed against architecture invariants before implementation begins.

  1. 01

    Masterplan

    The feature is written down before it is built, so the design argument happens in a document rather than in review.

  2. 02

    Testing artifact

    Each plan ships with the artifact that says how the feature will be proven, agreed up front rather than assembled afterwards.

  3. 03

    Invariant review

    Plans are checked against the architecture invariants that keep the shared core shared, before any code is written against them.

  4. 04

    CI-enforced gates

    Build, tests and security review run as pre-PR gates, with every pull request targeting a staging branch rather than main.

Where it stands.

  • Webapp is production-ready and deployedLive
  • MCP server live, serving ChatGPT and Claude usersLive
  • Billing and onboarding shippedShipped
  • Chrome extension integrating; mobile clients plannedIn progress

One product, every surface your users are on.

A shared core, an AI pipeline that does the filing, standards-compliant MCP so one widget works in every host, and the hardening that lets it take real traffic.