Skip to main content

Learning Loop Metrics

VibeLearn’s learning loop has three measurable outputs: concept coverage (what was extracted from sessions), quiz accuracy (how you perform on questions), and mastery progression (how scores change over time). This page explains what each metric means and how to interpret it.

Concept Coverage

After each session, VibeLearn extracts concepts via ConceptExtractor. Coverage depends on:
  • Files edited: More Write/Edit observations → more material for concept extraction
  • Stack context: StackDetector provides framework/ORM context that improves concept naming
  • Session length: Longer sessions with more tool calls produce more concepts
Check what was extracted:
sqlite3 ~/.vibelearn/vibelearn.db \
  "SELECT name, category, difficulty FROM vl_concepts ORDER BY id DESC LIMIT 20;"

Quiz Accuracy

vl quiz tracks every answer in vl_quiz_attempts. Each attempt records:
FieldDescription
is_correct0 or 1
response_time_msTime to answer
hmac_signatureSigned with your API key (anti-tamper)
Your accuracy per concept is visible in:
vl status
# Example output:
# Sessions analyzed: 12
# Total concepts: 87
# Mastered: 34 | In progress: 41 | Not started: 12

Mastery Score

Each concept has a mastery_score (0.0–1.0) stored in vl_developer_profile. The score is computed server-side from your quiz attempts using a simplified SM-2 algorithm. Local value is a cache — the server overwrites it on each sync.
ScoreMeaning
0.0Never answered or all wrong
< 0.5In progress — appears in vl gaps
> 0.85Mastered — QuizGenerator skips this concept
1.0Fully mastered
Check your weakest concepts:
vl gaps
# SQLite WAL Mode            ████░░░░░░  38%  (seen 3x)
# HMAC Token Signing         ███░░░░░░░  28%  (seen 2x)
# React Suspense Boundaries  ██░░░░░░░░  22%  (seen 1x)

Spaced Repetition

VibeLearn uses a simplified SM-2 algorithm. Questions resurface at increasing intervals after correct answers. The interval doubles after each correct answer and resets after an incorrect one. This means:
  • Answering a question correctly 3× in a row → it won’t appear again for a long time
  • Getting a question wrong resets its interval — it resurfaces in the next quiz session

Question Types and Accuracy

VibeLearn generates three question types:
TypeFormatWhen used
multiple_choice4 options (A–D)Most concepts
fill_in_blankComplete the code or sentenceCode patterns, syntax
explain_codeOpen-ended explanationComplex patterns
fill_in_blank and explain_code questions are graded by the LLM in the next analysis pass.

Checking Raw Data

# Questions per concept category
sqlite3 ~/.vibelearn/vibelearn.db \
  "SELECT c.category, COUNT(q.id) as questions
   FROM vl_concepts c
   JOIN vl_questions q ON q.concept_id = c.id
   GROUP BY c.category
   ORDER BY questions DESC;"

# Mastery scores by concept
sqlite3 ~/.vibelearn/vibelearn.db \
  "SELECT concept_name, mastery_score, encounter_count
   FROM vl_developer_profile
   ORDER BY mastery_score ASC
   LIMIT 10;"