Inspiration

Every student has a tome: hundreds of pages of notes sitting in GoodNotes, OneNote, or Obsidian that get re-read the night before an exam — and mostly forgotten a week later. Re-reading feels like studying, but it isn't retrieval, and most apps will happily count imported pages and opened flashcards as "progress."

We built the opposite. In Stome (Stone + Tome), a study room starts as Stonehenge. It only becomes a brick house when you finish reviews in it — importing earns nothing. And when AI helps, it can't touch your notes on its own: it proposes, you confirm, or nothing is written.

What it does

Stome is a local-first study app. Your notes live in SQLite on your device — no accounts, no sync, no server.

  • Bring your tome with you. Import the notes you already have — Markdown and Obsidian vaults, PDFs (including GoodNotes exports), OneNote exports (DOCX / MHT / HTML), and Freeform boards as visual references. Imports are parsed deterministically, offline, and you review them before anything is committed. Importing earns no credit.
  • Review what you actually forgot. Each room runs a review queue. You mark every note chunk Missed, Unclear, or Got it — and the spacing follows your mark: Missed comes back in 10 minutes, Unclear tomorrow, Got it in 3 days. The Today screen shows at most 10 due chunks, worst-first.
  • Rooms you can see growing. A finished review earns one credit (one chunk, one day — replays don't double-count). Three credits and the room's Stonehenge becomes a brick house, with a ledger showing exactly which reviews earned it.
  • Ask your notes, get answers with receipts. Select the chunks you want to study and ask anything. Stome's AI companion answers from your notes — every answer is anchored to the exact passage it came from, with citations you can check. It can also draft a fix or a clearer version of a note for you — but a proposal writes nothing until you press Confirm, and if the note changed since the AI read it, the confirm is rejected instead of overwriting your newer work. AI that helps you study, never AI that silently rewrites your notes.
  • Room to work in. Every room also has a whiteboard and slides (with Pencil support on iPad), quick capture for new chunks, search, and highlights/annotations with subject tags and source links.

How we built it

  • App: Expo SDK 58 / React Native with Expo Router — one codebase for iOS, Android, tablets, and web. All app data is in on-device SQLite (expo-sqlite, WAL mode, versioned migrations); there is no backend for your notes.
  • One commit path: every write — human or AI — goes through a single revision-checked createCommit operation with an operation id. Replays are read from the applied-ops log first, so a retried confirm can never insert twice, and stale revisions are rejected.
  • Import engine: deterministic parsers per source (Markdown/vault, a bounded PDF text-layer reader, OneNote document adapters, Freeform visual references). Same file in, same chunks out — no model in the loop — with deduplication, conflict rules, and review-before-commit.
  • AI companion: a laptop-local TypeScript server paired to the app by a one-time token (kept in memory only — never in browser storage, and no provider API key ever reaches the browser). It reads the chunks you select, answers with anchored citations, and works through exactly two tools: propose an answer annotation, propose a chunk edit. Both are proposals only — every AI write waits for a human Confirm and a revision check.
  • Design: a custom "Stone" theme — weathered sarsen neutrals with moss, lichen, and rust for status — with semantic tokens and a generated preview so the design sheet and the app can't drift apart.
  • Checks: npm run check runs typecheck, lint, schema/migration tests, and harness tests; the suite includes test files covering imports, review scheduling, brick credits, commit replay, and the AI-confirm path. GitHub Actions runs it on every PR.

Challenges we ran into

  • AI writes you can trust. Letting an AI edit study notes is only safe if a stale answer can't clobber newer work. Our fix: a proposal stores the exact chunk revision it read; Confirm re-reads, checks that revision, and writes through the same commit queue as human edits — and replaying the same operation id returns the original save instead of writing again.
  • Browser SQLite is picky. On web, SQLite needs COOP/COEP document headers that Expo's dev server doesn't send for the HTML document, and Safari needs a different policy again — so we built a small serving proxy for local and LAN/iPad use (with a self-signed HTTPS mode, because browser storage isn't available on plain LAN http).
  • Import fidelity without lying. PDF reading order can be wrong and image-only pages have no text layer. Instead of fabricating notes, those pages come in as visual references with a clear message — and handwriting recognition is explicitly out of scope for this build.
  • Credit that can't be gamed. It would have been easy to award progress for importing or opening notes. We made the ledger human-only: one credit per chunk per local day, only for a finished review, and imports are listed in the ledger as "no credit" so the rule is visible.

Accomplishments that we're proud of

  • A complete study loop — import → chunk → spaced review → visible progress — running entirely on-device, built today.
  • The brick rule actually holds up: the third finished review promotes a room to brick, and tests prove a replayed mark doesn't.
  • An AI study companion that answers from your notes with citations and drafts edits for you — but provably cannot write a single byte without your confirmation.

What we learned

  • Deterministic parsing made imports testable in a way a model never would be — the same file always produces the same chunks, so dedupe and conflicts are real logic, not vibes.
  • "AI proposes, human commits" is a small rule that changes everything downstream: one commit path, revision checks, and replay safety fell out of it.
  • Progress mechanics shape behaviour: when importing earns nothing and only finished reviews count, the app pushes you to do the thing that actually makes you remember.

What's next for Stome

  • AI-generated review questions from your chunks — quiz me, explain this back to me, find the gap in my notes — all behind the same propose-and-confirm rule.
  • Handwriting/OCR for image-only and GoodNotes ink pages, validated against real exported samples.
  • Native iOS/Android builds through EAS, so Stome lives on the phone and iPad where studying actually happens.

Built With

Share this project:

Updates

Submission history