Skip to content

Replace placement questionnaires with a compact interviewer conversation #69

Description

@rosshd

Parent: #58
Depends on: #68.
Related: #59, #65.

Problem

The current placement opens with setup and calibration, then requires separate clarification and plan fields before the learner reaches the editor.
This feels like a questionnaire rather than an interview, while the required prose is classified with brittle keyword, punctuation, and length heuristics.

Removing communication entirely would also be wrong.
Clarifying ambiguity, stating an approach, and responding to an interviewer are explicit interview skills in the canonical skill graph.

Goal

Implement a compact 10-12 minute conversational placement sample that preserves authentic clarification and route explanation without reproducing the fixed seven-stage wizard.

Learner journey

  1. Show one concise introduction with expected duration, the sequence talk briefly -> code -> debrief if needed, and the stop command.
  2. Present the original or licensed problem in an interviewer-style exchange.
  3. Let the learner ask bounded clarification questions and receive contract-consistent answers.
  4. Ask for one concise approach summary before coding.
  5. Transition directly to the configured interview editor.
  6. Record communication evidence separately from correctness evidence.

Technical scope

  • Add the v2 conversation state and CLI routing over Introduce a versioned compact-placement lifecycle with v1 resume compatibility #68.
  • Remove mandatory self-report calibration from the critical path.
  • Support multiple clarification turns without creating graded-answer state.
  • Preserve a deterministic offline interviewer for problem-contract answers.
  • A configured model may improve conversational phrasing, but cannot change the authoritative problem contract, lifecycle state, or scoring outcome.
  • Use explicit commands such as /code, /stop, and /discard without front-loading every recovery command in the opening banner.
  • Record the learner's final approach summary as bounded attempt evidence.
  • Keep communication evidence independent from implementation and mastery evidence.
  • Save every learner turn before provider calls or editor launch.

Likely surfaces:

  • src/openlearn/cli.py
  • src/openlearn/interview_prep.py
  • src/openlearn/interview_attempts.py
  • tests/test_cli.py
  • tests/test_interview_prep.py
  • tests/workflows/test_interview_journey.py
  • manual-tests/interview-placement.md

Acceptance criteria

  • A new placement states the expected 10-12 minute shape before it starts.
  • The learner reaches the problem conversation without a mandatory self-report calibration answer.
  • Clarification supports more than one bounded turn and never contaminates pending tutor-answer state.
  • Contract answers remain correct offline and cannot be altered by model prose.
  • The learner provides one concise route or plan summary, then enters the editor without another questionnaire stage.
  • Blank input, /code, /stop, /discard, EOF, and interruption have clear durable behavior.
  • Communication evidence is recorded separately and does not grant mastery.
  • Provider failure preserves the learner turn and falls back to deterministic interviewer behavior.
  • Existing non-interview courses and normal tutor turns receive no placement prompts.
  • PTTY tests cover happy path, multiple clarification turns, offline fallback, stop/resume, provider failure, and cancellation.
  • make check passes.

Out of scope

  • Audio capture or speech scoring.
  • Autocomplete enforcement inside the editor.
  • Full timed mock interview behavior.
  • Adaptive debrief selection and result-card presentation.
  • Company-specific interviewer simulation.

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