verso docs prototype vision.md
15 kB · 141 lines
Markdown
at main

Verso: A New Kind of Reading Log #

A first-pass product document. The "what" and the "why." The "how" comes after.


The premise #

There is a kind of person who keeps track of what they read — really keeps track. Not "I think I read that one a few years ago" but a real record: when they read it, what they thought of it, the parts that mattered enough to write down. The same person usually keeps a similar half-record of what they watched, what they listened to, what they studied. They feel some loss when they realize they can't remember the title of that essay that changed how they thought about something five years ago.

Today, this person is using a constellation of broken tools. Goodreads for books, neglected by Amazon since 2013 and looking it. The StoryGraph for the same, a heroic one-developer effort with a real ceiling. Letterboxd for film. Trakt or Sofa for TV. Readwise for highlights. Notion for notes. A spreadsheet for whatever else. None of these tools knows about the others. None of them treats the user's record as something coherent. Most of them are auto-trackers built around feeds and friend activity, when the person actually wanted a quiet record of what mattered.

Verso is the third option this person has been waiting for: a single, beautiful, local-first log of the longform things they've engaged with seriously, across whatever medium those things came in. The wedge is books, because that's where the existing apps are worst and where readers are actively looking. The frame is broader: a tool for the kind of person who takes their reading and watching and listening seriously enough to want a record of it.

What we're building #

A personal engagement log that is:

  1. Open source. Reading lists, watch records, the things you've thought about and want to remember — these belong to the people they belong to. The code that manages them should belong to anyone who wants to read it, fork it, run it, or keep it alive after we're gone. Verso is hosted on tangled — both because we think GitHub is failing as a steward of open source and because we want to build on infrastructure that shares our values.
  2. Local-first. Your library lives on your device. Sync is a feature, not a prerequisite. The app works offline, on a plane, in a basement, on a bad hotel WiFi — and never spins.
  3. Intentional. Verso does not auto-track. It does not scrobble. It does not silently sync your Kindle progress and update itself. Logging is a deliberate act the user performs. The product knows that the act of recording something is part of taking it seriously, and it does not try to abstract that act away.
  4. Fast. Every interaction returns within a frame. No loading states for things that should be instant. No waiting to add a tag. No 30-second page loads. Logging a finished book is one tap.
  5. Yours. Full export to CSV, JSON, and OPDS, anytime, with one click. No dark patterns on deletion. No data correlation with shopping accounts. No ads. We don't need your data to be valuable to you.
  6. Crafted. Beautiful typography. Considered animation. Real native-feeling mobile apps. The kind of polish people associate with Linear, Things, Bear — not with book apps. Reading deserves a tool as careful as the things it tracks.

Who it's for #

Verso is built first for the reader who already keeps a spreadsheet on the side. The 50-to-300-books-a-year reader who has tried Goodreads, tried StoryGraph, currently uses both, and still falls back to Notion or Excel because neither app handles re-reads, audiobooks, multiple editions, or large libraries without falling over.

In concentric circles outward from that core:

  • Audiobook listeners who are tired of seeing a 36-hour audiobook represented as 36 pages.
  • Genre power readers — romance, SFF, fantasy, manga — who need real series tracking and don't get it from either incumbent.
  • Academic and non-fiction readers who want notes, highlights, and quotes treated as first-class citizens, not afterthoughts.
  • People who watch films, listen to podcasts, and study textbooks with the same seriousness they bring to books. v1 is books-only, but the model is built to grow into these.
  • Privacy-conscious readers who left Goodreads on principle and don't want to trade Amazon for a different single point of failure.
  • Developers and tinkerers who want an API, want their data, and want to build on top of a tool they trust.

We are explicitly not building first for:

  • The casual reader who reads four books a year and wants Bookstagram-shaped social features. That person is served by Goodreads and won't switch.
  • The auto-tracker user who wants every podcast episode they hear and every show they binge to be logged automatically. Trakt and Sofa serve that audience well; Verso is a different posture.
  • The book club / discussion / global-feed user. That's a different product, and trying to build it on day one is how we fail.

What it does (and doesn't) do at v1 #

Does #

  • Track books across statuses. Currently reading, want to read, read, did not finish, paused. All first-class. DNF is not a hack.
  • Track them honestly. Quarter-star ratings. Re-reads with separate ratings, dates, and notes per read. Multiple editions of the same work without confusing your read-state. Audiobooks measured in time, not pretend pages.
  • Import everything you already have. Goodreads CSV, StoryGraph CSV, and your spreadsheet. The first 30 seconds of using Verso is the moment we win or lose, and we plan to win it.
  • Export everything. CSV, JSON, OPDS, anytime, no email-us-and-wait, no support ticket. The same data you can import is the same data you can take with you.
  • Search at scroll-speed. Your own library, instantly. The global catalog, sub-second.
  • Stats that respect your time. Year-in-review on demand, not just January. Format-aware reading totals (hours of audiobook + pages of print). Reading habits without a paywall.
  • Series and author follows. See what you're in the middle of. Get told when the next book drops. Sort an author's backlist by anything you want.
  • Tags and shelves. Both. Bulk-edit hundreds of items in seconds, because the operation runs locally.
  • Sync across your devices. Web, iOS, Android. Same library, no surprises, no edition drift, no "this finished on iPhone but not on web."
  • Work offline. Always. Logging on a plane is not a special case.
  • Have a barcode scanner that doesn't make you wait.

Doesn't (yet) #

  • Other media types. Films, podcasts, manga, textbooks, essays — all the things this product is ultimately for — are deliberately out of v1. The data model is designed from day one to admit them, but the UI ships with one content type so we can ship one content type well. Each medium added later brings its own metadata problem, its own native UI, and its own dedicated work.
  • Auto-tracking. Verso will never integrate with a streaming service in a way that logs things automatically. You log what you log because you want it logged.
  • Public reviews and a global activity feed. This is what enables Goodreads' review-bombing problem. We will not ship review surfaces until we can ship them with strong identity guarantees.
  • Book clubs and group reading features. Different product. Maybe later.
  • Buddy reads and friend follows. We'll get here in v2 — designed in from the start as a layer, not a foundation. v1 is a personal tool.
  • AI features of any kind. Not because we're against the technology — because the category just lived through the Fable controversy, our differentiation is craft and trust, and "AI playful roasts of your reading" is exactly the wrong story for us. If we ship AI later, it will be opt-in, on-device when possible, and never tied to user identity in ways the user didn't ask for.
  • Highlight sync from Kindle/Kobo/Apple Books. A v2 feature. It's a real moat for the academic and non-fiction segments and we want to do it right rather than ship a stub.

Principles #

These are the things we won't trade away when we have to make hard calls.

1. Local-first is non-negotiable #

The canonical copy of your library lives on your device. Sync is how copies stay in agreement. The app must function fully offline — every read, every write, every search, every stats query — and reconcile when you come back online.

This is not a feature. It is the architecture. Everything downstream — speed, privacy, ownership, resilience — falls out of getting this right.

2. Intentional, not automatic #

Verso never logs on the user's behalf. There is no scrobbler, no streaming-service integration that silently records what you watched, no Kindle daemon that decides when a book is "finished." Every entry in your library is an entry you made deliberately. This is partly a privacy stance and partly a product stance: we believe the act of recording is part of taking something seriously, and a tool that abstracts that act away ends up being a tool for tracking volume, not engagement.

This principle is what most clearly distinguishes Verso from Trakt, Sofa, and the auto-tracker category. They are good tools for what they do. We are doing something else.

3. Speed is a feature, and a promise #

If we ship a "fast" app and it slows down at five thousand items, the brand collapses. We design for fifty thousand-item libraries from day one. No spinners on actions that should be instant. No skeletons hiding the fact that we're round-tripping to a server. If something is slow, it's a bug.

4. Your data is yours, in formats you can read #

Export is a launch feature, not a v3 feature. We support the formats other people support (Goodreads CSV) and the formats that respect your data better (full JSON with editions, re-reads, notes, tags). Account deletion is irreversible the way deleting a file is irreversible — not the way Goodreads' deletion is irreversible, where they hold it and then make it disappear.

5. Different mediums get different shapes #

A book is not a podcast is not a film. Verso treats this as an honest fact, not a problem to abstract away. Each content type has its own data model, its own metadata sources, its own progress semantics, and its own native UI. What's shared across them is the vocabulary of engagement — starting, finishing, rating, noting, re-reading — not the shape of the content itself. This is the discipline that lets us ship books well in v1 and add manga or film later without a data-model rewrite, but also without pretending the new content type is just another book.

6. Open source means open governance #

The code is open. The roadmap is open. The data model is open and documented. Voting on what to build next is not gated behind a paid tier, because if we did that we'd be reproducing the StoryGraph Plus pattern that we ourselves criticize. People who pay us money get more software, not more voice.

7. We don't sell ads, and we don't sell data #

Verso is a customer-funded product. The free tier exists because reading is a public good and tracking it shouldn't require a credit card. The paid tier exists because building software costs money and we'd rather charge users than monetize them. There is no third tier where we figure out something clever with their data.

8. Craftsmanship is the differentiator #

We can't out-network Goodreads. We can't out-mood-rate StoryGraph. What we can do is be the most carefully made tool in the category. Type. Animation. Haptics. Microcopy. The small things, done correctly, at every layer. This is the thing that, when a power reader tries Verso for thirty seconds, makes them not go back.

9. Data correctness is a deep problem and we own it #

Book metadata is the hardest hidden problem in this space. Every founder who has tried this says so. Editions, ISBNs, audiobook durations, re-issues, translations, anthologies — they're all messy, and the messiness ends up in users' faces. Other media types bring their own messes. We treat metadata correctness as a first-class engineering problem, not a "we use OpenLibrary, sorry" answer.

10. The community is part of the product #

Open source on tangled means contributors. Contributors mean a project that doesn't depend on any one person's continued attention. We design for that from day one — clear contribution paths, honest documentation, a code of conduct that means what it says, and credit where credit's due.

What success looks like #

A year in:

  • A reader can open Verso, import their twelve hundred Goodreads books in under a minute, and immediately have everything they expect — re-reads preserved, audiobooks shown in hours, multiple editions reconciled, tags and shelves intact.
  • That same reader can tag two hundred books in one bulk operation and it finishes before they take their finger off the trackpad.
  • They can fly to Tokyo, log a book they finished on the plane, log another the next morning over hotel WiFi that may or may not work, and the whole thing reconciles cleanly when they get home.
  • They tell a friend, "the thing about Verso is it's just fast." That's the review we want.
  • The Tangled repository has contributors who are not us. The roadmap has issues filed by people we've never met. The data export format is being read by tools we didn't write.
  • We are charging some readers around forty dollars a year for the things power users want — advanced stats, custom charts, highlight sync — and the free tier is generous enough that nobody is leaving in anger over the paywall.

Three years in:

  • Verso has outlived our individual involvement. Anyone who cares enough to maintain it could.
  • The data format is something other apps import from, the way StoryGraph imports from Goodreads.
  • Verso has shipped at least one additional content type beyond books — most likely manga or films, based on user demand — and the people who use it for both feel like the product is one coherent tool, not two stitched together.
  • "Reading tracker" is no longer synonymous with "Amazon-owned" or "single-developer-bottlenecked" in the public conversation. There is a third answer, and it's Verso, and it belongs to everyone who reads.

What this document is not #

This is not an architecture document. It does not pick a sync engine, a database, a framework, or a deployment story. Those decisions matter, but they come second. The architecture should mirror what we've described here: local-first because we want it to work offline, sync-engine-based because we want it instant, open formats because we want data to be portable, native-feeling clients because we want it to feel crafted, content-type-aware because different mediums genuinely are different.

The next document picks the stack. This one picks the soul.