-
-
Recall First: find out what you only think you know.
-
Results: felt 65% sure, knew 0%. The gap is what to study first.
-
The problem: an AI summary makes you feel you know it. Feeling isn't knowing.
-
Step 1: add your notes or try the sample notes.
-
Compared with Gemini Notebook, ChatGPT, Knowt and Anki: only Recall First checks your confidence.
-
Step 3: answer from memory by typing or by voice (Whisper speech to text).
-
Step 5: sure and wrong costs 8 XP. The AI grades the meaning, not the wording.
-
Research: free AI answers left students worse off once the AI was gone (Bastani et al., PNAS 2025).
-
Step 4: say how sure you are before you see the result.
-
Hint ladder: hints come weakest first, and a right answer after a hint counts half.
-
Blind-spot map: known, missed, or sure but wrong.
-
Upload PDF and Word files. They are read on your device, never uploaded.
-
Fix these now: every confident mistake comes back, asked from a new angle.
-
Open source and planned first: scope, product requirements, technical spec, build checklist.
-
Also on Android: the Recall First APK on Android 15.
Live site · Open the app · Android APK · Scope · PRD · Spec · Demo video
About
Recall First is an AI study partner that shows you what you only think you know.
You add your notes (PDF, Word, text, or pasted). The AI writes questions from those notes only. You answer from memory, by typing or speaking, and you say how sure you are before you see the result. At the end, Recall First puts what you felt you knew next to what you actually knew, and tells you exactly which confident answers were wrong, so you know what to study first.
Most AI study tools make studying feel easier. Recall First measures whether your confidence is earned.
Contents
- Why this exists
- How it is different
- See it working
- How it works
- Features
- The research behind it
- Run it
- Architecture
- Built for Build With AI: Basics
- Project layout
- Credits and licence
Why this exists
Asking an AI to summarise your notes feels like studying. The summary reads smoothly, so it feels familiar, and that feeling of fluency gets mistaken for knowledge. Students stop studying too early, and the gaps show up in the exam.
Two findings shaped this project:
- Answering from memory beats rereading. Practice testing outperforms restudying across 122 experiments.
- Learners can't tell what they know without testing it. Confidence judgments only become accurate after the learner gets direct evidence of what they can and can't recall.
So the app never explains first. You answer, you commit to a confidence level, and only then do you see the result.
How it is different
| Quizlet | Gemini Notebook (NotebookLM) | ChatGPT Study Mode | Knowt | Anki | Recall First | |
|---|---|---|---|---|---|---|
| Questions generated from your own files | Paid | Yes | Yes | Yes | No (add-ons) | Yes, PDF, Word, text, paste |
| Answer typed or spoken from memory, no multiple choice | Partly | Partly | Yes | Partly | Self-graded | Yes, Whisper speech to text |
| Confidence rated before each result | No | No | No | No | No | Yes, four levels |
| Score that punishes being sure and wrong | No | No | No | No | No | Yes, certainty-based XP |
| "Felt vs knew" calibration chart and Brier score | No | No | No | No | No | Yes |
| Catch a planted error in an AI summary | No | No | No | No | No | Yes |
| Second question, new angle, on each confident miss | No | No | No | No | No | Yes (hypercorrection) |
| Explanations only after you answer | No | No | Optional | No | n/a | Always |
| Account required | Yes | Yes | Yes | Yes | Optional | No |
Competitor features are taken from their public pages and a 2026 comparison of AI study tools. The point is not that they are bad tools. They compete on generating content, shared libraries and scheduling. None of them measures whether your confidence matches what you can actually recall, and that is the whole product here.
See it working
On Android
Screenshots of the Recall First APK running on Android 15 (1080 × 2400, Android emulator), against the live site with real AI. These runs also caught two phone-only bugs that are now fixed: the page drawing under the status bar on Android 15, and the keyboard popping up over each question.
![]() Add notes as sources |
![]() Each source is a switchable chip |
![]() The coach asks, and reads it aloud |
![]() Commit to a confidence: see the stakes |
![]() Certain and wrong: −8 XP |
![]() "Why?" names the mix-up, adds a memory hook |
How it works, in motion
![]() Quiz: sample notes → AI question → answer by voice (transcribed by Whisper) → Certain → "Wrong, −8 XP" → Why? |
![]() Results: spot the false sentence → felt vs knew → calibration chart → AI coach → Ask your notes |
The results screen
![]() One sentence in this AI summary is false |
![]() The gap between felt and knew |
![]() Does each confidence level mean what it says? |
![]() AI coach: the pattern and three next steps |
![]() Ask your notes, with the line quoted |
![]() Spoken answer, ready to edit |
The results captures and GIFs were recorded in Chromium at phone size (390 × 844) against the live site. The microphone input in the voice GIF is a synthesized voice clip played into a virtual microphone.
How it works
flowchart LR
A[Add notes<br/>PDF · Word · text · paste] --> B[AI writes questions<br/>from your notes only]
B --> C[Coach reads the question aloud]
C --> D[You answer from memory<br/>type or speak]
D --> E[You choose a confidence<br/>Guessing · Unsure · Fairly sure · Certain]
E --> F[AI grades it<br/>right · partly · wrong]
F --> G{Sure and wrong?}
G -- yes --> H[−XP, Why? explanation,<br/>study first]
G -- no --> I[+XP]
H --> J[Results: felt vs knew,<br/>calibration, coach]
I --> J
J --> K[Fix these now · Ask your notes ·<br/>Anki and calendar export]
- Add your notes. Drop PDFs, Word files, text or Markdown, or paste. Text is extracted in the browser; files are never uploaded or stored.
- Pick a level. Easy, Exam or Hard. Hard questions make you connect facts from different parts of the notes.
- Answer from memory. The notes are hidden. Type, or tap the mic and speak.
- Say how sure you are, before the result. The screen shows what is at stake: Certain earns +4 if right and costs −8 if wrong. "I don't know" costs nothing, because honesty is never the mistake.
- Get graded. Paraphrases count. Half-answers get half credit. Wrong or hinted answers can ask "Why?".
- See the gap. Felt vs knew, a calibration score, which confidence levels you can trust, and a coach with three next steps.
- Close the gap. Fix the confident misses with a new question from a different angle, write the correction in your own words, ask your notes, and export what you missed for spaced review.
Features
Catch the illusion
- Confidence before every result, four levels, with the stakes shown live.
- Certainty-based XP. Sure and right earns most, sure and wrong costs most, "I don't know" costs nothing.
- Calibration chart and Brier score. How often each confidence level was right, against what it claims.
- Fluency traps. Answered fast, marked Certain, and wrong.
- Spot the false sentence. An AI summary of your notes with one planted error.
Close the gap
- Fix these now. A second question on each confident miss, from a new angle.
- Why? Explain it. After a miss, the explanation from your notes plus a memory hook.
- Teach the gap. Write the correction in your own words; it is graded against your notes.
- Hint ladder. Three hints, weakest first; a right answer after a hint counts half.
- Blind-spot map. Which concepts in your notes were right, missed, sure but wrong, or untested.
- AI coach. Names the pattern in your run and gives three concrete next steps.
Make it stick
- Guess first. Quiz before you read, read, then quiz again with new questions.
- Mix sources. Questions spread across several files.
- Spaced return. Export missed questions to Anki, or add 1, 3 and 7-day calendar reminders.
- Streak and XP, kept only in your browser.
- Share the shape, not the notes. A Wordle-style card with no content in it.
Voice and AI
- Read aloud. Questions, feedback, explanations and coach messages are spoken.
- Answer by voice. Recorded, transcribed by Groq Whisper, put in the answer box for you to check. Never submitted on its own.
- Ask your notes. After the quiz only. Answers come only from your notes, with the supporting line quoted word for word; questions your notes can't answer are refused.
- Question-quality check endpoint flags questions whose answer isn't in the notes.
The research behind it
Found with academic search (Consensus, SciSpace). Recall First applies these findings; it does not claim to prove learning gains on its own.
| Finding | Source | Where it shows up |
|---|---|---|
| Practice testing beats rereading, and transfers to new questions (122 experiments, d ≈ 0.40) | Pan & Rickard, 2018, Psychological Bulletin | The whole loop |
| Recall tests help more than recognition tests | Rowland, 2014, Psychological Bulletin | Typed or spoken answers, no multiple choice |
| After retrieval practice, confidence judgments become more accurate | Barenberg & Dutke, 2018, Memory | Confidence before every result |
| Feedback on both performance and judgments reduces overconfidence | Callender et al., 2016, Metacognition and Learning | Calibration chart and coaching line |
| Errors made with high confidence are the easiest to correct after feedback | Butterfield & Metcalfe, 2001; Carpenter et al., 2018 | Study these first, Fix these now |
| …but they come back after a week unless re-tested | Butler, Fazio & Marsh, 2011 | Calendar reminders; week-later re-test in the roadmap |
| Pretesting before studying improves learning; learners underestimate it | Pan et al., 2023; Pan et al., 2021 | Guess first mode |
| Successive relearning (retrieve until correct, over spaced days) improves exams and retention | Rawson et al., 2013; Higham et al., 2021 | Spaced return; relearning decks in the roadmap |
| Interleaving helps for confusable topics, less for word lists | Brunmair et al., 2019, meta-analysis | Mixed sources |
| Self-explanation beats elaborative interrogation | O'Reilly et al., 1998 | Teach the gap |
| Students with free AI answers did worse once it was removed; hints reduced the harm | Bastani et al., 2025, PNAS | No explanations before answering, hint ladder |
Honest limits. The testing effect is weaker and less certain in maths (Murray et al., 2025), so Recall First fits fact- and concept-heavy notes best. Training calibration with a scoring rule alone has had null results (Martin et al., 2024), which is why the app pairs the score with per-level feedback and a concrete next step rather than a number alone.
Run it
Try it now: recall-first.vercel.app/app. Press Try sample notes if you don't have notes handy. On Android, install the APK and allow the install when asked.
Run it locally (Node.js 22 or newer, and a free Groq key or an Anthropic key):
git clone https://github.com/LSUDOKO/recall-first.git
cd recall-first
npm install
cp .env.example .env # paste your key after GROQ_API_KEY= (or ANTHROPIC_API_KEY=)
npm start # http://localhost:3000 (landing) and /app (the quiz)
Or install the package from GitHub Packages.
GitHub's npm registry needs a GitHub token with read:packages, even for public packages:
echo "@lsudoko:registry=https://npm.pkg.github.com" >> ~/.npmrc
echo "//npm.pkg.github.com/:_authToken=$(gh auth token)" >> ~/.npmrc
GROQ_API_KEY=your-key npx @lsudoko/recall-first # http://localhost:3000
| Command | What it does |
|---|---|
npm start |
Local server with live AI |
RECALL_MOCK=1 npm start |
Practice mode: canned questions and a word-overlap grader, no key needed |
npm test |
23 tests: score, XP, calibration, scheduling, interleaving, share codec |
android/build.sh |
Rebuilds dist/recall-first.apk with the Android SDK build-tools (no Gradle) |
Deploy: the repo deploys to Vercel as-is (public/ static, api/*.js functions). Set GROQ_API_KEY (or
ANTHROPIC_API_KEY) in the project's environment variables. Optional: RECALL_MODEL, RECALL_TTS_VOICE.
Read aloud with Groq's voice: Groq's Orpheus voice model needs a one-time terms acceptance by the Groq org
owner at console.groq.com/playground?model=canopylabs%2Forpheus-v1-english. Until then the browser's built-in
voice is used automatically.
Architecture
flowchart TB
subgraph Browser["Browser or Android app (WebView)"]
UI["public/app.js<br/>screens, session, XP, voice"]
SRC["public/sources.js<br/>PDF (pdf.js), Word (mammoth), text"]
CAL["public/calibration.js<br/>Brier, reliability, coaching"]
ST["localStorage<br/>XP, streak, trend only"]
end
subgraph Server["server.js locally, api/*.js on Vercel"]
R["lib/routes.js"]
AI["lib/ai.js<br/>strict JSON-schema calls"]
V["lib/voice.js<br/>speak, transcribe"]
end
Groq["Groq<br/>gpt-oss-120b · Whisper · Orpheus"]
Claude["Claude (optional)<br/>claude-opus-5-5"]
UI -->|fetch /api/*| R
SRC --> UI
CAL --> UI
UI --> ST
R --> AI --> Groq
AI -.-> Claude
R --> V --> Groq
- One API, two hosts.
lib/routes.jsholds every handler;server.jsserves them locally andapi/*.jswraps them as Vercel functions. - Structured output everywhere. Every model call sends a strict JSON schema and the reply is validated again on the server before the page sees it.
- Keys stay on the server. The browser never sees an API key.
- No database, no accounts. Notes travel in the request and nowhere else. XP, streak and the felt/knew trend live only in the learner's browser.
| Route | Purpose |
|---|---|
POST /api/questions |
Five questions, concepts, hints and a summary with one planted error (difficulty: easy, exam, hard) |
POST /api/grade |
right, partly or wrong, with feedback and the correct answer |
POST /api/followups |
A new-angle question for each confident miss |
POST /api/explain |
Why the answer is right, plus a memory hook (after answering only) |
POST /api/coach |
The pattern in this run and three next steps |
POST /api/ask |
Answers from the notes with a verbatim quote, or a refusal |
POST /api/review |
Flags questions not answerable from the notes |
POST /api/speak |
Text to speech (Groq Orpheus), browser fallback |
POST /api/transcribe |
Speech to text (Groq Whisper) |
GET /api/status |
Provider, model and voice availability |
Built for Build With AI: Basics
This project was built for the Devpost learning hackathon Build With AI: Basics, using the Devpost Learn skill pack. The main requirement is to design and build with the skill pack, using flipped interaction and planning documents. Everything below can be checked in this repository.
How the skill pack was used
flowchart LR
A[1-start<br/>flipped interview,<br/>learner profile] --> B[2-scope<br/>scope.md]
B --> C[3-prd<br/>prd.md]
C --> D[4-spec<br/>spec.md]
D --> E[5-build<br/>checklist.md,<br/>one slice per commit]
E --> F[6-ship<br/>deploy, app map,<br/>wrap-up]
| Skill | What it did | Proof in this repo |
|---|---|---|
1-start |
Introduced flipped interaction: the AI interviews the learner, the learner brings the idea and makes the decisions. Wrote the learner profile every later skill reads. | Skill at .claude/skills/1-start. The profile is kept out of git on purpose, as the skill requires: see the /devpost/learner-profile.md rule in .gitignore. |
2-scope |
Turned the idea into one kernel and one core loop, with what is in and out of the proof of concept. | devpost/scope.md, status: approved |
3-prd |
Product requirements: the user journey, every screen, edge cases, look and feel, each traced back to the scope. | devpost/prd.md, status: approved |
4-spec |
Technical spec in plain language: server, API routes, AI calls with JSON schemas, file structure. | devpost/spec.md, status: approved |
5-build |
Split the build into small slices. Each slice has a "why now", PRD and spec references, a mechanical verify step and a commit message, and was ticked only after it passed. | devpost/checklist.md, status: approved, slices 1–8 ticked |
6-ship |
Deployment, a code tour that maps the code back to the plan, and the wrap-up record. | devpost/app-map.html, live at recall-first.vercel.app |
The planning documents
| Scope | Build checklist |
|---|---|
![]() |
![]() |
| Product requirements (PRD) | Technical spec |
![]() |
![]() |
The plan, slice by slice, in the commit history
The proof of concept was built exactly in the checklist's order, one commit per slice:
| Checklist slice | Commit |
|---|---|
| Empty repository with a licence | 04451e5 Initial commit |
| 1. Paste notes; the page says when there is enough to quiz on | 960a7b1 Add Start screen with note intake and server |
| 2. Quiz me turns your notes into five real questions | 04b0c9b Generate five questions from notes with structured output |
| 3–4. Answer from memory, rate confidence, graded fairly | 3edc47c Add answer, confidence picker, I don't know flow and grading |
| 5. Results show where confidence and knowledge disagree | 2719b18 Add results with calibration scale and study-first list |
| 6. Errors, edge cases, README and polish | be45e0c Handle errors and edge cases, add README |
| Ship: code tour and wrap-up | 5753229 Add app map and build wrap-up records |
| 7. Expansion features | e07a272 Add hints, calibration scoring, spot-the-error, fix round and exports |
| 8. Deployed on Vercel | 130b817 Deploy to Vercel |
Changes of plan are written down, not hidden
Every change after approval is recorded under Revisions in devpost/checklist.md,
with the reason and the documents it touched. Examples: the look changed twice, slices 3 and 4 were merged,
Groq was added as a provider, and voice and the AI tutor came after the proof of concept. Work beyond the
original scope is kept as a separate Expansion After the Proof of Concept section in the PRD, so the approved
plan stays readable.
Submission checklist
| Requirement | Where |
|---|---|
| New project, started from an empty folder during the submission period | First commit 04451e5 is an empty repo with a licence |
Built with the skills (1-start → 6-ship) |
.claude/skills/ and their outputs in devpost/ |
| Planning docs in the repo | Scope, PRD, spec and checklist, all status: approved |
| Open source licence | MIT |
| Public repository | You are here |
| Demo video (1–3 minutes) | recall-first-film.mp4 (2:54, in the latest release) |
| Working app | recall-first.vercel.app and the Android APK |
Project layout
server.js local server: static files + /api/*
api/ Vercel functions, one per route
lib/ai.js question, grade, follow-up, explain, coach, ask, review (Groq or Claude)
lib/voice.js Groq Orpheus text to speech, Groq Whisper speech to text
lib/routes.js the API handlers, shared by both hosts
lib/vercel.js wraps a handler as a Vercel function
public/index.html landing page
public/app.html the quiz
public/app.js session, screens, XP, voice, results
public/sources.js PDF, Word and text extraction in the browser
public/calibration.js Brier score, per-level reliability, coaching line
public/store.js browser-only decks, relearning schedule, share codec (roadmap)
public/styles.css design tokens and components
public/media/ logo, banner, screenshots and GIFs used in this README
android/ WebView wrapper and a Gradle-free build script
dist/recall-first.apk signed debug build
test/ node --test suites
devpost/ scope, PRD, spec, checklist, app map
samples/ example notes
Built With
- android
- css
- devpost
- html
- java
- javascript




















Log in or sign up for Devpost to join the conversation.