A diagnostic tool that finds the gaps in how you understand a DSA topic, not just whether you solved the problem.

The next step is writing the first database migration and starting implementation of the Postgres schema and the expert concept graph for Arrays and Hashing. After that, the goal is to have a working prototype that I can test on actual learners, not synthetic cases.
Long term, if the diagnostic proves useful for DSA topics, I would extend it to system design concepts, where the gap between knowing definitions and being able to reason about tradeoffs is even wider.
Most interview prep tools measure completion, not understanding. You can watch every NeetCode video, solve two hundred LeetCode problems, and mark every topic done, and still freeze the moment an interviewer asks you to explain why your solution works, or what would break if one assumption changed.
I noticed this in my own prep. I could pass LeetCode's test cases on a binary search tree problem and still not be able to cleanly explain, out loud, why the BST property applies to every descendant and not just direct children. That gap between I can solve it and I can explain it is exactly what technical interviews actually test, and exactly what existing tools don't measure.
The question that started this: how do you measure understanding when the answer isn't right or wrong?
I spent a month trying different approaches before I found one that felt honest. The first idea was to build yet another coding platform with harder problems. The second was to use an LLM to grade free-text explanations and return a score. Both felt wrong, because neither solved the real problem: the tools weren't measuring understanding at all, they were measuring output quality and calling it understanding.
I wanted to build something that could tell me, specifically, what I thought I understood but actually didn't. Not a score. Not a rank. A concrete list: here is what you know, here is what you think you know but don't, and here is where your reasoning has invisible gaps.
Existing platforms like LeetCode and NeetCode are excellent at what they do, but what they do is test recall of patterns and speed of implementation. They don't test whether you could explain the concept to someone who hasn't seen it before. They don't test whether you could defend your design choices. They don't test whether you could predict how the data structure behaves when you change the input conditions.
I realized the missing piece wasn't better content. It was a diagnostic layer that sits between learning and practicing, confirming that understanding exists before the learner moves to the next topic.
I made a deliberate choice to split the AI and the logic into two separate layers rather than asking one model call to grade the explanation and return a score. The AI only ever extracts and generates language. Every actual scoring and gap-detection computation is deterministic Python running against a hand-curated expert concept graph.
The tradeoff is more upfront engineering. Designing a real concept ontology by hand instead of letting a model improvise one means slower initial development, but it produces a result that's explainable. A score of 71 should always be traceable to 14 of 22 concepts covered, 3 explained weakly, 1 misconception flagged, not a black-box number a model produced once and can't reproduce.
I chose Gemini 1.5 Flash specifically for cost, not capability ceiling. At roughly $0.00046 per session, the AI layer's job, concept extraction and follow-up generation, doesn't need a larger, more expensive model. But I also know this is the part most likely to need revisiting once real sessions are tested.