Ryota Labs

Independent app studio · Japan

Small iPhone apps that make learning and everyday life easier.

We design, build, and maintain focused apps for study, campus life, and the everyday tools people reach for again and again. Every app below is live on the App Store.

15,000+total downloads
6apps on the App Store
FSRSspaced repetition built in
A flashcard on a phone in front of a campus bus CAMPUS FSRS · REVIEW Retention curve

Why we build

Tools that help people learn, move, and understand.

We focus on everyday problems in education and public life. Our apps aim to be useful for years, not just for a launch week.

Learn

Study tools built around how memory works: spaced repetition, offline access, and your own decks. Students should be able to study anywhere.

Get around

Real-time bus information for students commuting to a university campus in Shiga, so the trip is one less thing to worry about.

Think clearly

AI features should show their sources. We design ours to point back to the text they came from, so people can check the result themselves.

Built with Claude

AnkiAI Capture In development

Photograph a textbook page, drop in a lecture PDF, or paste notes. Claude writes flashcards and links every card to the sentence it came from. You review and edit each card before it joins your FSRS schedule.

  1. IngestCamera pages and PDFs are uploaded once and referenced for every later step.
  2. GroundClaude lists the facts worth memorizing. The Citations API attaches the exact source spans.
  3. GenerateStructured outputs turn each fact into a card that matches a fixed schema.
  4. VerifyA second pass drops cards that the cited source cannot answer, and duplicates.
  5. Review and scheduleYou approve each card. Approved cards enter the FSRS review schedule.
A highlighted line in a textbook page becomes a flashcard linked to that line Q · FSRS What does the rating scale control? Source: page 42, highlighted line

Why Claude

We use Claude because we can check its work.

Our mission is to end educational inequality with AI. Every learner should get study material that fits them and that they can trust, whatever their family's income, region, or first language. Claude's API gives us what that takes: answers tied to source text, output locked to a schema, native reading of PDFs and photos, and cost controls that keep long textbooks affordable.

Citations API

Every card links to its source

Claude grounds each fact in the page or PDF you uploaded. The API returns the exact location as data (a page number for PDFs, a character range for text), so the link to the source is set by the API, not written by the model.

Two requests

Grounding and generation are separate steps

The API rejects a request that combines Citations with structured outputs (HTTP 400). So the pipeline runs in two passes: a grounding pass collects cited facts, then a generation pass turns them into cards under a fixed schema.

Structured outputs

Cards in a fixed format

Each card is produced against a JSON schema: type, front, back, concept ID, source span IDs, difficulty hint, and tags. Output is constrained to the schema, so cards arrive in a predictable shape without retry loops for malformed JSON.

Files API · vision · long context

Reads the material students actually have

Textbook PDFs, lecture slides, and photos of printed pages or handwritten notes. PDFs are read as text and as page images, so diagrams are not lost, and long context lets a full lecture PDF go through in one pass.

Prompt caching · Batches API

Costs that can be planned

The shared source text is cached across card batches. Non-urgent bulk work runs through the Message Batches API at 50% of standard prices, and the two discounts stack. Smaller models handle the simple steps, because low cost per textbook is part of the mission.

Server-side key

The API key stays on our server

The app talks to our own backend, which holds the API key, so the key never ships inside the app. Planned protections include App Attest for device checks and StoreKit 2 signed transactions for purchases.

Every card carries its source IDs

A card is built from spans the grounding pass returned. The verify step drops any card the cited source cannot answer, and any duplicate. Nothing joins the FSRS schedule until the learner approves it.

{
  "type": "basic",
  "front": "What does the FSRS rating scale control?",
  "back": "When the card is shown again.",
  "concept_id": "fsrs-rating",
  "source_span_ids": ["s12"],
  "difficulty_hint": 2,
  "tags": ["fsrs", "review"]
}

Example card (illustrative)

Quality

Each card traces back to the text it came from. A second pass removes unsupported and duplicate cards, and the learner approves every card before it is scheduled.

Personalization

Cards come from the material a learner is actually studying, not a generic deck. FSRS schedules each learner's reviews from their own answers.

Access

We start with learners in Japan: students from low-income households, students in areas with few teachers or cram schools, and children and adults with roots abroad who are learning Japanese.

AnkiAI Capture is in development. The pipeline above is our design, and this page will be updated when it ships. Citations docs Structured outputs docs Batch processing docs