Inspiration

Studying for a test usually means one of two things: rereading a textbook until the words stop meaning anything, or hunting the internet for practice questions that may or may not match what your teacher actually covers. Neither one feels like learning, they feel like waiting for the material to sink in.

What we kept coming back to was a simple idea: if a game can be generated for any topic, on demand, tuned to the exact unit a student is on, studying stops being a chore and starts being something closer to play. That's where the name comes from Curios T, for staying curious about the "T" — the topic in front of you.

What it does

Curios T turns a curriculum unit into a study game in seconds. A student picks their curriculum system Ontario, IB, or AP — then their course and unit (or just types in a grade, subject, and topic if their course isn't in the catalogue), sets a difficulty from "Intro" up to "Exam," and optionally adds specific learning objectives. Curios T then generates one of three game types from that:

  • Multiple-choice quizzes — five questions, four options each, tuned to the chosen difficulty
  • Matching pairs — terms matched to definitions or examples
  • Flashcard decks — quick term/definition review cards

Every question is generated fresh against the unit's actual topics and the student's stated objectives, rather than pulled from a static question bank, so the same "Linear Equations" unit produces different practice each time.

Underneath the generator sits a lightweight gamification layer: playing games earns XP, XP unlocks quests and achievements, and — the part students seem to like best — XP can be redeemed for printable certificates with the learner's name, a serial number, and a date, ready to hand to a teacher or a parent or drop in a portfolio.

How we built it

Curios T is a React app built on TanStack Start and TanStack Router, styled with Tailwind CSS and Radix UI primitives, with Supabase handling the backend. The whole thing was built inside Lovable, prompting the app into existence and iterating on it the way you'd iterate on a design doc, describe the feature, see it appear, refine it.

The generator itself is a server function that takes the course, unit, topics, difficulty, game type, and any learning objectives, and turns them into a system prompt for an AI model (Gemini, via Lovable's AI gateway). Rather than trusting free-form text back from the model, each game type has a strict JSON schema, a quiz's shape, a matching set's shape, a flashcard deck's shape, so what comes back is guaranteed to parse into exactly the structure the UI expects, no matter what topic was requested.

The curriculum side is its own small dataset: courses and units across Ontario, IB, and AP, each broken down into topic lists, so the generator always has real curricular content to ground its questions in rather than inventing a course from scratch.

Challenges we ran into

Keeping AI output structured and trustworthy. Multiple-choice quizzes are only useful if the "correct" answer actually is correct and every option is genuinely plausible. Getting the model to reliably return valid JSON that matched our schema — instead of freeform prose, an answer key, or an occasionally malformed object — took real iteration on the system prompt and a fallback path to recover a JSON object out of a messier response.

Handling failure gracefully. AI calls fail — rate limits, exhausted credits, a bad response. Rather than a generic error, the generator surfaces what actually happened so a student (or one of us) isn't left guessing whether it's their internet or the AI backend that's down.

Making one system serve very different curricula. Ontario, IB, and AP don't organize content the same way, and grade bands don't line up neatly across them. Designing a data model that could represent all three — plus a "just tell us your grade and topic" fallback for anything not yet in the catalogue — took more thought than any of the UI work.

Making the reward loop actually feel rewarding. XP, quests, and certificates are easy to bolt on and easy to make feel hollow. We spent time tuning what actions earn XP and what the certificates look like so redeeming one feels like an actual milestone instead of a badge nobody asked for.

What we learned

Building the generator taught us that the hard part of "AI-generated content" is almost never the generation — it's the guardrails: schema validation, error handling, and grounding the model in real curricular data so what it produces is actually useful and correct, not just plausible-sounding.

What's next for Curios T

Expanding the curriculum catalogue beyond the current course list, adding more game types (timed challenges, spaced-repetition review), and building out teacher- and parent-facing views so redeemed certificates and progress can be shared directly rather than just printed.

Built With

Share this project:

Updates

Submission history