01. The problem, taken seriously
The real starting problem is simple. A learner wants to understand concepts easily and remember them durably. This site takes that goal seriously. It does not jump straight to features. Instead, it starts with three core needs. Understand easily. Memorize durably. Apply reliably. Those three needs drive everything else.
A hallucinated answer is worse than none. Confident but false output hurts a learner’s own thinking. So explanations must be grounded and arrive on demand. That rule forces a retrieval system. Every piece of understanding comes from one corpus. The same corpus feeds the flashcards, the practice problems, and the tutor chat. The features are not random. They are derived from the three needs.
Memory has three levers. Retrieval practice, spacing, and encoding. Each lever becomes a concrete feature here. Active recall flashcards with plausible distractors drive retrieval. An FSRS scheduler models your forgetting curve and asks again just before you would forget. The loci memory palace trainer attaches concepts to spatial anchors. Mnemonics give abstract terms something vivid to bind to. These are not extras. They are the encoding lever made real.
Applying needs its own rigor. Recall alone is not skill. So practice problems use faded guidance. A worked example becomes a completion problem, then a full problem on your own. Every exercise is graded against real code. Expected identifiers are checked against the actual source. If an identifier is ungrounded, it is dropped. The same guarantee applies to reference pages. They pass a faithfulness evaluator and a refusal gate. All this happens at write time, not read time.
Now notice the shared substrate. Every derived feature is retrieval over one corpus. Retrieval needs three things per chunk. An embedding to find it by similarity. The text to hand to the learner or the language model. And metadata to filter by lesson or section. Those three things can live in one place. The default split uses a vector store and a separate docstore. That costs a second input-output hop and a consistency obligation. Nothing stops a vector pointing at a node the docstore no longer has. So the split is collapsed. The payload holds the text and metadata right with the embedding. The second store becomes redundant by construction.
The whole learning machine stands on a single source of truth. One database holding embedding, text, and metadata together. Consistent by design. The three needs forced the features. The features reduced to retrieval over one corpus. The corpus reduced to that one database. Every step follows from the one before it. There is even a pleasing symmetry. Recent neuroscience models biological memory consolidation as a form of compressive retrieval augmented generation. The memory being trained and the store doing the retrieving are at bottom the same shape. That is where taking a simple wish seriously leads. Not to a list of features. To a system where everything is derived from the problem itself.