Spaced Repetition

Graspful uses the FIRe (Fractional Implicit Repetition) algorithm to schedule reviews. FIRe is built for knowledge graphs — it gives credit for implicit practice through encompassing edges, so students spend less time drilling basics they already exercise through advanced work.

The spacing effect

The spacing effect is one of the most robust findings in cognitive science: distributing practice over time produces stronger, longer-lasting memory than massing practice into one session. Reviewing something once a day for five days beats reviewing it five times in one day.

The optimal spacing increases as memory strengthens. First review after 1 day. Then 3 days. Then 7, 14, 30. Each successful review extends the interval. This is the core principle behind systems like Anki, SuperMemo, and Graspful's review scheduling.

Exponential forgetting

Graspful models memory as an exponential decay function. After mastering a concept, the estimated retention drops over time:

retention = 0.5 ^ (days_since_review / interval)

When days_since_review equals the interval, retention is exactly 0.5 — a coin flip. When days is zero (just reviewed), retention is 1.0. When days exceeds the interval, retention drops below 0.5 and continues toward zero.

The memory decay service runs this calculation before every task selection session. Any concept whose retention drops below 0.6 transitions from mastered to needs_review and re-enters the frontier.

The FIRe algorithm

FIRe — Fractional Implicit Repetition — is Graspful's spaced repetition algorithm. It extends standard spaced repetition with two key innovations: early-repetition discounting and implicit repetition through the knowledge graph.

Interval schedule

FIRe uses a fixed interval ladder. Each successful review advances the concept to the next rung. Each failure drops it back one rung (minimum rung 0).

interval-schedule.yaml
# FIRe interval ladder (in days)
interval_schedule:
  - 1      # rung 0: review tomorrow
  - 3      # rung 1: review in 3 days
  - 7      # rung 2: review in 1 week
  - 14     # rung 3: review in 2 weeks
  - 30     # rung 4: review in 1 month
  - 60     # rung 5: review in 2 months
  - 120    # rung 6: review in 4 months
  - 240    # rung 7: review in 8 months (max)

# Example concept review state:
concept_review:
  concept_id: ohms-law
  current_rung: 3           # interval = 14 days
  last_reviewed: "2026-03-10"
  next_review: "2026-03-24"  # 14 days later
  retention: 0.52            # getting close to threshold

Early-repetition discounting

Not all reviews are equally valuable. Reviewing a concept when retention is still high (say, 0.95) provides less memory benefit than reviewing when retention has dropped to 0.6. FIRe accounts for this.

When a concept is reviewed before its scheduled date, FIRe applies a discount based on current retention. The higher the retention at review time, the less credit the review gets toward advancing the interval rung.

  • - Retention > 0.9: Review earns 0.25x credit — the student remembers fine, this review barely helped
  • - Retention 0.7 - 0.9: Review earns 0.5x credit — some benefit, but the timing wasn't ideal
  • - Retention 0.5 - 0.7: Review earns 1.0x credit — optimal spacing, full benefit
  • - Retention < 0.5: Review still earns 1.0x credit, but the interval rung may drop because the student waited too long

Decay penalty on failure

When a student fails a review (answers incorrectly), FIRe applies a decay penalty proportional to how much they've forgotten. The lower the retention at failure time, the bigger the penalty.

Failing at retention 0.3 (waited way too long) drops the interval rung by 2. Failing at retention 0.6 (close to schedule) drops it by 1. This prevents a single bad day from destroying months of progress while still penalizing genuine forgetting.

Implicit repetition via encompassing edges

This is FIRe's key innovation. In a traditional spaced repetition system, every concept must be reviewed independently. In Graspful, practicing an advanced concept automatically counts as partial review of its foundations — through encompassing edges.

When a student correctly answers a Circuit Analysis problem, FIRe traces the encompassing edges and credits each ancestor concept proportionally. This means foundational concepts get reviewed implicitly as the student practices advanced material — no separate flashcard drill required.

Weight product calculation

Implicit repetition credit is the product of encompassing weights along the path. Multi-hop credit diminishes multiplicatively:

implicit-repetition-example.yaml
# Knowledge graph edges:
#
#   Circuit Analysis
#     ├── encompassing: Ohm's Law (weight: 0.8)
#     └── encompassing: Voltage   (weight: 0.6)
#
#   Ohm's Law
#     └── encompassing: Voltage   (weight: 0.6)

# When the student practices Circuit Analysis:

implicit_credit:
  # Direct encompassing edges:
  - target: ohms-law
    weight: 0.8              # direct edge from circuit-analysis
    credit: "0.8× review"

  - target: voltage
    weight: 0.6              # direct edge from circuit-analysis
    credit: "0.6× review"

  # Multi-hop credit (circuit-analysis → ohms-law → voltage):
  # The direct path (0.6) already exceeds the multi-hop path (0.8 × 0.6 = 0.48)
  # FIRe uses the MAXIMUM credit across all paths, so voltage gets 0.6×

  # Final credit applied:
  final:
    - concept: ohms-law
      credit: 0.8            # 80% of a full review
    - concept: voltage
      credit: 0.6            # 60% of a full review (max of direct 0.6 vs hop 0.48)

Implicit credit is combined with early-repetition discounting. If Ohm's Law has retention 0.95, the 0.8x implicit credit is further discounted to 0.8 x 0.25 = 0.2x — the student barely benefits because they already remember it well.

Memory decay service

The memory decay service runs before every task selection call. It recalculates retention for all mastered concepts and transitions any that fall below the threshold to needs_review.

The service checks three things:

  • - Retention calculation: For each mastered concept, compute 0.5 ^ (days / interval) using the current interval rung
  • - Implicit credit offset: If the concept received implicit repetition credit from recent advanced practice, that credit is subtracted from the elapsed days before computing decay
  • - Threshold check: If retention < 0.6, the concept moves to needs_review and enters the frontier with high priority

Review tasks are prioritized over new learning in the task selection queue. A student won't advance to new material if there are overdue reviews on prerequisite concepts.

Practical impact

The combination of implicit repetition and the interval ladder means students spend significantly less time on explicit review than in traditional spaced repetition systems.

  • - Foundational concepts rarely need explicit review — they get constantly exercised through advanced practice via encompassing edges
  • - Leaf concepts (no dependents) need the most review — nothing exercises them implicitly, so they follow the standard interval schedule
  • - Mid-graph concepts get partial credit — some implicit review from above, but may still need occasional explicit review depending on edge weights

For course authors, this means encompassing edges directly affect the student experience. Well-connected graphs with accurate weights produce less review burden. Disconnected graphs with no encompassing edges behave like traditional flashcard systems — every concept needs independent review.

Configuration

FIRe parameters are tuned at the platform level and generally don't need per-course adjustment. The main lever for course authors is the quality of encompassing edges — accurate weights produce better implicit repetition.

encompassing-weights-guide.yaml
# Encompassing weight guide for course authors:
#
# Ask: "When a student solves a problem for concept B,
#        how much does that exercise concept A?"
#
# Examples:
concepts:
  - id: multi-step-equations
    name: Multi-step Equations
    difficulty: 5
    estimatedMinutes: 25
    prerequisites: [linear-equations, distributive-property]
    encompassing:
      # Solving multi-step equations heavily exercises
      # basic linear equation skills
      - concept: linear-equations
        weight: 0.8

      # It also exercises the distributive property,
      # but only when the problem includes parentheses
      - concept: distributive-property
        weight: 0.5

      # It exercises basic arithmetic, but only slightly —
      # the cognitive load is on the algebraic structure
      - concept: arithmetic-operations
        weight: 0.3

Next steps