Marklee

Annotations that travel
with the document.

A portable, format-agnostic annotation format for PDF, Markdown, and DOCX. Local-first sidecar JSON. Edit-tolerant text anchors. A directed lineage graph between snippets. MarkRank centrality over your reading.

Universal binary · macOS Intel + Apple Silicon · 8.5 MB · unsigned dev build

What it is

Portable annotations

Annotations live in plain JSON sidecars next to the source file. No server, no account, no proprietary blob. Email someone a paper.pdf and paper.pdf.annot.json — they get your annotations.

Edit-tolerant anchors

A normative four-tier resolution algorithm finds your highlight even after the source has been edited: exact text + context → exact text only → fuzzy within section → orphaned with badge.

Lineage graph

Connect snippets with labeled edges — supports, contradicts, elaborates. The graph is first-class data. MarkRank, a PageRank variant over the snippet graph, surfaces the most-cited ideas.

Permalinks

Share a single annotation as a URL. The link carries hash + anchor + optional text/context windows; the receiver opens the source PDF and lands on the right region. Like HTML #:~:text= Text Fragments — but for documents.

Cross-format

One snippet schema covers PDF, Markdown, and DOCX. Lineage view mixes a page-3 PDF quote with a §Methods Markdown snippet on the same canvas.

Open spec

Every implementation detail in SPEC.md + a JSON Schema you can validate sidecars against in CI. The format is the contract; the tools are interchangeable.

Why a new format

Marklee W3C WADM XFDF Hypothesis Sciwheel
PDF + Markdown + DOCX~PDF onlyHTML mostlyPDF + HTML
Sidecar / portableserverXMLservercloud-only
Edit-tolerant anchors4-tierpartialbyte offsetTextQuoteunknown
Labeled-edge graphreplies only
Per-annotation permalinkdefinedURIpage-only
Centrality algorithmMarkRank

Status

v0.1, working draft. Spec stable enough to write tools against; format may change incompatibly until 1.0. Reference implementation is the desktop app on this page. The web build (browser-mode + permalink bootstrap) and Chrome extension are next.

Built local-first because the data model demands it. Nothing about Marklee requires a server, and nothing it does will ever require an account.