Max00035's picture
Add Space documentation
264d3a7 verified
|
Raw
History Blame Contribute Delete
4.36 kB
metadata
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

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. 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:

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. 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.