# Phase 2: Diagnostic Interview Loop - Context **Gathered:** 2026-04-26 **Status:** Ready for planning **Source:** GSD continuation after Phase 1 completion ## Phase Boundary Phase 2 proves the first job-seeker loop from target role/stack selection through a graded diagnostic answer. It should create a thin backend product surface for diagnostic sessions while avoiding persistent storage and real LLM calls until later phases require them. ## Implementation Decisions ### Persistence - Use an in-memory session store in Phase 2. - Do not add a database or migrations yet. - Persisting original answers and grading evidence means preserving them inside the in-memory diagnostic session record for this phase. ### Interview Track - Use the Backend Developer Interview track from `docs/planning/INTERVIEW_TRACKS.md`. - Seed questions should cover the canonical concept clusters, starting with a small representative set. ### Workflow Boundary - Grading must go through the typed `workflows.Runner` interface. - The default implementation can remain deterministic/stubbed, but it must return typed `GradedAnswer` data rather than freeform prose. - HTTP handlers must not shell out or parse arbitrary assistant text. ## Canonical References Downstream agents MUST read these before planning or implementing. ### Product and Track - `docs/planning/PRD.md` - diagnostic interview product flow. - `docs/planning/INTERVIEW_TRACKS.md` - first track and concept seed list. - `docs/planning/WORKFLOW_CONTRACTS.md` - typed workflow result shape. ### Engineering and Requirements - `docs/planning/ENGINEERING.md` - 600-line, SOLID, KISS, YAGNI constraints. - `.planning/REQUIREMENTS.md` - INT-01 through INT-06 requirements. - `.planning/ROADMAP.md` - Phase 2 goal and success criteria. - `openspec/changes/bootstrap-job-tutor-platform/specs/job-seeker-tutor/spec.md` - diagnostic and first-track requirements. - `openspec/changes/bootstrap-job-tutor-platform/specs/tutor-workflows/spec.md` - typed workflow requirements. ## Specific Ideas - Add `internal/interview` for sessions, questions, answers, and in-memory store. - Add endpoints: - `POST /api/v1/diagnostic-sessions` - `GET /api/v1/diagnostic-sessions/{id}` - `POST /api/v1/diagnostic-sessions/{id}/answers` - Keep routing simple with standard library `http.ServeMux`. - Add deterministic grading in the workflow stub so tests can prove typed evidence is recorded. ## Deferred Ideas - Real `third-one` grading execution. - Database persistence. - Authentication and user identity provider integration. - Memory extraction and durable learner memory. - Frontend UI. --- *Phase: 002-diagnostic-interview-loop* *Context gathered: 2026-04-26*