Learning project: a LangGraph interview coach and study buddy with measured RAG, long-term memory and evaluation at every level
This project is managed with uv on Python 3.13.
git clone https://github.com/lbildzinkas/interview-coach.git
cd interview-coach
uv syncuv sync creates a local .venv (git-ignored) and installs the project plus the
dev tools — ruff, pyright
and pytest — using the committed uv.lock so everyone
gets the same versions.
coach ask sends one question through a one-node
LangGraph graph that calls
GLM-5.3 on the GLM Coding Plan's OpenAI-compatible endpoint and prints the
answer. Configuration lives in environment variables, loaded from a
git-ignored .env file (copy .env.example to .env and
fill it in; a real environment variable wins over the file):
INTERVIEW_COACH_API_KEY— required, your GLM Coding Plan keyINTERVIEW_COACH_BASE_URL— optional, defaults to the coding endpoint onopen.bigmodel.cnINTERVIEW_COACH_MODEL— optional, defaults toglm-5.3
uv run coach ask "What is consistent hashing?"Without a key, the command prints a readable error instead of a stack trace.
coach qasper stats downloads the dev split of
QASPER (questions about NLP
papers, CC BY 4.0) into the git-ignored data/qasper/ folder, maps each
answer's evidence to paragraph ids and prints how many questions fall in each
category. No model is called and no API key is needed.
uv run coach qasper statsOne command runs every check that CI also runs — lint and formatting (ruff), type checks (pyright) and tests (pytest):
./scripts/check.sh.github/workflows/ci.yml runs the same command on
every pull request and on pushes to master
(GitHub Actions docs).
Three folders hold data that never leaves your machine; their contents are git-ignored from the start:
data/personal/— personal data (your notes, transcripts, answers)data/study-material/— downloaded study material (guides and pages to review, Anki decks)data/qasper/— the downloaded QASPER dataset cache
coach setup downloads the study material named in sources.yaml
into the git-ignored data/study-material/ folder, each file pinned to a commit.
It is safe to run twice: sources already downloaded are skipped. Credits are in
THIRD_PARTY_NOTICES.md.
uv run coach setupMIT — see LICENSE.