- Area: Industry Solutions (products/vertical)
- Path:
products/vertical/kora
- Kind: AI study companion — Go backend + Flutter app (mobile → desktop → web)
- Version: 0.1.0
- Status: LIVE in PROD 2026-06-06 —
https://kora.koder.dev public (no auth-gate, indexed), serving the Flutter web app; backend LXC 10.0.1.219:7850 with AI gateway (dedicated kgw_kora_ key, model anthropic/claude-opus-4-6 → 4-8 pending aigateway#060) + kdb-next durable storage. OAuth client kora in prod Koder ID.
Role in the stack
Kora is Koder's AI study companion for college-entrance exams (starting with Brazil's ENEM). It is not a video catalog — it tells a student exactly what to study next: an adaptive plan that re-sequences from real performance, a 24/7 AI tutor (text + photo), realistic mock exams scored on the TRI / 0–1000 SISU scale (item response theory, not a raw percentage), and essay grading across the five official ENEM competencies. The home screen, "Today with Kora", answers "what do I do right now?" with 3–5 prioritized blocks.
Components
| Sub-path |
Kind |
Description |
backend/ |
Go service |
chi router; tenant-isolated store; plantutormocks-TRIessaystoday |
app/ |
Flutter |
"Today with Kora" home + Koder ID auth gate (tutormockessay screens = backlog #019) |
landing/ |
Landing page |
product marketing site |
Backend internals
| Package |
Responsibility |
model |
domain types; every entity carries koder_user_id |
store |
Store interface + tenant-isolating in-memory impl (T1–T9); kdb adapter = #017 |
identity |
Koder ID JWKS (RS256) validation → sub = koderuserid |
tri |
3PL IRT: EAP θ estimation + SE, ENEM 0–1000 scaling, Fisher information |
itembank |
topic catalog + calibrated item bank (ENEM corpus at $KORA_ENEM_DIR or embedded seed) |
plan |
adaptive plan engine: weakest-and-overdue → plan sequence → spaced practice; EWMA mastery + spaced repetition |
mocks |
adaptive mock assembly (max info @ θ) + TRI scoring; feeds plan |
essays |
5-competency ENEM grading via AI; ladder-clamped, recomputed totals |
tutor |
per-tenant conversational + multimodal tutor with plan context |
today |
greeting + countdown + progress ring + top blocks aggregation |
fsrs |
FSRS-5 spaced-repetition scheduler (stability/difficulty, power forgetting curve) |
placement |
onboarding diagnostic → per-topic mastery seeds (#009) |
flashcards |
AI-generated cards from weak spots/missed items, FSRS-scheduled (#011) |
engagement |
daily streak + weekly study-time goal (#014) |
courses |
SISU cutoff dataset + "courses you can reach" ranking (#015) |
themes |
essay theme bank + AI repertoire suggestions (#016) |
ai |
AI gateway client (OpenAI-compatible, flagship model) |
httpapi |
chi router + handlers (tenant id from token, cross-tenant → 404) |
Spaced repetition uses FSRS (the modern Anki scheduler) across both topic review (plan) and flashcards (#010). Practice mode (#012) is a topic-scoped mini-mock; #013 explains missed items via the tutor. The mock exam delivers answer-key-stripped items (GET /mocks/{id}/items) so correctness is only ever checked server-side.
Primary couplings
| Module |
Relationship |
services/foundation/id |
Auth — Koder ID OAuth; client kora; JWKS token validation |
| `services/ai |