Inspiration

Much of what we study fades within days. Spaced repetition is the fix. You review each idea right before you would forget it, and the memory grows stronger each time. The idea is more than a century old, and the research behind it is solid.

The apps built on it ask a lot, though. You write every flashcard yourself. You have to remember to open the app. We wanted the method without the chores. Students already read every text they get, so we built Recall: a study partner that lives in iMessage and writes its questions from your own notes.

What it does

Text Recall a photo or PDF of your notes. It reads them and replies with your first questions. After that, it sends one text a day.

Every question comes from your notes. You answer and add a confidence rating from 1 to 3. Recall grades your answer and explains the right one. When you miss, it tells you why your choice was wrong and where to look in your notes. Longer quizzes open in a small app inside iMessage, the way GamePigeon games do.

The timing comes from FSRS, a modern model of human memory. It brings each idea back just before you would forget it. Confident answers come back later. Shaky ones come back sooner. If you have an exam, Recall never schedules a review after exam day.

A web dashboard shows your streak, your reviews, and how well you know each topic. It looks like a notebook. Headings are written in blue ink. Buttons are folders with colored tabs. Mistakes are marked in red pen.

How we built it

Recall is written in TypeScript and lives in one repository. Photon connects it to iMessage. Mastra runs the server, the API, and the AI agents. Claude Sonnet 5.5 reads handwritten notes and writes the questions. Claude Haiku 4.5 handles quick grading, where speed and cost matter more.

Scheduling sits in its own small package, built on the open source FSRS library and covered by tests. The AI never decides when you study. Only the scheduler does. Data lives in Neon Postgres through Drizzle. The web app uses Next.js and Tailwind, and we designed it in Figma. The iMessage app is written in Swift.

Challenges we ran into

We planned the project around Gemini. Halfway through, we learned that some of our schools restrict free Google AI accounts. We switched to Claude in about an hour. Now the models are one setting in one file.

Our scheduling library hid a surprise. Its maximum interval is not a hard limit. To keep Easy reviews longer than Good ones, it will push a review past the cap and past an exam. A test caught this before any student could. Recall now enforces the limit itself.

Photos had a surprise of their own. iPhones save pictures as HEIC, and Claude cannot read that format. Recall converts each photo and shrinks it before sending. That keeps the cost of reading a page of notes under a cent.

PDFs taught us about cost. One long PDF cost about seventeen times as much as a photo. So the next version reads typed PDFs in code and sends only handwritten pages to Claude.

Accomplishments that we're proud of

Recall works end to end inside iMessage. Notes go in, questions come out, and the next day's quiz arrives on its own.

Accuracy came first. Every question stays tied to the passage it came from. The AI writes the questions, but it never decides when you study.

Privacy was a rule from day one. Deleting a student removes their notes, cards, and messages in one step. A test proves nothing is left behind.

Recall also looks like itself. It does not look like a template. It looks like the notebook on your desk.

What we learned

We learned to give each job to the right tool. Claude is excellent at reading messy handwriting and writing good questions. It is the wrong tool for deciding when you study. A memory model does that better.

Libraries need close reading. Defaults hide assumptions, and a small test is cheaper than a confused student.

Design got easier once we had one clear idea. After we chose the notebook, every screen had an answer.

What's next for Recall

Next, we want questions that code can grade on its own. In a data structures class, Recall could trace a heap or a graph search by running the real algorithm. Recall should also notice what your notes leave out before an exam. Students without iPhones should get it too, through RCS. Most of all, we want to try Recall in a real class for a full semester and measure what students remember.

Built With

Share this project:

Updates

Submission history