Projects > Pinpoint
Pinpoint: Cloudflare-native bookmark manager with hybrid full-text and semantic search.

Pinpoint

Cloudflare-native bookmark manager with hybrid full-text and semantic search.

Year
Jun–Jul 2026
Status
Live
Platforms
Web · Cloudflare · PWA · Chrome extension
Type
Web, AI/ML
Role
Sole developer

I've kept bookmarks on Pinboard for a decade. Pinpoint is the version I always wanted: my data, semantic search, auto-tagging, running entirely on the edge for pennies.

Pinpoint is a personal, single-user bookmark manager, a modern replacement for the long-dormant Pinboard service, with a faster, keyboard-driven interface. Beyond storing links, it adds two things the original never had: search that finds bookmarks by meaning, not just matching words, and automatic summaries and tag suggestions, written for each saved page as you save it, so bookmarks get described and organized on their own.

Existing bookmarks come over from a Pinboard export or account, including an optional import of links from a tweet archive. Access is password-protected, with an optional second layer of sign-in for stricter setups.

Saving a page takes one click, from a browser extension, a bookmarklet, or the mobile "share to" menu. A background job runs every few minutes to finish tagging and indexing any bookmarks still waiting on it. The whole workflow, searching, adding, navigating, editing, and opening, can be done from the keyboard without reaching for a mouse.

Features

  • Search that understands meaning as well as exact words, blended into one ranked list
  • Saved pages get a summary and tag suggestions automatically, based on what the page actually says, right in the save dialog
  • Save from anywhere in one click: browser button, bookmarklet, or your phone's share menu
  • Brings an entire Pinboard collection over, and can turn links from a tweet archive into bookmarks too
  • The whole workflow runs from the keyboard: search, add, navigate, edit, open
  • Bookmarks that miss tagging or indexing get picked up and finished automatically
  • Stays fast with tens of thousands of bookmarks
  • Never saves the same link twice; password protected, with an optional stricter sign-in layer

Under the hood

64Files
4,806Lines of code
18Commits
Jun–Jul 2026Dev window
StackTypeScript · React 19 · Hono · Cloudflare Workers · Cloudflare D1 (SQLite FTS5) · Cloudflare Vectorize · Workers AI (Llama 3.2-3b) · Vite · Vitest
InfraCloudflare Workers + D1 (SQLite FTS5) + Vectorize (768-dim) + Workers AI; deployed at bookmarks.echeng.com
Notable
  • Hybrid search: FTS5 BM25 keyword ranking and Vectorize (768-dim, bge-base-en-v1.5) semantic similarity run in parallel, merged via reciprocal-rank fusion in a single Worker request
  • Summaries and tag suggestions come from Llama 3.2-3b on Workers AI, prompted with real scraped page content, not just the URL and title; both are generated inline in the bookmarklet save flow
  • All AI and Vectorize calls wrapped to never throw: any failure silently degrades to keyword-only results with no user-visible error
  • A cron sweep every 5 minutes re-queues bookmarks still pending tag generation or embedding, so the pipeline self-heals
  • Cursor-based keyset pagination keeps large collections fast with no offset degradation
  • Stateless HMAC sessions eliminate any session store; Cloudflare Access JWT adds zero-trust overlay with no code-path changes
  • Vitest + workerd pool runs integration tests against a real D1 binding, not a SQLite mock