Analytics Endpoints Documentation
β Back to AnalyticsQuick Navigation
Overview
The AdvancedAnalyticsController provides comprehensive analytics endpoints for Counter-Strike 2 demo analysis. All endpoints support CSV export via the format=csv query parameter.
Base Route: /api/advanced-analytics
Common Query Parameters
All endpoints (except database-diagnostic) support the following optional query parameters:
| Parameter | Type | Description |
|---|---|---|
DemoId |
int | Filter by specific demo file ID |
MapName |
string | Filter by map name (e.g., "de_dust2") |
PlayerName |
string | Filter by specific player name |
Team |
string | Filter by team ("CT" or "TERRORIST") |
StartDate |
DateTime | Filter demos parsed after this date |
EndDate |
DateTime | Filter demos parsed before this date |
RoundNumber |
int | Filter by specific round number |
Format |
string | Output format ("csv" for CSV export) |
Endpoint Listings
1. Clutch Analysis
Route: GET /api/advanced-analytics/clutch-analysis
Purpose: Analyzes 1vX clutch situations and calculates success rates.
Data Sources:
Kills- Kill eventsPlayers- Player informationRounds- Round outcomesDemoFiles- Demo metadata
Key Metrics:
ClutchAttempts- Total clutch situations encounteredClutchWins- Successful clutchesClutchSuccessRate- Win percentage in clutch situationsClutchType- Classification (1v1, 1v2, 1v3, 1v4, 1v5)DemosPlayed- Number of distinct demos
Calculation Method:
- LastKillsPerRound CTE: Identifies last 4 kills per round ordered by game time
- PotentialClutches CTE: Groups consecutive final kills by same player
- Categorizes clutch type based on kill count (2+ kills = clutch)
- Calculates success rate by comparing killer team with winner team
SQL Key Logic:
-- Identifies clutch scenarios from final kills
HAVING COUNT(*) >= 2 -- At least 2 kills in final moments
2. Trade Kill Analysis
Route: GET /api/advanced-analytics/trade-kill-analysis
Purpose: Analyzes team's ability to quickly trade frags after losing a teammate.
Data Sources:
Kills(k1, k2) - Self-joined for trade detectionPlayers- Player and team infoRounds- Round contextDemoFiles- Demo metadata
Key Metrics:
TotalTrades- Count of successful trade killsAvgTradeTimeSeconds- Average time to revenge killFastestTradeSeconds/SlowestTradeSeconds- Time boundsAvgTradeDistance- Distance between killsFastTrades- Trades within 2 secondsFastTradePercentage- Percentage of fast trades
Calculation Method:
- Self-join
Killstable with 5-second window constraint - Match kills where:
- Second kill targets the initial killer
- Teams are opposite
- Victim's team matches trade killer's team
- Calculate distance using Pythagorean theorem on positions
- Aggregate trade timing statistics
SQL Key Logic:
AND k2.GameTime > k1.GameTime
AND k2.GameTime <= k1.GameTime + 5.0 -- Trades within 5 seconds
AND trade_victim.Id = initial_killer.Id -- Revenge kill
3. First Kill Impact
Route: GET /api/advanced-analytics/first-kill-impact
Purpose: Correlates first blood kills with round win probability.
Data Sources:
Kills- Kill eventsPlayers- Player informationRounds- Round winnersDemoFiles- Demo metadata
Key Metrics:
TotalFirstKills- Count of first killsRoundsWonAfterFirstKill- Wins after getting first killFirstKillWinPercentage- Correlation with round victoryHeadshotFirstKills/HeadshotPercentage- Precision metricsFirstKillType- Categorization (Headshot, AWP Pick, Long Range, Standard)AvgFirstKillTime- Timing of first bloods
Calculation Method:
- RoundFirstKills CTE: Identifies all kills with ordering
- FirstKills CTE: Filters to KillOrder = 1 (first kill per round)
- Categorizes first kill types based on weapon and conditions
- Correlates with round outcomes
SQL Key Logic:
ROW_NUMBER() OVER (PARTITION BY k.RoundId ORDER BY k.GameTime ASC) as KillOrder
WHERE KillOrder = 1 -- First kill only
4. Economic Intelligence
Route: GET /api/advanced-analytics/economic-intelligence
Purpose: Analyzes player performance across different economic states (eco, force buy, full buy).
Data Sources:
Players- Player dataPlayerRoundStats- Round-level statsRounds- Round outcomesDemoFiles- Demo metadataKills- Kill events
Key Metrics:
EconomyType- Weapon category (High_Value_Rifle, Sniper_Investment, Pistol_Economy, SMG_Force)RoundType- Phase classification (Pistol_Round, Anti_Eco_Round, Buy_Round, Late_Round)KillRateWithEconomyType- Kill success rate per economy stateWinRateWithEconomyType- Win rate correlationEconomicIntelligenceScore- 0-100 score based on performance
Calculation Method:
- Joins player stats with kills to analyze weapon usage
- Categorizes economy based on weapon types from kills
- Classifies round types based on round numbers
- Scores economic intelligence using tiered thresholds
SQL Key Logic:
CASE
WHEN EconomyType = 'High_Value_Rifle' AND WinRate >= 70 THEN 95
WHEN EconomyType = 'Pistol_Economy' AND KillRate >= 40 THEN 85
...
END as EconomicIntelligenceScore
5. Position Analysis
Route: GET /api/advanced-analytics/position-analysis
Purpose: Identifies death hotspots and dangerous areas by map location.
Data Sources:
Kills- Kill positionsPlayers- Victim informationDemoFiles- Map context
Key Metrics:
TotalDeaths- Deaths in specific areaAvgKillDistance- Average kill range in areaHeadshotDeaths/HeadshotPercentage- Precision in areaMapArea- Classified zone (A Site, B Site, Mid, etc.)CommonWeapons- Aggregated weapon listDeathSpreadX/Y- Position variance (clustering)
Calculation Method:
- DeathHotspots CTE: Maps victim positions to map areas
- Uses coordinate-based CASE statements for area classification
- Aggregates STRING_AGG for weapon lists
- Calculates position spread using STDEV functions
SQL Key Logic:
CASE
WHEN d.MapName = 'de_dust2' THEN
CASE
WHEN k.VictimPositionY > 1000 THEN 'A Site'
WHEN k.VictimPositionY < -1000 THEN 'B Site'
...
END
END as MapArea
6. Enhanced Trade Kill Optimization
Route: GET /api/advanced-analytics/enhanced-trade-kill-optimization
Purpose: Advanced trade kill analysis including positioning, timing, chains, and missed opportunities.
Data Sources:
Kills(k1, k2) - Trade detectionPlayers- Player/team dataRounds- Round contextDemoFiles- Map/demo info
Key Metrics:
EffectiveTradePercentage- Instant + Fast trades percentageAvgTradeChainLength- Length of trade sequencesTradeChains- Multi-kill trade sequencesCloseRangeTrades/LongRangeTrades- Distance breakdownStaticTrades/MobileTrades- Movement analysisTradeQuality- Classification (Instant, Fast, Slow, Too Late)
Calculation Method:
- TradeKillAnalysis CTE: Basic trade detection with 8-second window
- TradeChainAnalysis CTE: Self-joins to detect sequential trades
- FailedTradeOpportunities CTE: NOT EXISTS query for missed trades
- Calculates trader movement distance between positions
- Maps positions to areas for spatial analysis
SQL Key Logic:
-- Trade quality categorization
CASE
WHEN (k2.GameTime - k1.GameTime) <= 1.0 THEN 'Instant'
WHEN (k2.GameTime - k1.GameTime) <= 3.0 THEN 'Fast'
WHEN (k2.GameTime - k1.GameTime) <= 5.0 THEN 'Slow'
ELSE 'Too Late'
END as TradeQuality
7. Weapon Mastery Analytics
Route: GET /api/advanced-analytics/weapon-mastery-analytics
Purpose: Detailed weapon-specific performance including accuracy, range effectiveness, and switching patterns.
Data Sources:
Kills- Kill data with weaponsPlayers- Player informationRounds- Round contextDemoFiles- Demo metadataWeaponFires- Shot accuracy dataEquipment- Weapon switching patterns
Key Metrics:
TotalKills/HeadshotPercentage- Kill statisticsCloseRangeKills,MediumRangeKills,LongRangeKills- Range distributionWallbangKills,NoScopeKills- Special killsEstimatedAccuracyPercentage- Kill-to-shot ratioAvgSwitchSpeed- Weapon switching proficiencyDistanceConsistency- STDEV of kill distances
Calculation Method:
- WeaponPerformanceData CTE: Categorizes weapons and ranges
- WeaponFireData CTE: Aggregates shot counts per weapon
- WeaponSwitchingPatterns CTE: Analyzes equipment changes within 1 second
- Joins all CTEs to calculate comprehensive weapon stats
- Estimates accuracy as kills / average shots
SQL Key Logic:
-- Accuracy estimation from shot data
CASE
WHEN AVG(TotalShots) > 0
THEN COUNT(*) * 100.0 / AVG(TotalShots)
ELSE NULL
END as EstimatedAccuracyPercentage
8. Grenade Impact Quantification
Route: GET /api/advanced-analytics/grenade-impact-quantification
Purpose: Analyzes utility effectiveness including flash duration, smoke timing, HE damage, and team coordination.
Data Sources:
Grenades- Grenade throwsPlayers- Player informationRounds- Round outcomesDemoFiles- Demo metadataFlashEvents- Flash effectivenessGrenades(self-joined) - Utility combos
Key Metrics:
TotalGrenades- Grenade countAvgThrowDistance- Throw rangeGrenadesInWonRounds/WinRateWithGrenades- Utility impact on winsAvgFlashDuration- Flash effectivenessEnemyFlashes/TeamFlashes- Flash targetingFullBlinds- Full-blind countUtilityCombos- Coordinated utility (within 3 seconds)
Calculation Method:
- GrenadeEffectivenessData CTE: Base grenade data with positions
- FlashEffectiveness CTE: Flash duration and blind levels
- UtilityComboDetection CTE: Detects grenades thrown within 3 seconds (384 ticks)
- Aggregates utility metrics per player/area
- Calculates win correlation with grenade usage
SQL Key Logic:
-- Detect coordinated utility
ABS(g1.ThrowTick - g2.ThrowTick) <= 384 -- Within ~3 seconds
WHERE p1.Team = p2.Team -- Same team coordination
9. First Blood Impact Analysis
Route: GET /api/advanced-analytics/first-blood-impact-analysis
Purpose: Deep analysis of first kill impact including location heatmaps, weapon effectiveness, and timing correlation.
Data Sources:
Kills- Kill events (filtered byIsFirstKill = 1)Players- Player dataRounds- Round outcomesDemoFiles- Map context
Key Metrics:
TotalFirstKills- First kill countFirstKillWinPercentage- Round win correlationRifleFirstKills,SniperFirstKills,PistolFirstKills- Weapon breakdownHeadshotPercentage- Precision metricWallbangFirstKills,SmokeFirstKills- Special first killsFirstKillArea/FirstKillTiming- Spatial and temporal classificationViewAngleMagnitude- Crosshair placement analysis
Calculation Method:
- Uses
IsFirstKill = 1flag to filter first bloods - Maps positions to areas per map
- Categorizes timing (Early 0-15s, Mid 15-45s, Late 45-75s, Very Late 75s+)
- Calculates view angle magnitude for crosshair analysis
- Aggregates positioning statistics (avg positions, consistency)
SQL Key Logic:
WHERE k.IsFirstKill = 1
-- Timing categorization
CASE
WHEN k.GameTime <= 15.0 THEN 'Early (0-15s)'
WHEN k.GameTime <= 45.0 THEN 'Mid (15-45s)'
...
END as FirstKillTiming
10. Economic Efficiency Analysis
Route: GET /api/advanced-analytics/economic-efficiency-analysis
Purpose: Deep analysis of equipment ROI, force buy patterns, save optimization, and economic momentum.
Data Sources:
PlayerRoundStats- Performance and equipment valuePlayers- Player informationRounds- Round outcomesDemoFiles- Demo metadata
Key Metrics:
EquipmentROI- Return on investment ((Kills*1000 + Assists*300 + Damage) / EquipmentValue)EconomicState- Classification (Full Buy, Half Buy, Force Buy, Eco)BuyStrategy- Context-aware strategy (Anti-Eco Force, Momentum Force)AvgEquipmentROI/MaxEquipmentROI- ROI statisticsKillsPerEquippedRound,DamagePerDollar- Efficiency metricsAntiEcoForceWinRate,EcoRoundWinRate- Strategy success ratesWinRateAfterWin,WinRateAfterLoss- Momentum tracking
Calculation Method:
- EconomicRoundData CTE: Gathers equipment value and performance
- Uses LAG() to track previous round outcomes for momentum
- EconomicEfficiency CTE: Calculates ROI and strategy classification
- Aggregates efficiency metrics per player/state/strategy
- Analyzes post-win and post-loss performance
SQL Key Logic:
-- ROI Calculation
CASE
WHEN EquipmentValue > 0 THEN
(Kills * 1000 + Assists * 300 + Damage) / EquipmentValue
ELSE 0
END as EquipmentROI
-- Momentum tracking with LAG
LAG(CASE WHEN Team = WinnerTeam THEN 1 ELSE 0 END) OVER
(PARTITION BY PlayerId ORDER BY RoundNumber) as PreviousRoundWon
11. Round Momentum Tracking
Route: GET /api/advanced-analytics/round-momentum-tracking
Purpose: Analyzes streak patterns, comeback potential, momentum shifts, and force reset identification.
Data Sources:
Rounds- Round sequences and outcomesDemoFiles- Demo contextKills(subquery) - First kill timing
Key Metrics:
AvgStreakLength/MaxStreak- Winning streaksTotalMomentumShifts/MomentumShiftPercentage- Momentum changesComebackRounds/ComebackPercentage- Reversals after first blood lossFirstKillAdvantagePercentage- First blood win correlationForceResetRounds- Breaking losing streaksMomentumBuildRounds- Consecutive winsWinnerKillDominance- Kill share of winning team
Calculation Method:
- RoundSequenceData CTE: Uses LAG() for previous 3 round winners
- Subqueries identify first kill team per round
- MomentumStreaks CTE: Classifies momentum patterns
- Calculates streak lengths with ROW_NUMBER()
- Identifies force resets (no wins in last 3 rounds) and momentum builds
SQL Key Logic:
-- Momentum shift detection
CASE WHEN LAG(WinnerTeam) OVER (...) != WinnerTeam THEN 1 ELSE 0 END as MomentumShift
-- Force reset identification
CASE
WHEN PreviousWinner != WinnerTeam AND
TwoRoundsAgoWinner != WinnerTeam AND
ThreeRoundsAgoWinner != WinnerTeam THEN 'Force Reset'
END
12. Positioning Intelligence
Route: GET /api/advanced-analytics/positioning-intelligence
Purpose: Death probability heatmaps, movement patterns, angle holding effectiveness, and site control.
Data Sources:
Kills- Death positionsPlayers- Player informationRounds- Round contextDemoFiles- Map dataEnhancedPlayerPositions- Movement data
Key Metrics:
TotalDeaths/DeathProbabilityPercentage- Death risk by areaAvgDeathDistance/DeathDistanceVariation- Kill distance statsAK47Deaths,M4Deaths,AWPDeaths- Weapon breakdownAvgMovementSpeedAtDeath- Movement correlationStationaryPercentage- Static vs mobile deathsLongAngleDeathPercentage- Angle holding risksTerroristDeathPercentage- Site control indicators
Calculation Method:
- DeathPositionAnalysis CTE: Maps death positions to areas and analyzes angles
- MovementPatternAnalysis CTE: Calculates speed and coverage from position data
- Joins movement patterns with death locations
- Calculates death probability as percentage of total deaths on map
- Analyzes weapon effectiveness per position
SQL Key Logic:
-- Death probability calculation
CAST(COUNT(*) AS FLOAT) /
(SELECT COUNT(*) FROM DeathPositionAnalysis sub WHERE sub.MapName = dpa.MapName) * 100
as DeathProbabilityPercentage
-- Movement analysis
AVG(SQRT(POWER(VelocityX, 2) + POWER(VelocityY, 2))) as AvgSpeed
13. Team Coordination Metrics
Route: GET /api/advanced-analytics/team-coordination-metrics
Purpose: Analyzes rotation timing, stack effectiveness, spread formation, and synchronized utility usage.
Data Sources:
EnhancedPlayerPositions- Position/velocity dataPlayers- Player informationRounds- Round contextDemoFiles- Demo metadataGrenades- Utility timing
Key Metrics:
TotalRotations/EarlyRotationPercentage- Rotation timingAvgStackSize,FullStackCount,TripleStackCount- Stack analysisAvgStackSpread- Stack tightness (distance)AStackPercentage,BStackPercentage,MidStackPercentage- Stack distributionTightStackPercentage- Close formationsSynchronizedUtilityCount- Coordinated grenadesFlashCombos,SmokeCombos,HECombos- Utility coordinationCoordinationScore- Weighted score (0-100)
Calculation Method:
- RotationAnalysis CTE: Tracks area changes using LAG()
- StackFormationAnalysis CTE: Identifies player groupings in areas
- Calculates stack spread using position min/max
- UtilityCoordinationAnalysis CTE: Detects grenades within 3-second windows
- Weighted coordination score: Tight Stacks (30%) + Early Rotations (25%) + Sync Utility (45%)
SQL Key Logic:
-- Area rotation detection
LAG(CurrentArea, 10) OVER (PARTITION BY PlayerId, RoundId ORDER BY Tick) as PreviousArea
WHERE CurrentArea != PreviousArea
-- Stack spread calculation
SQRT(POWER(MAX(PositionX) - MIN(PositionX), 2) +
POWER(MAX(PositionY) - MIN(PositionY), 2)) as StackSpread
14. Performance Consistency Profiling
Route: GET /api/advanced-analytics/performance-consistency-profiling
Purpose: Tilt detection, variance tracking, and adaptation analysis for performance consistency.
Data Sources:
PlayerRoundStats- Round-level performancePlayers- Player informationRounds- Round contextDemoFiles- Demo metadata
Key Metrics:
AverageKills,AverageDeaths,AverageAssists,AverageDamage- Mean statsAverageRating- Overall performance ratingKillVariance,DamageVariance- STDEV consistency measuresBestKillRound,WorstKillRound- Performance boundsFullBuyKills,EcoKills- Economic context performanceConsistencyLevel- Classification (Very Consistent to Very Inconsistent)ConsistencyScore- 0-100 score based on variance
Calculation Method:
- Aggregates player statistics across rounds
- Calculates STDEV for kills and damage
- Separate averages for full buy vs eco rounds
- Scores consistency based on kill variance thresholds
SQL Key Logic:
STDEV(CAST(Kills AS FLOAT)) as KillVariance
-- Consistency scoring
CASE
WHEN KillVariance <= 0.8 THEN 'Very Consistent' -- Score: 90
WHEN KillVariance <= 1.2 THEN 'Consistent' -- Score: 75
WHEN KillVariance <= 1.8 THEN 'Moderate' -- Score: 60
...
END
15. Damage Efficiency Analytics
Route: GET /api/advanced-analytics/damage-efficiency-analytics
Purpose: Comprehensive damage waste, armor penetration, finishing ability, and multi-target tracking.
Data Sources:
Kills- Damage eventsPlayers- Player informationRounds- Round contextDemoFiles- Demo metadata
Key Metrics:
DamageWastePercentage- Overkill damage percentageFinishingPercentage- Kill success rateDamagePerKill- Damage required per killArmorPenDamagevsUnarmoredDamage- Armor effectivenessHeadshotPercentage- Precision metricMultiTargetRounds/AvgTargetsPerMultiKill- Multi-kill capabilityDamageEfficiencyScore,OverallEfficiencyScore- Composite scoresPerformanceCategory- Classification (Elite Sniper, Excellent Rifle Control, etc.)
Calculation Method:
- DamageBreakdownAnalysis CTE: Calculates effective vs wasted damage
- Applies armor penetration modifiers (AK 77%, M4 70%, AWP 100%)
- MultiTargetAnalysis CTE: Detects multi-kill windows (5 seconds)
- WasteIdentificationAnalysis CTE: Aggregates waste metrics
- Overall score: Finishing (40%) + Efficiency (30%) + Headshot (20%) + Multi-target bonus (10%)
SQL Key Logic:
-- Effective damage calculation
CASE WHEN VictimHealth <= Damage THEN VictimHealth ELSE Damage END as EffectiveDamage
-- Wasted damage
CASE WHEN VictimHealth <= Damage THEN 0 ELSE Damage - VictimHealth END as WastedDamage
-- Armor penetration
CASE
WHEN VictimArmor > 0 AND Weapon LIKE '%ak47%' THEN Damage * 0.77
WHEN VictimArmor > 0 AND Weapon LIKE '%m4%' THEN Damage * 0.70
...
END
16. Comprehensive Clutch Analysis
Route: GET /api/advanced-analytics/comprehensive-clutch-analysis
Purpose: Deep clutch analysis including positioning, health/armor states, economic context, and multi-clutch performance.
Data Sources:
Kills- Clutch kill eventsPlayers- Player informationRounds- Round outcomesDemoFiles- Demo metadataPlayerRoundStats- Equipment and stats
Key Metrics:
TotalClutchAttempts/TotalClutchWins- Overall clutch performanceClutch1v2,Clutch1v3,Clutch1v4Plus- Success rates by clutch sizeHealthyClutchSuccessRatevsLowHealthClutchSuccessRate- Health impactFullBuyClutchSuccessRatevsEcoClutchSuccessRate- Economic correlationRifleClutches,AwpClutches,PistolClutches- Weapon preferencesAvgClutchEquipmentValue- Investment analysisAvgClutchKillDistance- Engagement range
Calculation Method:
- ClutchSetupAnalysis CTE: Uses multi-kill rounds as proxy for clutches
- Categorizes health conditions (Healthy, Moderate, Low, Critical)
- Classifies equipment levels (Full Buy, Partial, Light, Eco)
- MultiClutchPlayers CTE: Aggregates clutch performance
- Analyzes success rates across different variables
SQL Key Logic:
-- Clutch identification (using kills as proxy)
WHERE prs2.Kills >= 2 -- Multi-kill scenarios
-- Equipment categorization
CASE
WHEN EquipmentValue >= 4000 THEN 'Full Buy'
WHEN EquipmentValue >= 2000 THEN 'Partial Buy'
...
END
17. Positioning Analysis (Simple)
Route: GET /api/advanced-analytics/positioning-analysis
Purpose: Simplified performance analysis by game phase (first half vs second half).
Data Sources:
Players- Player informationPlayerRoundStats- Round statsRounds- Round contextDemoFiles- Demo metadata
Key Metrics:
RoundsPlayed,RoundsWon,WinPercentage- Win rate by positionTotalKills,TotalDeaths,TotalAssists,TotalDamage- Aggregate statsKDRatio- Kill/death ratioAvgDamagePerRound- Consistent damage outputRoundsSurvived,SurvivalRate- Survival metricsPositionContext- First_Half vs Second_Half
Calculation Method:
- Simple round number check for half classification (<=15 = First_Half)
- Aggregates performance by player/team/map/half
- Calculates ratios and percentages
SQL Key Logic:
CASE
WHEN RoundNumber <= 15 THEN 'First_Half'
ELSE 'Second_Half'
END as PositionContext
18. Weapon Intelligence
Route: GET /api/advanced-analytics/weapon-intelligence
Purpose: Weapon-specific performance including headshot rates, distance effectiveness, and proficiency scoring.
Data Sources:
Players- Player informationPlayerRoundStats- Round statsRounds- Round contextDemoFiles- Demo metadataKills- Weapon kill data
Key Metrics:
KillsWithWeapon- Kill count per weaponHeadshotRate- Headshot percentageAvgKillDistance,MinKillDistance,MaxKillDistance- Range statisticsWinRateWithWeapon- Round win correlationAvgRoundDamage- Overall damage contributionWeaponProficiencyScore- 0-100 score based on performanceWeaponClass- Classification (Rifle, Sniper, Pistol, SMG)
Calculation Method:
- Joins kills with player round stats
- Categorizes weapons into classes
- Aggregates kill statistics per weapon
- Scores proficiency using tiered thresholds
SQL Key Logic:
-- Weapon proficiency scoring
CASE
WHEN HeadshotRate >= 60 AND KillCount >= 10 THEN 95
WHEN HeadshotRate >= 40 AND KillCount >= 5 THEN 80
WHEN WinRate >= 70 THEN 75
...
END as WeaponProficiencyScore
19. Circumstantial Combat
Route: GET /api/advanced-analytics/circumstantial-combat
Purpose: Performance analysis under special combat conditions (precision, range, weapon-specific).
Data Sources:
Players- Player informationPlayerRoundStats- Round statsRounds- Round contextDemoFiles- Demo metadataKills- Combat conditions
Key Metrics:
EngagementsInCondition- Count of combat scenariosKillsInCondition- Successful killsConditionKillPercentage- Success rateWeaponsUsedInCondition- Weapon varietyHeadshotRateInCondition- Precision metricLongRangeKills/CloseRangeKills- Distance breakdownCircumstantialMasteryScore- Scaled performance score (higher for difficult conditions)
Calculation Method:
- Categorizes combat conditions based on distance, headshot, weapon
- Aggregates performance per condition
- Applies multipliers for difficult conditions (Precision_LongRange = 2x)
SQL Key Logic:
-- Condition classification
CASE
WHEN IsHeadshot = 1 AND Distance > 800 THEN 'Precision_LongRange'
WHEN Distance > 1200 THEN 'Long_Range'
...
END as CombatCondition
-- Mastery scoring with multipliers
CASE
WHEN CombatCondition = 'Precision_LongRange' THEN KillRate * 2.0
WHEN CombatCondition LIKE '%Precision%' THEN KillRate * 1.5
...
END
20. Team Coordination
Route: GET /api/advanced-analytics/team-coordination
Purpose: Team kill coordination, flash teamwork, utility support, and coordinated execution.
Data Sources:
Players(p) - Player informationPlayerRoundStats(prs) - Player statsRounds- Round contextDemoFiles- Demo metadataPlayers(teammate) - Teammate informationKills- Kill timing for coordination
Key Metrics:
TeammatesPlayedWith- Unique teammate countTotalKills- Player kill countCoordinatedKills- Kills within 2 seconds of teammateSupportKills- Kills within 5 secondsAvgKillCoordinationTime- Average time between teammate killsComplementaryWeaponKills- Different weapons used togetherCoordinationEffectivenessScore- Combined coordination and win rate
Calculation Method:
- Left joins with teammates in same round
- Left joins kills to detect timing coordination
- Calculates time differences between kills (ABS)
- Aggregates coordination metrics
SQL Key Logic:
-- Detect coordinated kills
LEFT JOIN Kills teammate_k ON teammate.Id = teammate_k.KillerId
AND teammate_k.RoundId = r.Id
AND k.Id IS NOT NULL
AND ABS(k.GameTime - teammate_k.GameTime) <= 5.0
-- Coordination effectiveness
(CoordinatedKills * 100.0 / TotalKills) * (WinRate) / 100.0
21. Pressure Metrics
Route: GET /api/advanced-analytics/pressure-metrics
Purpose: High-pressure performance, clutch scaling, mental resilience under numerical disadvantage.
Data Sources:
Players- Player informationPlayerRoundStats- Performance dataRounds- Round outcomes with live player countsDemoFiles- Demo metadata
Key Metrics:
NumericalSituation- Classification (1vX_CT, 1vX_T, 2vX_CT, 2vX_T, Neutral)AvgPressureLevel- Calculated pressure intensityHighPressureSituations- Count of intense scenariosClutchAttempts/ClutchSuccessRate- 1vX performanceSurvivalRate- Survival under pressurePressurePerformanceScore- 0-100 composite score
Calculation Method:
- Uses round live player counts (CTLivePlayers, TLivePlayers)
- Classifies numerical situations
- Simplified pressure level based on kills and survival
- Filters to non-neutral situations
- Scores based on win rate and K/D under pressure
SQL Key Logic:
-- Numerical situation detection
CASE
WHEN IsAlive = 1 AND Team = 'CT' AND CTLivePlayers = 1 AND TLivePlayers >= 2 THEN '1vX_CT'
WHEN IsAlive = 1 AND Team = 'T' AND TLivePlayers = 1 AND CTLivePlayers >= 2 THEN '1vX_T'
...
END as NumericalSituation
-- Pressure scoring
CASE
WHEN WinRate >= 70 AND KDRatio >= 1.5 THEN 95
WHEN WinRate >= 60 AND KDRatio >= 1.2 THEN 80
...
END
22. Database Diagnostic
Route: GET /api/advanced-analytics/database-diagnostic
Purpose: Database health check showing record counts for main tables.
Data Sources:
DemoFilesRoundsPlayersKillsPlayerRoundStats
Key Metrics:
RecordCount- Total records per tableMaxId/MinId- ID ranges
Calculation Method:
Simple UNION ALL query across main tables.
SQL Key Logic:
SELECT 'TableName', COUNT(*), MAX(Id), MIN(Id) FROM Table
UNION ALL
...
23. Economy Intelligence Dashboard
Route: GET /api/advanced-analytics/economy-intelligence-dashboard
Purpose: Advanced economy analysis including money efficiency, equipment ROI, and economic state correlation.
Data Sources:
PlayerRoundStats- Overall statsPlayers- Player informationRounds- Round outcomesDemoFiles- Demo metadataEconomyEvents- Money and equipment events
Key Metrics:
EconomyState- Money classification (Rich $5000+, Full Buy, Force Buy, Eco, Broke)AvgStartMoney/AvgEndMoney/AvgMoneySpent- Money flowAvgItemsEquipped/AvgItemsPickedUp- Equipment statsRifleUsageRate,ArmorUsageRate- Equipment preferencesAvgGrenadesPerRound- Utility usageEconomicEfficiency- Wins per $1000 investedMoneyManagementScore- Win rate vs money spentDamagePerDollar,EquipmentROI- Value metrics
Calculation Method:
- PlayerOverallStats CTE: Baseline performance
- EconomyPerformance CTE: Detailed equipment events
- RoundEconomyStats CTE: Aggregates per round
- Joins with overall stats for context
- Calculates efficiency ratios
SQL Key Logic:
-- Economic efficiency
Wins / AvgStartMoney * 1000 as EconomicEfficiency -- Wins per $1000
-- Equipment value estimation
(RifleCount * 2700 + ArmorCount * 1000 + GrenadeAvg * 300) / RoundCount
24. Advanced Player Performance
Route: GET /api/advanced-analytics/advanced-player-performance
Purpose: HLTV-style ratings, consistency scoring, and multi-kill performance analysis.
Data Sources:
PlayerRoundStats- Round-level statsPlayers- Player informationRounds- Round outcomesDemoFiles- Demo metadata
Key Metrics:
AvgRating- Standard ratingAvgImpactRating- Custom HLTV-style calculationQuadKills,TripleKills,DoubleKills- Multi-kill countsRatingConsistency- STDEV of ratingWorstRating/BestRating- Performance boundsSurvivalRate- Survival percentageEfficiencyScore- ImpactRating * (1 - STDEV/Avg)
Calculation Method:
- Calculates custom impact rating per round
- Aggregates statistics across rounds
- Uses STDEV for consistency measurement
- Efficiency score penalizes inconsistency
SQL Key Logic:
-- Custom HLTV-style impact rating
(Kills * 0.679 + Assists * 0.154 + Damage * 0.0021 +
CASE WHEN IsAlive = 1 THEN 0.15 ELSE 0 END) as ImpactRating
-- Efficiency with consistency penalty
AvgImpactRating * (1 - (STDEV(Rating) / AVG(Rating)))
25. Player Inventory
Route: GET /api/advanced-analytics/player-inventory
Purpose: Detailed round-by-round equipment, economy, and loadout analysis.
Data Sources:
EconomyEvents- Equipment eventsPlayers- Player informationDemoFiles- Demo metadata
Key Metrics:
RoundStartMoney/RoundEndMoney- Money flowTotalEquipmentValue- Estimated total valueMoneySpentOnEquipment- Actual purchasesUniqueItemsCarried- Item varietyHasPrimary,HasArmor- Equipment flagsGrenadeCount- Utility countWeaponsCarried,GrenadesCarried- Item lists (STRING_AGG)LoadoutCategory- Classification (Full Buy, Buy Round, Force Buy, Eco, Save)
Calculation Method:
- PlayerInventory CTE: Categorizes equipment and estimates values
- LatestInventory CTE: Deduplicates to latest per item
- RoundInventorySummary CTE: Aggregates per round
- Uses STRING_AGG for item lists
- Categorizes loadout based on total value
SQL Key Logic:
-- Item value estimation
CASE ItemName
WHEN 'ak47' THEN 2700
WHEN 'm4a1_silencer' THEN 3100
WHEN 'awp' THEN 4750
...
END as EstimatedValue
-- Loadout categorization
CASE
WHEN TotalEquipmentValue >= 6000 THEN 'Full Buy'
WHEN TotalEquipmentValue >= 3000 THEN 'Buy Round'
...
END
26. Master Analytics Dashboard
Route: GET /api/advanced-analytics/master-analytics-dashboard
Purpose: Comprehensive multi-dimensional analysis integrating combat, utility, economy, and intelligence.
Data Sources:
Players- Player informationDemoFiles- Demo metadataMatches- Match dataRounds- Round contextPlayerRoundStats- Round performanceKills- Combat eventsWeaponFires- Shot accuracyGrenades- Utility usageFlashEvents- Flash effectiveness
Key Metrics:
- Core:
TotalKills,TotalDeaths,KDRatio,TotalDamage - Combat:
Headshots,HeadshotPercentage,WallbangKills,SmokeKills - Weapon:
ShotsFired,KillsPerShotPercentage,AvgShotAccuracy - Utility:
GrenadesThrown,GrenadeDamageDealt,UtilityEfficiency - Flash:
TimesFlashed,AvgFlashDuration - Performance:
SurvivalRate,KASTPercentage,MVPRounds,ClutchRounds OverallPerformanceScore- Composite score (Rating*25 + KD*10 + Survival*0.25 + HS*0.25)
Calculation Method:
- Large multi-table left join from Players
- Aggregates all available metrics
- Comprehensive scoring formula
SQL Key Logic:
-- Overall performance score
(AvgRating * 25 +
LEAST(KDRatio * 10, 25) +
LEAST(SurvivalRate * 0.25, 25) +
LEAST(HeadshotPercentage * 0.25, 25)) as OverallPerformanceScore
27. Situation Analysis
Route: GET /api/advanced-analytics/situation-analysis
Purpose: Deep dive into performance across game situations with pressure performance scoring.
Data Sources:
Players- Player informationDemoFiles- Demo metadataPlayerRoundStats- Round statsRounds- Round context with live playersEconomyEvents- Money stateFlashEvents- Utility state
Key Metrics:
SituationType- Classification (1vX_CT, 1vX_T, 2vX_CT, PostPlant_Alive, etc.)EconomyState- Money classification (Rich, Full_Buy, Force, Eco, Save)UtilityState- Flash condition (Flashed, Clear)TimesInSituation- Frequency countWinPercentageInSituation- Success rateKDRatioInSituation- Combat effectivenessDifficultyScore- 0-10 score based on situationPressurePerformanceScore- Rating with difficulty multipliers
Calculation Method:
- SituationalPerformance CTE: Classifies all situations
- Aggregates performance per situation combination
- Assigns difficulty scores to situations
- Applies multipliers to ratings (1vX = 3x, 2vX = 2x, Eco = 1.5x)
SQL Key Logic:
-- Difficulty assignment
CASE
WHEN SituationType LIKE '1vX_%' THEN 9.0
WHEN SituationType LIKE '2vX_%' THEN 7.0
WHEN EconomyState = 'Save' THEN 8.0
...
END as DifficultyScore
-- Pressure performance with multipliers
CASE
WHEN SituationType LIKE '1vX_%' THEN Rating * 3.0
WHEN SituationType LIKE '2vX_%' THEN Rating * 2.0
...
END
28. Economy Intelligence Enhanced
Route: GET /api/advanced-analytics/economy-intelligence-enhanced
Purpose: Advanced economic analysis with ROI, money management, and purchase effectiveness.
Data Sources:
EconomyEvents- Money and purchase eventsPlayers- Player informationDemoFiles- Demo metadataRounds- Round outcomesPlayerRoundStats- Performance context
Key Metrics:
EconomyState- Money classification (Full_Buy, Force_Buy, Eco_Buy, Save_Round)ItemCategory- Equipment type (Rifle, Sniper, Pistol, Utility, Armor)PurchaseCount/TotalSpent/AvgItemCost- Spending statisticsWinRateWithPurchase- Purchase success correlationKillsPerThousandSpent- Kill efficiencyDamagePerDollarSpent- Damage efficiencyMoneyManagementScore- Tiered score based on win rate and item category
Calculation Method:
- EconomyAnalysis CTE: Joins economy events with performance
- Categorizes items and money states
- Calculates ROI metrics (kills/damage per dollar)
- Scores money management with category-specific thresholds
SQL Key Logic:
-- Kill efficiency
TotalKills * 1.0 / TotalSpent * 1000 as KillsPerThousandSpent
-- Money management scoring
CASE
WHEN WinRate >= 70 AND ItemCategory = 'Rifle' THEN 95
WHEN WinRate >= 60 AND EconomyState = 'Force_Buy' THEN 85
...
END
29. Movement & Positioning
Route: GET /api/advanced-analytics/movement-positioning
Purpose: Death zone analysis, positioning advantages, and map control patterns.
Data Sources:
Kills- Death positionsPlayers- Victim informationRounds- Round contextDemoFiles- Map data
Key Metrics:
MapArea- Zone classification (A_Site, B_Site, Mid, Tunnels, Connector)PositionType- Advantage type (Long_Range_Position, Close_Range_Position, Elevation_Advantage)DeathCount- Deaths in areaAvgDeathX/Y/Z- Average death coordinatesAvgKillDistance- Kill range in areaHeadshotDeathRate- Headshot frequencyWeaponsUsed- Weapon varietyPositionDangerScore- 0-100 composite danger rating
Calculation Method:
- PositionData CTE: Maps death positions to areas
- Classifies position types based on distance and elevation
- Aggregates death statistics per area
- Scores danger based on death count and headshot rate
SQL Key Logic:
-- Position type classification
CASE
WHEN Distance > 1000 THEN 'Long_Range_Position'
WHEN Distance < 300 THEN 'Close_Range_Position'
WHEN ABS(KillerZ - VictimZ) > 100 THEN 'Elevation_Advantage'
...
END
-- Danger scoring
CASE
WHEN DeathCount >= 20 AND HeadshotRate >= 60 THEN 95
WHEN DeathCount >= 15 AND AvgDistance < 500 THEN 85
...
END
30. Timing & Tempo
Route: GET /api/advanced-analytics/timing-tempo
Purpose: Round timing patterns, execution speed, and tempo effectiveness analysis.
Data Sources:
Kills- Kill timingPlayers- Player informationRounds- Round contextDemoFiles- Map data
Key Metrics:
RoundPhase- Time classification (Opening, Mid_Round, Late_Round, Overtime)TempoStyle- Strategy classification (Aggressive_Rush, Standard_Execute, Slow_Default, Late_Round_Play)AvgKillTiming- Average kill timeAvgTimeBetweenKills- Kill paceFirstKills/LastKills- Kill sequence positionTempoWinRate- Success rate by tempoTempoMasteryScore- 0-100 score with tempo-specific bonuses
Calculation Method:
- TimingData CTE: Uses LAG() to calculate time between kills
- ROW_NUMBER() for kill sequence identification
- Categorizes phases and tempo styles
- Scores mastery with bonuses for specific tempos (Rush+70% WR = 95)
SQL Key Logic:
-- Time between kills
LAG(GameTime) OVER (PARTITION BY RoundId ORDER BY GameTime) as PrevKillTime
GameTime - PrevKillTime as TimeBetweenKills
-- Tempo classification
CASE
WHEN GameTime <= 15 THEN 'Aggressive_Rush'
WHEN GameTime <= 45 THEN 'Standard_Execute'
...
END
31. Weapon Mastery
Route: GET /api/advanced-analytics/weapon-mastery
Purpose: Detailed weapon performance with accuracy, versatility, and progression tracking.
Data Sources:
Kills- Weapon killsPlayers- Player informationRounds- Round contextDemoFiles- Map data
Key Metrics:
WeaponClass- Classification (Assault_Rifle, Sniper_Rifle, Pistol, SMG, Knife)EngagementRange- Distance category (Long_Range, Medium_Range, Short_Range, Close_Range)KillsWithWeapon- Usage countAvgKillDistance/MinKillDistance/MaxKillDistance- Range statisticsHeadshotPercentage- PrecisionWinRateWithWeapon- Weapon effectivenessWeaponMasteryScore- 0-100 score with weapon-specific thresholdsRangeVersatility- Count of distinct ranges used
Calculation Method:
- Categorizes weapons and ranges
- Aggregates per player/weapon/range
- Scores mastery with weapon-specific requirements
SQL Key Logic:
-- Weapon mastery scoring
CASE
WHEN WeaponClass = 'Sniper_Rifle' AND HeadshotPercentage >= 80 THEN 100
WHEN WeaponClass = 'Assault_Rifle' AND HeadshotPercentage >= 60 AND Kills >= 20 THEN 95
WHEN WeaponClass = 'Pistol' AND HeadshotPercentage >= 70 THEN 90
...
END
32. Match Flow
Route: GET /api/advanced-analytics/match-flow
Purpose: Momentum patterns, comeback potential, and performance under pressure analysis.
Data Sources:
Rounds- Round sequencesDemoFiles- Demo contextPlayerRoundStats- Performance dataPlayers- Player information
Key Metrics:
MomentumState- Classification (Hot_Streak, Building_Momentum, Cold_Streak, Losing_Momentum, Comeback_Round)GameState- Score context (Close_Game, Leading, Trailing, Balanced)WinRateInState- Success rate per stateAvgKillsInState/AvgDeathsInState- Performance under conditionsClutchRounds- High-impact roundsCloseGameWins- Performance in tight situationsMomentumMasteryScore- 0-100 score with momentum-specific bonuses
Calculation Method:
- MatchFlowData CTE: Uses LAG() for previous 2 round outcomes
- Calculates running team score with SUM() OVER
- MomentumAnalysis CTE: Classifies momentum and game states
- Scores mastery with bonuses (Comeback+70% = 100, Hot Streak+2.0KD = 95)
SQL Key Logic:
-- Momentum classification
CASE
WHEN RoundWon = 1 AND PrevRoundWon = 1 AND TwoRoundsAgo = 1 THEN 'Hot_Streak'
WHEN RoundWon = 1 AND PrevRoundWon = 0 THEN 'Comeback_Round'
...
END
-- Score context
CASE
WHEN ABS(TeamScore - OpponentScore) <= 1 THEN 'Close_Game'
...
END
33. Performance Trends
Route: GET /api/advanced-analytics/performance-trends
Purpose: Player improvement over time, consistency metrics, and learning curve analysis.
Data Sources:
PlayerRoundStats- Round-level performancePlayers- Player informationRounds- Round contextDemoFiles- Temporal data (ParsedAt)
Key Metrics:
TimeQuintile- Chronological period (1-5, splits career into fifths)AvgKills/AvgDeaths/AvgDamage/AvgKDRatio- Performance over timeWinRate- Success rate trendKillsStdDev/DamageStdDev- Consistency metricsMaxMapExperience- Map-specific experience levelTrendScore- 0-100 score (higher for recent performance)
Calculation Method:
- Uses ROW_NUMBER() for chronological ordering
- NTILE(5) splits career into 5 periods
- Separate map experience tracking
- Higher scores for later quintiles (shows improvement)
SQL Key Logic:
-- Chronological splitting
ROW_NUMBER() OVER (PARTITION BY PlayerId ORDER BY ParsedAt, RoundNumber) as ChronologicalOrder
NTILE(5) OVER (PARTITION BY PlayerId ORDER BY ParsedAt, RoundNumber) as TimeQuintile
-- Trend scoring favors recent performance
CASE
WHEN TimeQuintile = 5 THEN [higher scores based on metrics]
...
END
34. Team Dynamics
Route: GET /api/advanced-analytics/team-dynamics
Purpose: Player partnerships, trade kills, support plays, and team chemistry analysis.
Data Sources:
PlayerRoundStats(prs1, prs2) - Player and teammate statsPlayers(p1, p2) - Player and teammate infoRounds- Round contextDemoFiles- Demo metadataKills(k1, k2) - Kill timing for coordination
Key Metrics:
RoundsPlayedTogether- Partnership frequencyTeamWinRate- Combined success rateAvgKillsWithTeammate/AvgDamageWithTeammate- Player performanceTeammateAvgKills/TeammateAvgDamage- Teammate performanceTradeKillsExecuted/TradeKillRate- Revenge coordinationSupportPlays- Assist synergyAvgKillCoordination- Kill timing correlationTeamChemistryScore- 0-100 composite score
Calculation Method:
- Self-joins PlayerRoundStats to find teammates in same rounds
- Left joins Kills for both players to detect timing
- Detects trade kills (within 3 seconds)
- Identifies support plays (assists + teammate positive KD)
- Scores chemistry based on win rate, trades, and coordination
SQL Key Logic:
-- Teammate identification
INNER JOIN PlayerRoundStats prs2 ON r.Id = prs2.RoundId AND prs2.PlayerId != prs1.PlayerId
INNER JOIN Players p2 ON prs2.PlayerId = p2.Id AND p2.Team = p1.Team
-- Trade kill detection
CASE
WHEN ABS(k1.GameTime - k2.GameTime) <= 3.0 AND k1/k2 NOT NULL THEN 1
ELSE 0
END as TradeKill
-- Chemistry scoring
CASE
WHEN WinRate >= 70 AND TradeKills >= 5 THEN 100
WHEN WinRate >= 60 AND SupportPlays >= 10 THEN 90
...
END
Response Format
All endpoints return JSON in this format:
{
"Title": "Endpoint Title",
"Description": "Description of analysis",
"Data": [
{
"Column1": "Value1",
"Column2": 123,
...
}
],
"TotalRecords": 42
}
CSV Export
Add ?format=csv to any endpoint to receive CSV output:
- Automatic filename with timestamp
- Content-Disposition header for download
- Proper CSV escaping for commas and quotes
Database Schema Reference
Core Tables Used
| Table | Purpose |
|---|---|
DemoFiles |
Demo metadata (MapName, ParsedAt, FileName) |
Rounds |
Round information (RoundNumber, WinnerTeam, BombPlanted, LivePlayers) |
Players |
Player information (PlayerName, Team, DemoFileId) |
Kills |
Kill events (Killer, Victim, Weapon, Position, Distance, IsHeadshot, IsFirstKill) |
PlayerRoundStats |
Round-level stats (Kills, Deaths, Assists, Damage, EquipmentValue, IsAlive) |
Grenades |
Grenade events (GrenadeType, ThrowPosition, DetonatePosition, ThrowTick) |
FlashEvents |
Flash effectiveness (FlasherPlayerId, FlashedPlayerId, FlashDuration) |
WeaponFires |
Shot events (PlayerId, Weapon, GameTime, Accuracy) |
Equipment |
Equipment changes (PlayerId, ItemName, Action, Tick) |
EconomyEvents |
Economy events (PlayerId, EventType, ItemName, MoneyBefore, MoneyAfter) |
EnhancedPlayerPositions |
Position tracking (PlayerId, PositionX/Y/Z, VelocityX/Y, Tick) |
Matches |
Match metadata |
Common SQL Patterns
CTEs (Common Table Expressions)
Most endpoints use multi-stage CTEs for complex calculations:
- Data Collection CTE: Gathers base data with joins
- Calculation CTE: Performs aggregations and window functions
- Scoring CTE: Applies business logic for ratings
- Final SELECT: Aggregates and filters results
Window Functions
Heavily used for:
ROW_NUMBER()- Sequencing and rankingLAG()/LEAD()- Temporal comparisonsSUM() OVER ()- Running totalsNTILE()- Percentile bucketing
Spatial Analysis
Position-based queries use:
- Pythagorean distance:
SQRT(POWER(X2-X1, 2) + POWER(Y2-Y1, 2)) - Map area classification via CASE statements on coordinates
- STDEV for position spread/clustering
Scoring Methodology
Most endpoints use tiered CASE statements for scoring:
CASE
WHEN [excellent criteria] THEN 95-100
WHEN [very good criteria] THEN 80-90
WHEN [good criteria] THEN 65-75
WHEN [acceptable criteria] THEN 50-60
ELSE 30-45
END as Score
Pro Tools Microservices API
/api/services/{service-name}/{endpoint}
π Team Performance Analyzer (Port 8007)
Base URL: /api/services/team-performance-analyzer
Endpoints:
GET /team-performance/:demo_id/:team- Overall team performance metricsGET /utility-efficiency/:demo_id/:team- Grenade usage and flash effectivenessGET /player-synergies/:demo_id- Best performing player duosGET /economy-analysis/:demo_id/:team- Buy strategy and eco round analysisGET /retake-analysis/:demo_id/:team- CT retake and T post-plant success ratesGET /comprehensive/:demo_id/:team- Complete analysis with recommendations
Parameters:
demo_id- Demo file IDteam- Team name: "CounterTerrorist" or "Terrorist"
πΊοΈ Map Control Heatmap (Port 8008)
Base URL: /api/services/map-control-heatmap
Endpoints:
GET /heatmap/:demo_id/:round- Kill/death positions for specific roundGET /control-timeline/:demo_id- Round-by-round control percentageGET /choke-points/:demo_id- High-traffic kill zones (500u grid)GET /death-positions/:demo_id- Death cluster analysisGET /kill-zones/:demo_id- Team-specific kill zones (1000u grid)
Parameters:
demo_id- Demo file IDround- Round number (optional)
π° Economy Tracker (Port 8002)
Base URL: /api/services/economy-tracker
Endpoints:
GET /demo/:demo_file_id/analysis- Comprehensive economy analysisPOST /recommend-buy- Buy strategy recommendationsGET /win-probability- Economy-based win probability
π Pro Strat Database (Port 8005)
Base URL: /api/services/pro-strat-database
Endpoints:
GET /demo/:demoFileId/strategies- Strategies from specific demoGET /strats- Strategy patterns across all demosGET /strats/:map/:site- Map/site specific strategiesGET /maps- Available mapsGET /stats/popular-strats- Most popular strategies
π² Clutch Predictor (Port 8001)
Base URL: /api/services/clutch-predictor
Endpoints:
POST /predict- Predict clutch success probabilityGET /player-rating/:playerId- Player clutch ratingsGET /demo/:demo_file_id/clutches- All clutches in demoGET /statistics- Overall clutch statistics
π― Aim Trainer Pro (Port 8003)
Base URL: /api/services/aim-trainer
Endpoints:
GET /stats/:playerId- Comprehensive aim statisticsGET /recommendations/:playerId- Training recommendationsGET /leaderboard- Top players by headshot %
β Crosshair Optimizer (Port 8004)
Base URL: /api/services/crosshair-optimizer
Endpoints:
GET /analysis/:playerId- Engagement range analysis & crosshair recommendationsGET /pro-crosshairs- Popular pro player crosshairsPOST /test- Record crosshair A/B test
π Rank Up Coach (Port 8006)
Base URL: /api/services/rank-up-coach
Endpoints:
GET /player/:playerId/analysis- Complete player performance analysisGET /player/:playerId/improvement-areas- Specific improvement areasGET /player/:playerId/progress- Progress tracking
β All Pro Tools Use Real Database Queries
Every microservice queries actual CS2 demo data from SQL Server tables including: Rounds, Kills, Players, Grenades, EconomyEvents, PlayerRoundStats, AdvancedPlayerStats, and FlashEvents.