fit_score Explained — Club Philosophy × Player Evaluation Vector Inner Product
'Is this player a fit for our philosophy?' — scouting's fundamental question. Footnote's fit_score answers numerically. The inner product of own club's evaluation_weights (Phase H) and target player's 4-axis PVS, scaled to 0-100. Math definition, philosophy linkage, scouting workflow, and limitations covered.
Mathematical Definition — Inner Product Vector Similarity
fit_score = ⟨own club weights, target 4-axis score⟩ × 100. Applies linear algebra inner product directly to soccer evaluation.
fit_score = (w_t × s_t + w_ta × s_ta + w_p × s_p + w_m × s_m) × 100. w = own club's 4 weights (sum 1.0), s = target's normalized scores. Example: weights (0.35, 0.30, 0.15, 0.20) × player (0.75, 0.70, 0.65, 0.80) = 0.731 → fit_score 73.
Why inner product
Inner product measures 'directional alignment' between two vectors. Aligned = large product; orthogonal = zero. Naturally implements 'tech-focused club rates tech-strong players' / 'physical-focused club rates physical-strong players.'
Phase H Philosophy Linkage
fit_score requires club_philosophies.evaluation_weights. Without philosophy → no fit_score available. Forces 'no philosophy = no fit judgment.'
evaluation_weights jsonb stored in club_philosophies. Wave N3 implementation provides real-time fit_score in /club/scouting/search. Wave N3b adds threshold filtering ('fit_score 0.85+ candidates only').
Scouting Field Usage
Best as 'first filter.' 70+ candidates → detailed evaluation (video, interviews) → 2-stage workflow most efficient.
- Step 1: search filter (position, age, region) + fit_score ≥0.85 → 200 candidates compressed to 20-30
- Step 2: detailed evaluation top 5-10 with public portfolio match history, PVS trajectory, skill radar
- Step 3: contact via club_scouting_lists + scouting_contacts (under-18 requires parent_consent_confirmed)
Limits and Caveats
fit_score is simple inner product of integrated 4-axis — misses 'extreme weakness in specific axis.' Complement with axis-level review.
- Averaging trap: (90, 50, 60, 60) and (65, 65, 65, 65) get similar fit_score — first is 'genius + tactical weakness,' second is 'balanced' — completely different players
- Philosophy change disruption: changing philosophy disrupts past scouting record continuity — note 'fit_score X under old philosophy' in scouting_contacts
- PVS-unscored players can't be evaluated: 4-axis PVS unavailable → fit_score is null (intentional, prevents overrating data-poor players)
References
- [1] Williams A.M., Reilly T. (2000). “Talent identification and development in soccer” Journal of Sports Sciences.
- [2] Vaeyens R., Lenoir M., Williams A.M., Philippaerts R.M. (2008). “Talent identification and development programmes in sport: current models and future directions” Sports Medicine.
Related Articles
Verbalizing Club Philosophy — A 3-Question Framework
2 min read
Philosophy → Weights → PVS — How 4-Axis Scores Reflect Club Identity
1 min read
Scout Contact Strategy — 5 Data-Driven Best Practices to Raise Response Rate
2 min read
PVS (Player Value Score) — Complete Guide to Footnote's Composite Player Metric
7 min read
Squad ROI Explained — Football Manager-style Decision Support for J Club Reinforcement
3 min read
Track Your Growth with Footnote
Just record your matches — AI analyzes every 5 games. Visualize growth with PVS Score. All features free during beta.
30-second signup · No credit card required
Last updated: 2026-05-18 ・ Footnote Editorial