Skip to content
Prabhu Raja
Productivity · Privacy-first

Curo — Local-First Bookmark Manager

A local-first bookmark manager that imports your browser's bookmarks, merges duplicates and dead links, and organizes what's left into a searchable library with its own health score — no account, no server.

RoleDesigner & Builder
TimelineJul – Aug 2026
IndustryProductivity / Browser Tools
Built withNext.jsClaude CodeVercel
01

Context

Bookmarks accumulate for years across every browser a person has used, and most managers only ever add to that pile — they don't audit it. Curo set out to treat an unmanaged bookmarks bar as a data-quality problem: duplicates, dead folders and links nobody will ever find again, entirely inside the browser with no account and no server.

02

The Challenge

The product needed to take a raw HTML bookmarks export from any browser and turn it into something a person could trust — deduplicated, organized and scored — without ever sending that browsing history anywhere, which ruled out any server-side processing or account system.

03

Research

Looked at how existing bookmark managers handle duplicates and found most only catch exact-URL matches — near-duplicates, like the same article with different tracking params, went untouched, which is why fuzzy grouping became the core of the product rather than a secondary feature.

Competitive audit of bookmark managers and read-later toolsImport-format research across Chrome, Firefox, Safari and EdgeIterative testing of fuzzy duplicate-matching thresholds
04

Insights

The key findings that shaped the direction.

01

A pile of bookmarks isn't a library — it's an unaudited data set

Users didn't need another place to save links; they needed something to tell them what was wrong with the links they'd already saved, which reframed the product from a save-tool to an audit-tool.

02

Exact-match duplicate detection catches maybe half the problem

Near-duplicates — the same article with different query params, or both the AMP and canonical URL bookmarked — needed fuzzy title and URL matching to actually surface, not just exact comparisons.

03

A single health score is what makes 'good enough' visible

Nobody was going to manually audit two thousand bookmarks; a configurable, weighted score across duplicates, organization, tags and freshness gave people a number to chase instead of an infinite backlog.

05

Design Strategy

How decisions were made.

01

Start from an import, not an empty state

Built the first-run experience around dragging in an existing HTML bookmarks export, with a live preview of what will be added, so the product proves its value against a person's real, messy library on the first screen.

02

Separate detection from resolution

Split duplicate handling into a detection pass — exact-URL and fuzzy-title grouping — and a resolution step, so bulk cleanup never silently merges or deletes anything without an explicit choice.

03

Make the score explain itself

Broke the Knowledge Health Score into five weighted, individually adjustable factors — duplicate-free, organized, tagged, well-labeled, fresh — each with its own explanation of what's dragging it down.

04

Treat local storage as the entire architecture

Designed every interaction — search, tagging, collections, export — around IndexedDB as the only datastore, which meant designing for what happens when a user clears their browser data, not just the happy path.

05

Build solo, with AI as the engineering partner

Designed and built end-to-end using Claude Code as a development partner — from the import pipeline to the scoring engine — without a dedicated engineering team, while keeping every architectural and UX decision in my hands.

06

Solution

A local-first bookmark manager that imports any browser's bookmarks export, detects exact and fuzzy duplicates, flags organizational gaps, and scores the whole library on a configurable Knowledge Health Score — entirely client-side.

HTML bookmarks import from Chrome, Firefox, Safari or Edge with a live preview before anything is written
Exact-URL and fuzzy near-duplicate detection with one-click bulk merge
Cleanup Engine flagging missing metadata, empty folders and broken hierarchies
Configurable Knowledge Health Score across duplicate-free, organized, tagged, well-labeled and fresh
Custom and automatic collections, fuzzy search, and export to HTML, CSV, JSON or Markdown
Selected screens

A look at the work.

Curo landing page hero

The live product at getcuro.vercel.app.

Curo dashboard showing bookmark count, growth chart and Knowledge Health Score

The Dashboard — bookmark growth over time alongside the Knowledge Health Score.

Curo Health page showing the five scoring factors and adjustable weights

The Health view — five weighted factors, each adjustable and individually explained.

07

Design System Thinking

This project wasn't designed as a one-off — here's how it connects back to the system.

Components

A reusable score-bar component (metric, weight, explanation) shared between the Dashboard summary and the full Health report.

Tokens

A single accent-driven progress scale used consistently across health scores, duplicate groups and growth charts.

Patterns

A detect-then-resolve pattern — grouped candidates with a clear default selection — reused across Duplicates and Cleanup.

Governance

Fully client-side storage in IndexedDB — bookmarks and browsing history never leave the device, by architecture rather than policy.

08

Impact

Curo shipped as a genuinely free, account-less alternative to bookmark managers that ask for an email address before doing anything — turning an unmanaged bookmarks bar into a searchable, self-scoring library without a single byte leaving the browser.

9Built-in tools
4Export formats
0Accounts or servers required
09

Reflection

The hardest design problem wasn't the interface — it was deciding what 'good' looks like for a library nobody had audited before. The five-factor health score took several iterations before it stopped feeling arbitrary and started feeling like something a person would trust enough to act on.

Next projectLocaLens — Localization QA Tool
View project

Have a complex challenge? Let's design something meaningful.