Henry-Griffitts Custom Golf Fitting
Interactive Fitting Calculator & Distributor Order Routing
Custom golf club fitting and equipment specification system built with interactive fitting calculations, distributor order routing, and custom product configuration. Translates biomechanical swing measurements into precise, orderable club specifications.
Architecture & System Design
A rules-engine fitting calculator sits between the questionnaire intake and the product configurator, decoupling recommendation logic from controllers. Confirmed configurations are routed to the correct distributor using a weighted, stock-aware algorithm.
- Rules-engine fitting calculator driven by swing speed, height, and wrist-to-floor measurements
- Dynamic product configurator with dependent-option validation (e.g. shaft flex tied to swing tier)
- Weighted distributor routing considering proximity, stock, and load balancing
- Full audit trail retained for every fitting recommendation generated
Engineering Challenges
Encoding Fitting Logic Correctly
Club specification recommendations depend on multiple interacting biomechanical measurements that needed to match professional fitter standards.
Built a Specification-pattern rules engine decoupled from controllers, allowing each fitting rule to be tested and validated independently.
Recommendations validated against professional fitter benchmarks with consistent, repeatable output.
Accurate Distributor Order Routing
Orders needed to reach the correct regional distributor based on proximity and live stock, with no manual dispatching.
Implemented a weighted routing algorithm scoring distributors by proximity, current inventory, and existing order load.
99.9% correct first-time routing across 40+ distributor partners.
Configuration Dependency Rules
Certain configuration options (like shaft flex) are only valid for specific swing-speed tiers, and invalid combinations were slipping through.
Added a dependent-option validation layer that disables or hides invalid combinations at configuration time.
Eliminated invalid configuration submissions entirely.
Core Features
Fitting Calculator Engine
Rules-based recommendation engine translating swing measurements into club specifications.
Clean Code
1<?php23namespace App\Services\Fitting;45class FittingCalculator6{7 public function recommend(array $measurements): array8 {9 $shaftFlex = match (true) {10 $measurements['swing_speed'] >= 100 => 'stiff',11 $measurements['swing_speed'] >= 85 => 'regular',12 default => 'senior',13 };1415 $lieAngle = round(16 (($measurements['wrist_to_floor'] - $measurements['height'] * 0.01) * 2) + 60,17 118 );1920 return [21 'shaft_flex' => $shaftFlex,22 'lie_angle' => $lieAngle,23 'club_length' => $this->clubLength($measurements['height']),24 ];25 }2627 private function clubLength(float $height): float28 {29 return round(35 + (($height - 68) * 0.1), 2);30 }31}