Skip to main content

About the project

Most online courses keep going whether you’ve understood the last lesson or not. Finishing a video isn’t the same as understanding it, and when you’re stuck you usually get the same explanation again.

So our team, Under Ctrl, built Cognify: an adaptive learning platform that turns a learning goal into a personal course and changes the course based on how you actually answer.

How it works
🎯 Describe what you want to learn, e.g. “Python for data analysis”
🧭 A short diagnostic finds what you already know
🕸️ Cognify builds a skill graph, a map of concepts and the prerequisites between them
📚 Each lesson is generated from at least 3 cited sources
🧑‍🏫 A built-in tutor answers your questions, gives hints before full solutions and accepts voice input
📸 For written questions you can upload a photo of your handwritten working, like a maths derivation, and get it graded
🔁 If two of your answers point to the same misunderstanding, Cognify gives you a quick check first. Only if you get the check wrong does it add a review lesson, and it shows you why

What makes it different
The skill graph isn’t just a visual roadmap. It keeps the evidence from your answers: what you got wrong, what changed in your path and the reason for each change. A single wrong answer never reshapes your course. The model suggests changes; our own rules decide whether they happen.

How we built it
⚙️ Next.js 16, React 19, TypeScript and Tailwind CSS
🤖 Gemma 4 (Google’s open model) through the Gemini API: it plans the graph, writes lessons and questions, grades short answers and tutors
🗄️ Supabase Auth and Postgres, with row-level security so learners can’t edit their own grades
🔍 Tavily web search for sources, with a curated fallback catalog
✅ Zod checks every piece of model output against a schema before anything is saved
🧪 Automated tests cover the full learner journey without network calls

What we learned

  • Model output is a proposal, not a decision. Checking it and keeping the decisions in our own code made the system predictable and testable.
  • LLMs and JSON have funny edge cases. LaTeX like \frac is a valid JSON escape, so maths was silently turning into control characters until we caught it.
  • Finishing a lesson and mastering a skill are different things. Keeping them separate made our dashboard honest.

🔗 Try it: https://cognify-under-ctrl.vercel.app
💻 Code: https://github.com/p-art-dheev/Under-Ctrl
🎥 Demo: [video link]

Huge thanks to my teammates [@Dalli Krishan Preetham Reddy], [@Irala Charuhas Reddy], [@Vatturu Pardeev] and [@A Prithvi], and to INIT CLUB, iDEA CLUB and Major League Hacking for organising.

🔗 Try it: https://cognify-under-ctrl.vercel.app
💻 Code: https://github.com/p-art-dheev/Under-Ctrl
🎥 Demo: https://youtu.be/c5Z_SZ1gWnY

#Hacktoberfest #MLH #Hackathon #GemmaAI #EdTech #NextJS #Supabase #OpenSource #BuildInPublic

Built with

typescriptnode.jsapisupabasevercelgemini

AI tools

Coded withClaude CodeGemma 4 26B A4B

Prize Categories Entered

  • Deepmind Google

    Best Use of Gemma 4

    Submitted
  • DigitalOcean

    Best Open-Source AI Project

    Submitted