🧩 Tessera — Stop Memorising. Start Understanding.

💡 Inspiration

Students can read an entire chapter, memorise definitions, and still struggle to explain why a concept works or apply it to an unfamiliar problem. Traditional revision often rewards remembering information rather than understanding it. Even AI chatbots can make this worse by providing immediate answers without checking whether the learner has actually understood them.

I wanted to explore a different approach: What if an AI tutor didn't simply explain concepts to students, but helped students discover gaps in their own understanding?

That question inspired Tessera, an AI-powered learning companion designed to assess how learners explain, connect, and apply knowledge—not just whether they can recall an answer.

Live Link: https://tessera-ebh7.onrender.com GitHub Repo Link: https://github.com/SoumyadeepChattopadhyay2004/tessera-ai-tutor

🎯 What It Does

Tessera turns learning into an interactive process built around three skills:

  • 🟠 Explain: Teach a concept to Pip, a curious 12-year-old who asks follow-up questions. Explaining an idea in simple language helps reveal gaps in reasoning that technical terminology can hide.
  • 🔵 Connect: Explore relationships between concepts by explaining how they influence one another and what changes when a connection breaks.
  • 🟢 Apply: Solve a newly generated, real-world scenario without being told which concept to use. This tests whether the learner can transfer knowledge beyond familiar examples.

Tessera organises topics into an interactive concept map. After evaluating a response, it provides structured feedback, identifies reasoning gaps, and records specific misconceptions. Progress is tracked for individual concepts and skills, helping learners identify what to practise next.

Rather than immediately revealing the answer, Tessera encourages learners to think, explain, receive feedback, and try again.

🏗️ How We Built It

I built Tessera as a lightweight web application using HTML, CSS, JavaScript, Node.js, and generative AI APIs. The goal was to keep the implementation understandable and lightweight while making the learning experience interactive.

The application follows a simple architecture:

  1. Topic and concept mapping: The learner enters a topic or provides notes, and the AI generates a structured concept map with relationships between ideas.
  2. Interactive learning interface: Learners select concepts and practise explaining, connecting, or applying them through an interactive map and dialogue panel.
  3. AI-powered assessment: Carefully designed prompts guide the model to evaluate reasoning, identify gaps, and return structured feedback rather than a generic conversational response.
  4. Misconception tracking: Assessment results update a learner model that records mastery, weaknesses, and recurring misconceptions for each concept.
  5. Adaptive practice: Strong responses can trigger more challenging follow-up questions, while weaker responses help identify concepts that need further attention.
  6. Resilient AI integration: The server supports model-provider configuration, retries, fallback models, and JSON repair to make structured AI responses more reliable.

The application currently uses Google Gemini by default, with optional Anthropic Claude support. Learner progress is stored locally in the browser, and the server handles AI requests so API credentials are not exposed in client-side code.

I deliberately kept the implementation lightweight, without requiring a frontend framework or a complex build pipeline.

🧠 What Makes Tessera Different?

A conventional chatbot typically focuses on answering the learner's question. Tessera focuses on evaluating the learner's understanding.

Its design draws on several learning principles:

  • Retrieval practice: Learners actively produce answers instead of repeatedly rereading material.
  • The Feynman technique: Explaining an idea simply exposes gaps in understanding.
  • Elaborative interrogation: Follow-up questions encourage learners to investigate why something happens.
  • Transfer of learning: Applying a concept in a new scenario tests whether the learner can use knowledge beyond a familiar example.
  • Misconception-based feedback: Identifying the underlying incorrect belief makes feedback more actionable than simply marking an answer wrong.

These principles shaped both the assessment prompts and the way the interface represents progress.

⚙️ Challenges We Faced

1. Evaluating understanding instead of matching keywords

A learner can use the correct terminology without understanding the underlying idea. Conversely, a learner may express a correct explanation in informal or imperfect language.

I addressed this by designing assessment prompts around reasoning, conceptual gaps, and misconceptions rather than relying solely on keyword matching. The assessment output separates what the learner understood from what remains unclear.

2. Making AI output predictable enough for an application

Generative AI responses are not always consistent. Free-tier models can return malformed structured data, experience temporary overload, or hit usage limits.

To make the application more robust, I implemented structured JSON outputs, validation and repair mechanisms, retry handling, and model fallbacks. This allows the interface to use assessment results as application data rather than treating every response as unstructured text.

3. Maintaining a meaningful picture of progress

A single correct answer does not necessarily demonstrate lasting mastery. Overwriting a previous score with every new response would also make progress difficult to interpret.

Tessera blends assessment scores over time and tracks progress at the concept-and-skill level. It also records misconceptions so that learners can see more than a simple score or chat history.

4. Keeping the application lightweight and secure

I wanted the project to remain easy to understand, run, and deploy. I used a lightweight Node.js server and a straightforward browser-based interface. Server-side API key handling, request-size limits, rate limiting, protected static-file access, and HTML escaping help address common security risks.

📚 What I Learned

Building Tessera helped me understand that developing a useful AI application involves much more than connecting a language model to a user interface.

I learned how prompt design can shape the behaviour of an AI tutor, why structured outputs matter when model responses drive application logic, and how learner-state tracking can turn isolated conversations into a more coherent learning experience.

I also gained a deeper appreciation for the difference between generating an explanation and evaluating whether someone understands it. Designing the three learning modes required thinking about educational principles, feedback quality, state management, backend reliability, and interface design together.

Most importantly, I learned to treat AI as one component of a larger system—not as a substitute for thoughtful product and software design.

🚀 What's Next?

Tessera is an evolving project. Potential improvements include spaced-repetition scheduling, teacher dashboards for identifying common misconceptions, document-based learning from PDFs and slides, voice-based teach-back, user accounts, and cross-device progress synchronisation.

These features could make the platform more useful for individual learners, classrooms, and self-directed study.

🌱 Final Thoughts

Tessera is built around one simple idea: the goal of learning isn't just to remember an answer; it's to understand the question.

By asking learners to explain, connect, and apply ideas—and by using AI to identify the gaps in their reasoning—I hope to make studying more active, reflective, and meaningful.

Built for the AI + Education challenge.

Built With

  • adaptive
  • edtech
  • generative-ai
  • google-gemini
  • javascript
  • learning
  • node.js
  • personalized
  • prompt-engineering
Share this project:

Updates

Submission history