Skip to content

Repository files navigation

StudyPilot: An AI study workspace for students

StudyPilot is a student academic workspace. It turns your study materials, PDFs and YouTube lectures, into flashcards, quizzes, and Word study notes, and it ships an AI Advisor, a Resource Hub, Academic Passport onboarding, and full account and profile management on top of Django JWT auth, Supabase Google OAuth, and Sui wallet sign-in.

It also remembers. Every wrong answer, every lecture you convert, every day you study and every half-finished quiz is written to Walrus Memory through MemWal, so the app stops being a record of what it asked you and becomes a memory of what you keep getting wrong. The same memory is readable from any other MemWal client on the same account.

The app and its API run together on Vercel: the React build is served as static files and the API is one function under /api. The API is a TypeScript port of the Django backend in studypilot_backend/, which is kept as a reference and a rollback; see studypilot_worker/README.md. Supabase holds the database.

What is StudyPilot?

  • A study workspace, not just a converter. One clean dashboard ties together your courses, generated outputs, recent activity, and a 7 day study time chart.
  • PDF to study material. Upload one PDF, the backend extracts the text and generates flashcards, MCQs, or a mixed quiz from it.
  • YouTube to study material. Paste a lecture link and get a downloadable Word document, flashcards, an MCQ quiz, or a mixed quiz. No video is ever downloaded, only the transcript and metadata are used.
  • Reliable by design. The YouTube transcript is resolved through multiple sources with fallbacks, so a single failing source does not break a request, and generation retries when the first pass returns too few items.
  • AI Advisor. Ask academic questions and get guidance grounded in your course and policy context, powered by DeepSeek through an OpenAI compatible client.
  • Resource Hub. Discover videos, textbooks, and academic articles from the YouTube Data API, Google Books, and OpenAlex.
  • Mistake memory on Walrus. Submitting a quiz stores a record per wrong answer and per correct answer on a topic you previously missed. A weakness briefing ranks topics by misses, severity and recency, and quiz generation is weighted roughly 60 percent toward what you keep getting wrong.
  • It knows what you have studied. PDFs, YouTube lectures, generated decks and saved resources are remembered too, so the advisor can build on a video you converted instead of explaining from scratch.
  • Nothing is lost when you close the tab. Answering a quiz checkpoints it to Walrus, so logging out, running out of battery, or moving to another device still lets you pick up where you stopped.
  • Secure auth. Django JWT with transparent token refresh, Supabase Google OAuth, and Sui wallet sign-in where the wallet signs a server-issued nonce, never a transaction.
  • Resilient to flaky networks. The frontend pings the backend on load and retries connection level failures with backoff, so a dropped or slow connection does not surface as a failed feature. The backend itself runs always on, so there is no idle spin down to wait for.

Features at a glance

Wallet sign-in signs a personal message containing the API website origin, wallet address, a one-time nonce, and a five-minute expiry. The browser validates the message before signing; the API verifies it and consumes the nonce atomically. Set SUI_AUTH_ORIGIN on the API when its public origin differs from the request URL seen by the host. Use the exact frontend or API origin, without a path. Old unsigned-context challenges expire during rollout; request a new challenge.

Feature Route What it does
Dashboard /student/dashboard Stats, quick actions, 7 day study chart, recent activity, recommendations.
PDF Study Converter /student/pdf-studio Upload one PDF and generate flashcards, MCQs, or a mixed quiz.
YouTube Converter /student/youtube-to-docx Turn a lecture link into a DOCX, flashcards, an MCQ quiz, or a mixed quiz.
Resource Hub /student/resource-hub Find videos, textbooks, and articles for your courses.
AI Advisor /student/ai-advisor Ask academic questions grounded in course and policy context.
Academic Passport /onboarding Capture courses, goals, weak areas, and learning preferences.
Profile /student/profile Manage your account and delete it.
Weakness briefing /api/memory/briefing/ Topics ranked by how badly you keep missing them.
Study history /api/memory/history/ Days studied, read back out of Walrus.
Resume /api/memory/resume/ Unfinished quizzes and decks, with your answers.

How the memory works

Walrus Memory is append-only: there is no update and no delete. Everything below follows from that. StudyPilot never stores a counter; it appends a record per event and counts them at recall time. Finishing something appends a status:done record rather than removing the active one.

Records carry a pipe-delimited header so they can be parsed and ranked, with prose underneath so semantic recall can still find them:

MISS | sp-u17-pharmacology | beta-blocker-selectivity | 2026-08-23 | sev:medium
Q: Which beta blocker is cardioselective?
I answered: Propranolol. My misconception: answered Propranolol instead of Atenolol.
Correct: Atenolol

Three namespaces, deliberately separate

Namespace Holds Why it is on its own
sp-u{id}-{course} MISS, HIT, MASTERED The briefing ranks over whatever a recall returns
sp-u{id}-studied MATERIAL, SESSION Uploads and lectures would bury real mistakes
sp-u{id}-progress PROGRESS One checkpoint per answer is noisy by nature

Mixing these would break the product, not just the tidiness: a namespace full of PDFs you never got wrong would push your actual mistakes out of the top five.