Inspiration
Students often spend more time turning notes into study materials than actually studying them. Even after creating flashcards, most tools leave learners guessing about what to review next.
We built CardSparks to connect the entire learning cycle: turn source material into editable cards, study them with spaced repetition, identify weak spots, and immediately turn those weaknesses into the learner’s next action.
What it does
CardSparks is an AI-assisted study platform that helps learners create, organize, study, and improve flashcard decks.
Users can:
- Generate editable cards from a topic or pasted study notes
- Import PDF, DOCX, TXT, Markdown, and image files
- Scan worksheets or textbook pages using browser-based OCR
- Create basic, reversible, cloze, image-reference, and multiple-choice cards
- Study with an SM-2-style spaced-repetition schedule
- Practice difficult cards across multiple decks
- Take timed, shuffled practice tests without automatically changing review schedules
- Receive independent AI study coaching after completing a session
- Analyze cards for vague prompts, duplicates, excessive length, and poor formatting
- Track retention, streaks, upcoming workload, and difficult material
- Bulk-edit cards and organize decks using folders and tags
- Export decks as PDF, Markdown, CSV, Anki-compatible data, or JSON backups
- Share public read-only decks without exposing private study history
CardSparks also includes a deterministic mock mode, allowing the complete experience to be demonstrated without depending on an external AI provider.
How we built it
The frontend is built with React 19, React Router, and Vite. It uses PDF.js for PDF extraction, Mammoth for DOCX processing, and Tesseract.js for browser-side OCR.
The backend uses Django 6 and Django REST Framework. It provides token-based authentication, deck and card APIs, review history, progress analytics, study settings, and transactional scheduling. Optional AI features connect to Mistral.
We placed the real and mock implementations behind the same frontend API adapter. This lets the interface run as a self-contained demonstration or connect to the full Django backend without changing individual pages.
The study system uses an SM-2-inspired algorithm. Review results update card intervals, repetition counts, easiness, mastery, and due dates. AI coaching is requested only after scheduling saves successfully, ensuring that an AI failure can never invalidate a completed study session.
Challenges we ran into
One major challenge was coordinating authentication with initial data loading. The frontend originally attempted to fetch decks before the user token had been restored, producing incorrect authentication errors. We reorganized the application state so protected requests wait for authentication initialization.
Importing several document types entirely in the browser was another challenge. PDF, DOCX, OCR, and plain-text sources all produce different output, so we created a shared normalization and validation pipeline before passing extracted text into card generation.
Scheduling also required careful handling. A learner might initially miss a card and answer it correctly on a retry. We preserve the weakest result so the later success does not erase evidence that the card was difficult.
We also had to keep optional features isolated. Coaching failures, OCR problems, and practice-test results must never corrupt decks or saved review history.
Accomplishments that we're proud of
We are proud that CardSparks became much more than an AI flashcard generator. It forms a complete feedback loop from source material to measurable recall and then recommends a concrete next action.
Other accomplishments include:
- A real authenticated Django backend and seeded judge account
- Editable AI output rather than silently saved generations
- Cross-deck weak-spots practice
- Timed exams with optional schedule updates
- Browser-side document extraction and OCR
- Independent AI coaching with retry and failure states
- Accessible, responsive desktop and mobile interfaces
- Extensive import, export, organization, and bulk-editing tools
- 40 passing frontend tests and 40 passing backend tests
- A production build and hardened deployment configuration
What we learned
We learned that responsible AI product design is largely about boundaries. AI suggestions should remain reviewable, scheduling should stay deterministic, and optional provider failures should not destroy completed work.
We also learned how important frontend state coordination becomes when authentication, asynchronous requests, mock data, and real APIs share the same interface.
Finally, we learned that study tools become more valuable when their features reinforce one another. Analytics are much more useful when a learner can immediately click “Practice weak cards” instead of merely viewing a chart.
What's next for CardSparks
Next, we want to add persistent cloud file storage, collaborative study groups, teacher-created assignments, shared progress challenges, and richer accessibility options.
We also plan to improve OCR for handwriting, add server-side import and export processing for large decks, support additional AI providers, and move production data from SQLite to a managed persistent database.
Longer term, CardSparks could use consent-based learning analytics to create more personalized study plans while keeping learners in control of every generated card and scheduling decision.


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