Inside the network MTNN LIVE • WASM 2MB

12,392 seasons 120 feats × 17 families cat([x·m,m]) 17× 160→32 ×2 =544 +12 → 556→128→48 L2 ~224K params • 2.26MB heads 8/5/14/18

Pick any player-season and peer inside the MTNN — a glass box, not a black box. Seventeen stat families each run through their own residual tower, fuse into a 48-number fingerprint, then decode into archetype, position, skill grades, and next-year forecasts. Click a node, output row, or tower to probe: lock the line-of-sight trace, see family share across every head, and read signed feature pushes. Truthful flow W1380 H880 — every box measured, 1:1 input→tower, no hand-waving.

Manim • Cam's Lab • light paper + ink + Okabe — distinct from 3b1b • ADA AAA

How MTNN actually works — 4 videos, Cam's Lab authentic style

Cam's Lab • 395KB total • <1MB • 18px • AAA 7:1 • no overlap
MTNNFlow — Cam's Lab glass box
Light paper #FFFEF7 + blueprint dots, 2px ink borders + 3px hard shadow, Okabe triple-encoded (color+shape+text). 17 families 120 feats cat([x·m,m]) → 17× 160→32 LN GELU res×2 544+12 556→128→48 L2 cosine → heads 8/5/14/18. No glow, no overlap, 18px labels. W1380 truthful • 14.4s • 153KB
ChimeraEquation — Cam's Lab donor fuse
Paper cards: Donor A + Donor B → fuse 48-d → nearest real L2. Code box argmin ||f(A)⊕f(B)-f(real)||₂ high-contrast #111 on #FFFEF7 18.6:1 AAA. Okabe accents with ink outline. 10.7s • 99KB
InputFamilies — 120 feats → 17 families → cat([x·m,m]) • Cam's Lab
3-col grid of white ink cards with Okabe dots: volume 5 · play 12 · reb 5 · def 3 · eff 10 · shotmix 13 · bio 4 · tracking*13 · form*6 · market 4 · roster 5 · career 5 · comp 4 · team 5 · pedig 7 · playoffs 14 · honors 5 =120. Mask m∈{0,1} ∅=pre-2013 tracking, pre-2015 form → 0 grad never imputed. No overlapping, 18px AAA. 7.4s • 102KB
Cam's Lab fallback: light paper #FFFEF7 ink #111, 18px AAA, Okabe dots + text + shape triple-encoded. Click to toggle ∅ masked.
EmbeddingL2 — 48-d → L2 → unit sphere • cosine=similarity • Cam's Lab
v̂ = v/||v||₂, ||v̂||₂=1cos = v̂·ŵ = cosθ • ink circle on paper, Okabe arrows with ink border, yellow arc #F0E442 with #111 text 14.3:1 AAA. 12,392 pts on sphere powers Chimera & Era Twin. 6.8s • 41KB
Cam's Lab fallback: light paper, ink circle, drag to rotate v̂, shows ||v̂||=1 & cos angle, AAA 18.6:1.
Cam's Lab authentic style — distinct from 3Blue1Brown: light warm paper #FFFEF7 + faint blueprint dots #E8E0C8, white cards #FFFFFF 2px ink #111 border + 3px hard shadow #111, Okabe-Ito flat fills no glow, hard edges, typewriter mono 18px/1.65, triple-encoded shape+color+text+pattern, ADA AAA contrast 18.6:1 Text #111 on #FFFEF7, 7.0:1 blue #0072B2 on white min, no overlapping bounds checked via grid, reduced-motion safe no flash >3Hz. Source: cam_style.py + mtnn_flow.py + chimera_procrustes.py + input_families.py + embedding_l2.py. Repro: manim -ql src/*.py + ffmpeg -crf 28 -r 15 -scale 640/854 → 153KB+99KB+102KB+41KB=395KB <1MB. Solo personal project, no connection to employer, built with public/free-tier only. • hoops.dumbmodel.com
Loading player index…
No compare player

Loading architecture… MTNN v4 baseline: 17×160→32 LN GELU ×2, 12-d season emb, 544+12=556→128→48 L2 ~224K. Era-honest σ per-season, Procrustes-aligned, RealMLP robust.

Loading story — who this player is across 30 seasons…

Compare mode off — toggle to diff two seasons signed Δ.

Data flow — truthful W1380 H880 • v4 baseline

Input mask m∈{0,1}cat([x·m,m]) • 2 residual blocks per tower 160→32 LN GELU + skip • season 12-d concat • L2 embed 48-d • MLP heads 8/5/14/18. Hover any node for LN/GELU/skip math. Click to lock trace.

Click a node to see what fed it and what it drove — glass box line-of-sight.

Loading signal summary — tower activations, family share per head, fusion weights…

Click an input, tower, or output to see exact numbers — this player-season's activations + grads.

Guess & grade — heads decode 48-d → game

Same MLP heads as rightmost column in flow. Click a row to lock trace back through network — see which family drove it.

● Archetype guess — 8 — shape+color+pattern encoded

■ Position guess — 5 — Okabe-Ito AAA

▲ Skill grades out of 100 — 18×(48→16→1)

◆ Next-season forecast — per 100 possessions

Layer budget: 17×2 blocks 544+12=556→128→48 L2 ~224K params — 57% in fusion hidden layer. Era-honest σ means 1996 and 2026 both 0=average of their season. Masked ∅ gives 0 grad cat([x·m,m]) so not-tracked eras never explain predictions. How we built this → | Lab pipeline → | Why eras drift →

Embedding map — 48 numbers rendered in 3D • cosine = similarity

Slow auto-rotate • drag to orbit • scroll to zoom • hover for name+archetype • orange=selected player — 12,392 points L2-normalized.

  • Playmaking + Steals
  • Scoring Volume
  • Defense etc — JS fills rest

Loading nearby players — 48-d L2 cosine = similarity. Same space as Chimera scoring + Era Twin matching.

Shipped MTNN • glass boxmtnn_v4_phase_bmtime 1783623905 • 2.26MB • ~224K params • ONNX 549KB • WASM 2MBShow layer math + keep-or-revert
● Input — 120 feats, 17 families (era-honest σ)z-scored per season • mask m∈{0,1}
h = cat([x·m, m]) → 2·d_in
17 families: volume / playmaking / rebounding / defense / efficiency / shotmix / bio / tracking / form / market / roster / career / competition / team / pedigree / playoffs / honors. Masked ∅ = tracking pre-2013, form pre-2015, etc. → 0 grad, never guessed.
⬢ Residual towers — 17×2 blocks → 32-d eachLinear 2d_in→160 LN GELU 160→32 LN + skip ×2 → 32-d per tower
Math: 17×32=544. LN = LayerNorm per tower. GELU, not ReLU. Skip = residual add before 2nd LN. Era-honest: each feature σ from its own season.
Truthful: MAX_INPUT_NODES 17, W1380, COLS 110/250/350/470/580/700/900/1010/1120/1250, 1:1 input→tower.
⬣ Concat fusion + season — 544+12=556→128→48 L2Season emb 12-d learned lookup → concat 544+12=556 → 556→128 GELU LN → 128→48 → L2 norm
~224K params total — 57% in fusion 556→128 (70K) + 128→48 (6K). Towers ~132K. Season emb 12-d = 30 seasons ×12 learned. L2 = unit sphere, cosine = similarity. ONNX WASM 2MB loads <300KB gz bundle (105KB measured: 88.4KB gz + 16KB vendor).
⬕ Embedding & heads — 48-d • 8/5/14/1848-d L2-normalized cosine=similarity for Chimera & Era Twin.
Heads MLP 48→64→k: Archetype 8 / Position 5 / Next profile 14 / Next pred 14. Skills 18×(48→16→1) scalar regression (free throw, rim pressure, 3PT volume/acc, boards, rim D, steal, playmaking, etc) 0-99 grades.
Chimera = 48-d fuse of two embeds → nearest real among 12,392. Era Twin = Procrustes-aligned rotation R minimizing ||X1999 R - X2025||_F + cosine search cross-decade. No lineup/on-off data used anywhere.
Show raw mtnn_arch.json — reproducible
Loading mtnn_arch.json… v4_phase_b • 17 families 120 feats → 544+12=556→128→48 L2 ~224K • mtnn.onnx 549KB opset18 • mtnn_embeddings.f32 12,392×48 L2 • mtnn_heads.f32 • mtnn_map.json • season_norms.json per-season μ/σ for era-honest inversion • 12,392 seasons 1996-97→2025-26 MIN≥800.

How the model learned — MTNN training run

Loss, composite quality score, recall@10 and purity@20 across every epoch. The same glass-box model above, shown as a learning curve — the point where CQS clears the promote bar is when a new model ships.

Hill-climb log — keep-or-revert • truthful only

Doctrine: every number recomputable from stats.nba.com — no vibes. Stats filter MIN≥800. Per-100 possessions, not per-game. Missing eras masked ∅, never imputed. Verification harness V1-V4 gates deploy.