Six models · five daily puzzles · free · no account
6 models · 5 daily puzzles
12,966 NBA · 4,831 company-years · 4,022 tennis
Era-honest comparisons
It's a dumb model. Beat it anyway.
Take everything public about an athlete — the box score, the tracking data, the draft slot, the salary, the awards nobody remembers — and squash it down into a single list of numbers. That list is the whole player, as far as the model is concerned.
Then we hide the names and hand you the numbers. The model is wrong all the time — that's the fun part.
Every number below is read from the same JSON the games use. No copy-paste guesses. Six short loops, each one true line that the model actually ships. Watch in order — each builds on the last.
5 dailies live — NBA · NFL · World Cup · Companies · Chimera; tennis ships as model card + playable probe, no daily yet (honest caveat). Then it makes sense: one map, 5 leagues, same engine.
02
Shared Space 64-d L2
64-d · 32-d · 24-d → 64
v̂=v/‖v‖₂·cos=v̂·ŵ
live from assets/data/*.json — hoops 12,966 64-d, gridiron 646 projected 2026 (5,323 joint), pitch 2,430 24-d, equities 500 (4,831 company-years), tennis 4,022 probe. Per-sport encoders 64 / 32 / 24 feeding a shared 64 trunk. All vectors L2 unit — cosine is dot. That is why a power forward can sit next to a strong safety: same role geometry.
03
Real Models Not Vibes
src files 10 / 7 / 3 / 7 / 14 / 12 / 6
MTNN · ONNX 549KB · 17 towers hoops
hoops 130 feats → 17 towers → 64-d L2 (10 source files), gridiron 32-d MTNN 13 families 7 files, pitch 24-d MTNN 3 files, equities 64-d 17 towers 7 files (Altman Z, Piotroski F, Beneish M, Sloan, QMJ), tennis 14 files ridge +0.0941 over rank alone, unified 12 files CORAL+contrastive+GRL, scout_cli 6. Each sport owns its towers; joint learns CORAL + contrastive + adversarial GRL to keep role. ONNX ships where measured. If a gate fails, deploy fails.
glibc rand LCG, seed = YYYYMMDD UTC. Example today 20260809→70737614→idx2948/20719. same-link-same-stars?daily=YYYYMMDD&n=1/3/5. Exposed via window.DAILY_SEED + UNIFIED_CHIMERA_DAILY + console [hub-daily]. deterministic, reproducible, no server dice.
SHAPE=POS COLOR=SPORT+ARCH X Paint↔Perim Y Role→Score Z Def↔Off shared-map.js reused across domains · same engine as hoops · Pause/Reset map-overlay · LOD 4000 mobile 8000 desktop DPR1 fillRect
Same 5 games, filtered by what you actually do. All = no filter. Owner = cap tools / win+valuation. Player = stay on floor / fit. Brand = wins→story / $B. DFS = optimizer / locks. Same engine, 5 sports. Global entry — hoops is canonical, cross-link daily.
One puzzle a day per game. Each runs a real model on real public data — no staged scores, no decorative math. Three sports + one market + one joint cross-sport chimera. One more model — tennis — still ships as a model card with a playable probe and no daily puzzle yet. Unified is now live as the fifth daily: 20,719 player-seasons in 64-d, deterministic dailySeed LCG.
One card per model. Real measured findings, the model’s own limitations quoted from its artifacts rather than paraphrased, and Split Decision — a game that shows you two real entities and asks which one the model rates higher. The answer key is the model’s own numbers, so you are probing the model, not guessing at a future it never predicted.
Unified ablation · Δ G1/G2/G3/G4 · each loss must earn keep
The joint 64-d model ships from unified_stage2_best.pt (best_epoch 58, 60ep, enc_lr 3e-5, GRL λ 0.10). It was gated on four tests. Every gate was measured against a null that could have failed it. Below are the shipped numbers and what happens when you drop one alignment loss — house rule from SPEC.md §5: drop each loss and measure Δ, each must earn its keep.
0.683 silhouette; within-arch x-sport 0.746 >> between -0.121 (sep +0.867, measured +0.8448) within>between holds on null ~½ time (up to +0.0440 across 50 shuffles)
composition gap up to 8.9 pp sport-pair mix differs between within/between samples — some separation is sport-pair effect
PASS 0.683 > SIL_FLOOR 0.05; drop CORAL → rank 12.4 same as shuffle, silhouette collapses
unified_report → g3_silhouette / within_vs_between / null calibration; archetype_map → 6/12 archetypes never assigned (A4 folds into A3)
G4analogy
0.9828 cross-sport NN same-archetype hit (random 0.1712) lift +0.8116 curated 40 triples top-10 hit 0.000, mean rank 2114 vs random 2067 ratio 0.978 (indistinguishable)
curated 40 pairs: arch-agreement 0.65 vs baseline 0.1621 (+0.488) — space knows role, not person. Earlier 3.287× salvage used N/2 not (N−k)/(k+1)
STRONG but curated names fail — house rule still holds: without contrastive, hit-rate falls to shuffle baseline
House rule from SPEC.md §5: ablation — drop each alignment loss (contrastive / CORAL / adversarial GRL) and measure Δ on G2/G3/G4. Each must earn its keep. Shipped joint 20,719 player-seasons (hoops 12,966 / gridiron 5,323 / pitch 2,430) x 64-d. All numbers from vector-unified/assets/unified.json and sibling reports; 0.0-pos_drop bug noted in g1_pos_caveat.
scout-cli powers this
Training now runs through scout-cli v0.8 — scout vector train --game hoops, scout vector eval --game unified --gates G1-G4, scout unified ablation --ablate contrastive|coral|adversarial. Router picks 5 tiers: deterministic cheap (no LLM, reads mtnn_meta.json), LLM medium (3-5 sub-swarm via CommsBus), or deep_research heavy 9K (13-swarm checkpointed). Checkpoint Manager writes bundles/ultra/runs/<runId>/checkpoint.json with fields nodeId/agentId/attempt/latency/tokens/status/errorClass so a 60-epoch unified job can pause days and resume. Verification econ budget3 threshold8.0 early-exit delta<0.3 catches mask-as-index pos_drop 0.0 via shuffled null 0.5493.
Season status
6
Model cards · 5 with a daily game
21,819
Hoops + Equities + Tennis rows
64/32/24/64/64
Dims · NBA / NFL / WC / EQ / joint
Free
No account · no ads
What the model is doing
A player isn't one kind of thing. He's a body, a shot chart, a contract, a draft night, a postseason. Most models pick one of those and throw the rest away.
01 · Towers
Seventeen towers, fused (Hoops)
Vector Hoops runs eighteen separate towers — one each for volume, playmaking, rebounding, defense, efficiency, shot mix, biometrics, tracking, form, market value, roster context, career arc, strength of schedule, team, draft pedigree, playoffs, and honors — then fuses them into a single 48-number embedding. Equities runs 17 towers — Altman Z distress, Piotroski F quality, Beneish M earnings manipulation, Sloan accrual quality, QMJ quality, investment, payout, growth, operational efficiency, market microstructure, and more — into a 64-d company vector.
02 · Multi-task
One vector, many jobs
That embedding gets graded on many jobs at once: cluster the archetypes, name the position/sector, rebuild the box score / financial profile, guess the salary, predict who rises in the playoffs, predict distress, payout, next-year stats. A vector that can do all of that simultaneously has nowhere left to hide a lie. That's the MTNN — a multi-tower, multi-task net.
03 · Per domain
Shared trunk, classical fallback
Vector Gridiron runs the same idea with a shared trunk and multiple heads. Vector Pitch now ships a true MTNN (24-d) that beats the old PCA baseline on role recovery; Equities ships a 64-d MTNN (17 towers) trained with CQS_v2 = 0.4*recall_no_wiki + 0.25*purity + 0.2*next_R2 + 0.15*sector.
Where this is going
The per-sport games still live in their own spaces (64-d hoops, 32-d gridiron, 24-d pitch, 64-d equities). On top of that, a 64-d joint embedding now folds 20,719 player-seasons across the three sports into one shared role geometry — so you can ask what a power forward and a strong safety have in common and get a real neighbour.
Shipped with caveats: sport identity is still partly recoverable from the joint vector (Δ +0.0593 over majority), but the joint daily puzzle is now live — 20,719 × 64-d chimera, dailySeed LCG deterministic, probe daily on the unified model card. Equities is its own market puzzle — guess the ticker from the vector. The five games are the product you play.
The fine print
Every number is recomputable from public sources: stats.nba.com, Basketball-Reference, nflverse, StatsBomb open data.
Era- and context-honest. Stats are normalized inside their own season or tournament before anything is compared.
Free. No account, no ads, no tracking.
It is called dumbmodel for a reason. It is wrong all the time. That's the fun part.
Every number on every game is recomputable from public source data — an accuracy harness gates every deploy.