StudySprint

An AI-powered study app built with an AI coding agent (Claude Code).

Take a photo of a textbook page and StudySprint turns it into a study pack pitched at the child’s grade level: a sentence-by-sentence translation, a glossary of the hard words, a practice quiz, and help with the homework at the end of the chapter.

StudySprint upload screen

The problem

My kids study from textbooks that aren’t in English. Word-by-word translation is slow, and general translators don’t know what a third-grader can follow. I wanted one tool that reads the page, explains it at the right level, and lets them practise in the language they’re actually studying in.

My role and Claude Code’s role

Claude Code wrote most of the code. I owned the problem, the decisions, the testing and the fixes.

I didClaude Code did
Defined the problem, users (Grade 1–10 learners) and feature set in one spec promptProposed the architecture in plan mode and built the first version (12 files)
Reviewed and approved the plan: vanilla JS, no build step, one module per featureKept to that module pattern throughout
Hit the Gemini free-tier quota and chose to move to OpenRouterKept the change inside the API layer (3 files)
Caught a model ID that didn’t exist on OpenRouter and picked the working modelUpdated the config
Wrote the project conventions into a CLAUDE.md brief so every session stayed consistentFollowed them across sessions
Tested with my kids’ real textbook pages and decided what to fixPut the fixes in place
Chose the translation layout from three mock-upsBuilt the layout
Tuned the prompts for real homework pagesWired the prompts to structured JSON output

What testing with real textbooks changed

The first version worked. Using it on real pages showed what no spec would have caught:

  • Quiz language: questions came out in English, but the child needs to practise reading the study language. Questions are now in the source language, with explanations in English.
  • Sentence splitting: the text was extracted line by line, which cut sentences in half. Sentence-by-sentence extraction made each translation pair a complete thought.
  • Readability: a two-column table was hard for young kids to read. It was replaced with an interlinear layout: the original in bold, the translation underneath.
  • Homework coverage: tasks under a Tehtävä / Tehtävät heading (Finnish for “task/tasks”) are now always answered. Opinion questions are answered in a student’s voice, with an example.
  • Default grade: lowered from 5 to 3 to match the real users.

How it works

  1. One vision call reads the photos, detects the language and translates sentence by sentence at the chosen grade level.
  2. Glossary, quiz and homework help are generated in parallel from that text. If one fails, the others still appear.
  3. Every prompt asks for strict JSON, so each tab renders structured data.
  4. Results can be exported as DOC or PDF with no extra libraries.

Stack: vanilla JavaScript, HTML and CSS with no framework or build step · OpenRouter API (Gemini 3 Flash) · built with Claude Code.

What I took away

The code was the fast part. The real work was deciding what to build, testing it with real users and real content, and making each fix cheap by getting the structure right at the start. That is the same loop I use for process improvement: define, test in the real setting, adjust.