Product & Technology

What is actually running today, at version 0.66.0

For the learner

  • Grounded chat tutor — streaming answers retrieved from your subject's own documents, with source citations, full Markdown and LaTeX rendering, in teach mode or practice mode.
  • Practice that follows the curriculum — question sets generated per knowledge component and graded automatically, served in prerequisite order rather than at random, with a background job topping the question pool back up as it is consumed.
  • Spaced review on FSRS — scheduling by the FSRS algorithm, so items return just before you would forget them.
  • Interactive knowledge map — a graph of the subject with per-node mastery state, search, personal notes, and the ability to ask for more material on a node straight from the map.
  • Statistics — per-subject mastery overview and progress trend over time, filterable by subject.
  • Evidence from ordinary chat — what you demonstrate in conversation counts towards mastery; you are not limited to formal quiz answers.
  • Bring your own key — use your own OpenAI, Anthropic, Gemini, Mistral, Qwen or Kimi key. Keys are validated against the provider and stored encrypted, and the exact model is resolved from the provider's live model list so a deprecated model name cannot silently break your tutor.
  • Hungarian and English student interface, with a dark and light theme.
  • For the teacher

  • Three ways to load material — upload Markdown or text-layer PDF from the teacher panel, drop files into a watched folder on the server, or point the system at git repositories and let it sync. Ingest is content-hashed, so re-running only reprocesses what changed.
  • Knowledge-component review — the extractor proposes teachable units and prerequisite edges across the subject's documents; you approve, edit or reject them, and mark where the material begins.
  • Courses and rosters — create a course, manage its members, and grant or revoke access to subjects in bulk. Binding a subject to a course deliberately does not by itself grant access — enrolment and entitlement are separate decisions.
  • Progress reports — per student and per course: mastery ratio, activity against the course median, and the recent path through the knowledge map.
  • Material requests — when the tutor cannot answer from what exists, the learner can flag it; requests are checked against existing coverage and queued for you to fill.
  • Subject catalog — publish a subject so learners can find it and request access, with their current access state shown.
  • Access & isolation

    Every subject has an owner, and access is a first-class entitlement with a source, an expiry and a revocation history — not a boolean flag someone can flip and forget.

  • Enforcement lives in PostgreSQL row-level security, so isolation holds at the database, not merely in the interface.
  • The application connects under a policy-bound database role; background jobs use a separate role, and the deep health check verifies both roles are behaving as intended.
  • Retrieval is scoped to what the asking user is entitled to, so the tutor cannot answer from material that is not theirs.
  • Registration is invite-gated, with Argon2 password hashing and session cookies.
  • Technology

    Backend

    Python, FastAPI, Uvicorn, RQ worker queue

    Data

    PostgreSQL 16 + pgvector with row-level security, Redis

    Retrieval

    Hybrid dense + full-text search, BGE-m3 embeddings computed locally

    Models

    Task-routed LLMs with a fallback chain, plus bring-your-own-key providers

    Scheduling

    FSRS spaced repetition

    Frontend

    Vanilla HTML/CSS/JS — Cytoscape.js graph, KaTeX math, sanitised Markdown

    Ingest

    PyMuPDF for text-layer PDF, Markdown, git-repo sync

    Operations

    Docker Compose, nginx + Let's Encrypt, git-pull deploys with a hash-locked artifact gate

    Embeddings run locally on CPU rather than through a paid API, and language models are routed per task — the tutor conversation, extraction, grading and evidence analysis do not all need the same model, and they do not all cost the same.

    What is not built yet

    A short, deliberately unflattering list — because knowing where a product ends is more useful than a feature grid that pretends it does not.

  • No OCR — scanned PDFs without a text layer cannot be ingested. Video, audio and web-page ingest are not built either.
  • No checkout. Subjects can carry a price in the catalog, but there is no payment flow behind it.
  • Setting up a new institution is still an operator task run by hand, not something an administrator can do unaided.
  • No single sign-on, no LMS integration, no mobile app, no exam-invigilation mode.
  • Parts of the teacher and admin panels are still Hungarian-only, even with the interface set to English.