← Back

STEAP

Study Through Encoding and Active Practice.

Founder & Lead Engineer2026 – PresentLive · 35 users · paid plans + free tiersteap.app

A study platform that turns any source (an upload, pasted text, or a photo of your notes) into a concept graph, then gives you six ways to work through it: draw, flashcards, quiz, Socratic interrogation, an interactive textbook, and a mock exam. Every pathway feeds one comprehension log, so the app knows your weak spots. I founded it and I am the sole software developer. I recruited two co-founders to handle business and legal operations.

Supported through Encoding with Active Processing

Grounded in dual coding (Paivio), levels of processing (Craik & Lockhart), active recall, and FSRS spaced repetition.

study deep. steap.

Source → Decompose → Pathway hub → Draw · Flashcards · Quiz · Interrogate · Learn · Mock Exam

What's Shipped

  • Decomposer turns sources into a concept graph; a synthesizer merges several uploads into one
  • Draw: per-concept tldraw canvas and a force-directed concept map
  • Apple Pencil support with palm rejection on every canvas
  • FSRS flashcards, graded 1–10 by the tutor with a deterministic rating mapping
  • Interrogate: Socratic active-recall dialogue, voice or typed; pick a concept, go random, or target a weak spot
  • Learn: an interactive textbook built from typed blocks, generated one concept at a time
  • Worksheets and mock exams, taken in the app or printed
  • Photo grading: photograph a handwritten worksheet or exam and get it marked
  • Comprehension log across all pathways, with a mastery and weak-spots panel
  • A café home screen with a shop and a currency you only earn by studying
  • Dedicated phone layout; offline-first IndexedDB with cloud sync and conflict handling
  • Supabase auth, Google sign-in, email verification, JWT-verified FastAPI backend with rate limiting
  • Stripe billing with a permanent free tier
  • Claude API with prompt caching and per-request cost metering

Engineering Stories

  • The sync queue that starved itself. Re-enqueueing a row bumped its timestamp, so anything touched twice went to the back of the FIFO outbox forever. It presented as four unrelated bugs. The fix was two lines, and the iPad finally drained.
  • A migration that made every folder look empty. IndexedDB cannot change a store's primary key, so one schema version failed at open and every table became unreachable. I rewrote it as a drop plus a new version and tested it against three real on-disk states.
  • A confident misread. Photo grading read a handwritten "B" as "A" and scored it 100%. The mark overlapped a printed label. The fix was a checkbox layout and a second independent read that only counts when the answer options are withheld from the model.
  • A 200 that deleted everything. An empty request body wiped a user's room because the field defaulted to an empty list. The field is now required, and the tests assert table state instead of status codes.
  • Cost as a design constraint. Generating a whole textbook in one call was 45% of API spend. Generating per concept cut a $0.23 call to about $0.02–0.03 per concept, paid only for what a student opens.

How It's Built

STEAP is developed with Claude as a collaborator under a process I designed: a structured build log, a one-way mailbox from planning to execution, and merge gates I approve. I wrote that workflow up as a paper. Read about it →

Stack

ReactVitetldrawd3-forceFastAPIPythonClaude APIPrompt cachingDexie / IndexedDBSupabasePostgresStripeFSRSVercelRailwayGitHub Actions