# HANDOFF — Sales Trainer > Another AI should be able to resume without chat history. ## Branch / repo - Repo: `~/Gitea/Sales Trainer/` (local git initialized; **no remote yet**). - Branch: `main` (default). ## What this is Corporate multi-user sales-training simulator. Vue SPA + Flask API + filesystem JSON storage. Admins build persona groups from a product (form + upload); trainees chat one-shot against generated customer personas to practice closing; judge-LLM scores + coaches. ## Current state — COMPLETE (M0–M7), prototype verified with mock LLM All backend + frontend built. All 4 backend test suites pass. Frontend builds. Live HTTP smoke test passes (SPA served, login, group create, register->404). ## Verified commands ```bash # Backend tests (mock LLM, no key needed) cd backend uv run python scripts/test_m0.py # auth/roles/no-self-reg uv run python scripts/test_m1.py # group create + role visibility uv run python scripts/test_routes.py # 21 routes registered uv run python scripts/test_e2e.py # full flow (analyze->personas->chat->debrief->one-shot->board->analytics) # Run backend cd backend && uv run python run.py # Flask :5001 (serves built frontend from frontend/dist) # Frontend dev cd frontend && npm install && npm run dev # Vite :3000 proxying /api -> :5001 # Frontend build cd frontend && npm run build # outputs frontend/dist ``` ## Default account - super_admin: `admin` / `1234` (bootstrap). First login FORCES setting email + changing the password (must_setup flow) before use. ## Key gotchas 1. **Do NOT invoke `.venv/bin/python