Skip to content

Epic: general tutor capabilities with interview preparation as the first domain #56

Description

@rosshd

Goal

Keep openLearn a general local-first tutor for arbitrary hobbies and subjects while making technical interview preparation the first deeply supported hands-on domain.

Interview preparation must extend the existing learner-state and tutor-policy loop rather than fork the product into a LeetCode-specific application.

The capability boundaries should remain usable for future domains such as instrument practice, where evidence may come from timed repetition, audio, sheet music, a metronome, or tutorial resources, and hardware electronics, where lessons may use diagrams, measurements, simulators, and staged build checks.

Product decisions

  • The general tutor core continues to own learner state, answer judging, move selection, mastery, misconceptions, SRS, review, and learner preferences.
  • A domain capability defines its skill graph, practice activities, evidence contract, resource provenance, tool adapters, and domain-specific mastery rules.
  • Interview preparation is the first implementation and the current product priority.
  • Domain tools remain narrow and semantic.
  • The model does not receive arbitrary shell, filesystem, browser, or application-control access.
  • Activities that launch another application or execute learner code require explicit consent and visible recovery behavior.
  • Passing tests, finishing an activity, or using a tool does not independently prove mastery.
  • Build only the shared seams interview preparation needs.
  • Do not create a speculative universal plugin framework before another domain validates the abstractions.
  • Preserve the Markdown plus JSON topic format, local-first ownership, config precedence, and append-only learning evidence.

Existing related work

Required delivery areas

  • A domain-neutral practice activity and evidence contract.
  • Interview-prep profile and authentic coding placement.
  • An interview skill and pattern graph with explicit mastery evidence.
  • A licensed, source-aware problem catalog.
  • Durable problem attempts and resumable workspaces.
  • Adaptive problem selection and study planning.
  • Authoritative solution evaluation beyond sample-test output.
  • Bounded, resource-limited code execution.
  • Timed mock interviews and structured postmortems.
  • Interview-specific behavior and outcome evaluation.
  • Optional multi-language workspaces after the Python path is strong.

Success bar

A learner can establish an interview goal, receive an evidence-based study plan, solve appropriately selected problems in a safe local workspace, receive contingent feedback without answer leakage, revisit related problems after spacing, and see readiness grounded in unaided transfer rather than completion counts.

The same general tutor remains able to teach non-programming topics without receiving interview-specific prompts, state, commands, or UI.

Out of scope

  • Scraping or redistributing protected LeetCode content through undocumented endpoints.
  • A generic third-party plugin marketplace.
  • Building instrument-practice or electronics capabilities in this epic.
  • System design, behavioral interviews, and every role-specific SWE interview domain in the first delivery slice.
  • Hosted multi-user infrastructure.

Verification

  • Each child issue has focused deterministic tests and keeps make check green.
  • Prompt and learning-policy changes include behavior fixtures or dogfood evidence.
  • Provider-backed evaluation remains opt-in and uses a judge model distinct from the tutor model.
  • Representative non-interview courses prove that interview state and tool instructions do not leak into the general tutor.
  • The completed interview-prep loop is dogfooded end to end with durable local evidence.

Delivery slices

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions