Machine Learning Lab

Five tools for everyday problems, built from scratch and trained live in your browser.

  • 5models
  • 0ML libraries
  • 0pretrained weights
▸ 01 · Matrix factorization + group aggregation

Movie Night Arbiter

Add everyone on the couch, rate a few films each, and get one film the whole group can live with. A hand trained factor model fills in what each person would think of films they haven't rated, then a fairness rule you pick settles it.

held-out RMSE
0.753
bias-only baseline
0.970
fairness rules
3
SGDLatent factorsAverage without misery
▸ 02 · Q-learning vs value iteration

Final Cut

Repair or replace? Enter your car, phone, laptop or fridge and a Q-learner rehearses thousands of simulated years to write a keep or replace plan for every age and condition, then an exact solver checks it cell by cell against the 50% rule.

agreement with exact, car
96%
saved vs 50% rule, car
$1,130
states solved exactly
99
Machine replacementBellman updateValue iteration
▸ 03 · Autograd MLP + cross-validated screening

Dailies

Load your own symptom or mood log and see what tends to come before your bad days, with a plain verdict when there is no signal yet. Underneath, a scalar autograd engine trains an MLP across five folds and ranks factors by input gradients. Nothing leaves the tab.

planted causes ranked top
2 of 2
held-out log-loss gain
0.103
gain on shuffled labels
0.004
Input gradientsCross-validationPrivate by design
▸ 04 · k-means++ in CIELAB

Palette Grade

Drop up to eight images and get one palette with pixel shares, suggested roles, a WCAG contrast check for every pair and CSS or Tailwind exports. Underneath, k-means++ clusters about 20,000 CIELAB pixels in a Web Worker and silhouette picks how many colours. Your images never leave your browser.

to grade 20,000 pixels
under 1 s
best silhouette, Dark site sample
0.709
samples where the accent slot kept a colour
4 of 4
CIELABSilhouetteWCAG contrast
▸ 05 · Bayesian A/B testing + Thompson sampling

Box Office Verdict

Type in visitors and conversions for up to six versions and get a plain verdict: ship, keep running, or too close to matter. Underneath, 20,000 Beta posterior draws per version give the chance each is best, the expected loss, and tomorrow's traffic split.

12/200 vs 9/200, chance A is best
74.5%
exact, by numerical integration
74.4%
Thompson regret at 10k
48.7
Beta posteriorExpected lossThompson sampling

How they are built

  1. 01

    Pure TypeScript

    Every model is plain functions over arrays, with no React inside.

  2. 02

    Seeded randomness

    Each run can be replayed and every result reproduced.

  3. 03

    Never freezes

    Training runs in small slices per animation frame or in a Web Worker, so the page never freezes.

  4. 04

    Measured in Node

    Every number on the notes pages comes from running the same code.

Honest limits

  • Sample data, simulated viewers and Final Cut's breakdown odds are synthetic or approximated by hand. Your own logs, images and numbers are used as they are.
  • Everything you enter stays in your browser or in the page link. Nothing is uploaded.

The full write up

Why each model works, what it got wrong, and every measured result.

Read the case study