--- title: ML Systems Interview Coach emoji: 🧭 colorFrom: indigo colorTo: blue sdk: static app_file: index.html pinned: false license: apache-2.0 datasets: - Max00035/ml-systems-interview-bench tags: - machine-learning - mlops - system-design - interview --- # ML Systems Interview Coach A lightweight, $0-hosted Static Hugging Face Space for practicing ML systems interview questions. It filters a public question bank, evaluates literal concept coverage and answer structure with transparent heuristics, and reveals the dataset's reference material after evaluation. The deployed app is plain HTML, CSS, and vanilla JavaScript. It has no backend, inference server, API keys, database, analytics, telemetry, framework, package install, or build step. Dataset loading and evaluation run locally in the user's browser. ## Architecture ```mermaid flowchart LR U[User] --> UI[Static Web UI] UI --> DS[(ML Systems Interview Bench)] UI --> EV[Client-side Deterministic Evaluator] DS --> EV EV --> OUT[Score / Feedback / Rubric / Follow-ups] ``` On startup, the browser fetches the public JSONL from [Max00035/ml-systems-interview-bench](https://huggingface.co/datasets/Max00035/ml-systems-interview-bench). JavaScript validates its basic shape, creates dependent filter options, selects matching questions, and evaluates answers entirely client-side. Reference answers, rubric anchors, and follow-up questions stay hidden until a successful evaluation. ## Deterministic evaluator The evaluator uses each record's `expected_concepts`, `evaluation_rubric`, `answer_dimensions`, and `max_score`. The four dimensions total 10 points: - **Concept coverage (4):** `4 × detected expected-concept ratio`. This is a heuristic proxy for the dataset's internal `correctness` dimension, not semantic correctness. - **Completeness (2.5):** `2.5 × ((0.8 × coverage) + (0.2 × min(1, words / 90)))`. - **Trade-offs (2):** zero unless an explicit comparison marker is present; a marker earns 1 point and each of up to two supporting domain signals adds 0.5. - **Communication (1.5):** sentence count, simple signposting, and a broad 35–300-word guardrail. Text is lowercased, hyphens and slashes become spaces, and other punctuation is removed. A concept is detected only when its normalized phrase appears or all its meaningful tokens appear. Answers need at least 12 normalized words. The sum is scaled to the record's `max_score` and capped at that value. **This is a heuristic baseline, not an AI judge.** It does not understand meaning, establish technical correctness, or scientifically measure interview ability. ## Limitations - Valid synonyms and paraphrases can be missed, producing false negatives. - Keyword stuffing, negation, or technically wrong statements containing expected terms can produce false positives. - Comparison and structural markers do not guarantee sound reasoning or clear communication. - Scores are not human-calibrated and must not be treated as hiring signals. - Initial use requires browser access to the public Hugging Face dataset URL. ## Run locally Because browsers commonly restrict `fetch` from pages opened with `file://`, serve the directory with any local static file server. For example, if Python is already available: ```bash python -m http.server 8000 ``` Then open `http://localhost:8000`. The deployed Static Space itself does not require Python. ## Dataset relationship The app is an interface and transparent baseline evaluator for [Max00035/ml-systems-interview-bench](https://huggingface.co/datasets/Max00035/ml-systems-interview-bench). It does not hardcode or modify the 30 source records. The Apache-2.0 dataset supplies questions, concepts, reference answers, qualitative rubric anchors, dimensions, maximum scores, and follow-ups. Its v0.1 numeric labels are not human-calibrated. ## Preserved Python reference `app.py` is the original local Gradio reference implementation and is not used by the deployed Static Space. `requirements.txt` remains only for that reference implementation while the static version is verified. ## Future phase: optional BYOK evaluation A future version may offer an opt-in bring-your-own-key semantic evaluator. It is intentionally not implemented in this release; the dependency-free deterministic path remains the default.