Interleave, by Hec Labs
Cross-Domain Practice Scheduler · AI & Learning Science

Overview & The Problem
Interleave is a cross-domain practice scheduler for people learning several unrelated skills at once — for example, music, a language, and programming. It answers a question no existing tool does: not when should I review this card, but which skill should I practice next, and for how long?
The positioning: the practice conductor for multi-skill learners. Anki and FSRS tell you when a card is due; Interleave decides which skill to practice next, and for how long. The self-regulated-learning research is blunt about why this matters — learners left to their own devices prefer blocked practice, trust fluency illusions, and mis-schedule the very skills that most need attention. The scheduling decision itself is the problem worth solving.
My Role & Contributions
As solo founder I own the design end to end. Specifically:
- Model design: the utility-maximization loop, the saturating desirable-difficulty urgency curve, the four-channel cognitive-fatigue model, and the hysteresis-based switching policy that makes session length emergent.
- Architecture & roadmap: a closed-form v1 with zero trained parameters, plus a data-gated path to a learned decay model (v2) and a cross-skill transfer GNN (v3).
- Research grounding: a structured reading of the memory, interleaving, self-regulated-learning, and knowledge-tracing literature, used to separate validated mechanisms from novel ones.
Technologies Used
- Language & runtime: TypeScript on Node.js
- Backend: Supabase (Postgres for the append-only logging spine, plus auth)
- Semantic graph: text-embedding models for skill-similarity edges; LLM-based extraction of the skill graph and prerequisite DAG
- Scheduling core: FSRS-style spaced-repetition stability updates; closed-form leaky-integrator fatigue model
- Planned ML (data-gated, Python): the learned models would live in a separate Python service — Half-Life Regression (v2) and an inductive two-relation R-GCN (v3) — while the TypeScript/Node.js scheduler and Supabase logging spine stay the core
Solution & Approach: The Utility Loop
Every tick, Interleave scores each skill with a single utility function combining four forces: urgency (is this skill in the effortful-but-recoverable "desirable difficulty" band?), fatigue (how loaded are the cognitive channels this skill draws on?), readiness (are its prerequisites mastered?), and interference (was something semantically adjacent just practiced?). A hard reachability mask excludes any skill with an unmet prerequisite.
Two design decisions are deliberate. Urgency saturates rather than following a symmetric bell curve: an overdue skill stays at maximum urgency instead of being deprioritized forever — avoiding a death spiral for exactly the skills that most need rescue. And switching uses hysteresis: Interleave only leaves the current skill when a rival's utility beats it by a margin, so the schedule doesn't thrash at every crossover and session length becomes emergent — controlled by one interpretable knob rather than a fixed timer.
v1 ships fully closed-form with zero trained parameters, so cold-start is perfect by construction. Its one real obligation is the logging spine: every interaction is recorded from day one in the exact schema future models will train on. The log is the asset — training data, product analytics, and research corpus are the same table.
Scientific Honesty (a brand pillar)
Interleave is careful about what it claims. The classic interleaving effect — the one that makes shuffled practice beat blocked practice — depends on similar, confusable categories and does not transfer to unrelated domains (Brunmair & Richter, 2019). So Interleave never claims that effect for cross-domain switching.
Instead, the cross-domain benefit is claimed via three distinct mechanisms: forced spacing, contextual-interference-style variability, and channel-level fatigue relief. Components with no direct empirical validation — the four-channel fatigue model, the extrapolation of item-level decay to whole skills, and the size of any cross-domain transfer effect — are explicitly flagged as novel and instrumented for testing, not presented as settled science. Cross-domain transfer coefficients initialize at zero and must be discovered from real learner data before any transfer is asserted.
Roadmap & Intended Impact
Interleave is in early development (v1), so the following are framed as intended outcomes rather than achieved results:
Multi-skill learners:
- A single answer to "what should I practice next?" across unrelated domains, replacing ad-hoc self-scheduling that the research shows is systematically biased.
- Emergent session structure tuned by one interpretable parameter (the hysteresis margin), rather than rigid fixed-length study blocks.
Learning-science practice:
- An honest cross-domain design: the benefit is claimed via forced spacing, contextual-interference-style variability, and channel-level fatigue relief — not the classic discrimination-based interleaving effect, which requires confusable categories that unrelated domains lack (Brunmair & Richter, 2019).
- A logging spine built from day one so that novel components (the fatigue model, cross-domain transfer coefficients) can be empirically tested rather than assumed.
The platform & roadmap:
- A version sequence gated by data, not preference: closed-form v1, linear Half-Life Regression at ~5-10k logged reviews, and a two-relation inductive GNN only once it beats calibrated HLR on a time-split evaluation.
- Open-core intent: the algorithms and research are meant to be open, with a hosted service funding the infrastructure.
A closing note on scientific honesty, a brand pillar: components with no direct empirical validation (the four-channel fatigue model, skill-level decay extrapolation, cross-domain transfer) are explicitly flagged as novel and instrumented for testing, not presented as established results.
Visuals & Demos
Source for the closed-form v1 scheduler

Model architecture roadmap: closed-form v1 → learned decay v2 → transfer GNN v3.