Pipeline 3 · Analysis
BGG-mechanism regression (track A) + LLM-primitive ranking (track B).
End-to-end ranking + reporting. Two tracks merged into one script.
python scripts/analyze.py
Track A — BGG-mechanism regression
Linear regression of bayesaverage residualized against averageweight (LOAD-BEARING — without this, BGG's complexity bias dominates every result), then a LightGBM/SHAP pass to pull out mechanism-pair interactions. Lands in reports/mechanism_scores.csv and reports/interactions.csv.
Track B — LLM-primitive ranking
Joins game_llm_primitives × game_llm_deep × the BGG quantitative columns to produce a per-game fit_score and port_headroom. Filters by:
playingtime ≤ 60averageweight ≤ 3.0usersrated ≥ 1000- no social mechanics (Hidden Roles, Voting, Negotiation, Trading, Bluffing, Acting)
Lands in reports/translation_candidates_ranked.csv and reports/clusters.csv.
Outputs
7 CSVs + 1 markdown briefs file in reports/, plus reports/analysis.xlsx (multi-sheet workbook with a provenance summary). Every output declares its SQLite snapshot date, the script that produced it, and the filter parameters — the /reproduce-report skill enforces this.
See /visualizations for the rendered take, and /candidates for the ranked candidate list.
Auxiliary inputs
If present, the script joins:
data/seed/bgg_ranks_2019.csv— historical 2019 rank for trajectory deltas.data/kaggle/games.csv— Kaggle dump (drop in, gets joined automatically).
Top mechanisms by fit (sample)
From mechanism_scores.csv. See /mechanics for the full table.
| Mechanism | Games | Fit |
|---|
Cluster snapshot
25 primitive-tag clusters from clusters.csv.
| Tag | Games | Avg bayes |
|---|---|---|
feeding_pressure | 4 | 7.69 |
tech_tree_unlock | 3 | 7.61 |
tableau_engine_growth | 3 | 7.58 |
card_combo_chaining | 3 | 7.56 |
event_card_dual_use | 3 | 7.49 |