Documentation · GolfIQ

User Guide · every surface, every metric

Read it once, keep it bookmarked. Tour the dashboard, learn the metrics, and master the keyboard shortcuts for Ask GolfIQ.

Start here

Pick your path

The dashboard touches a lot of surfaces. These four flows are the narrowest path through it for the most common goals — open one, click straight through, then come back to the full guide below when you want depth.

DFS player

salaries × projection × stack

  1. Open

    LAB → DFS tool
  2. Sort

    By VALUE (proj / $1k) for chalk vs leverage

  3. Cross-check

    Player compare for top picks
  4. Save

    Build a saved SG-query for the field shape
Try it now →

Bettor

find edges, track CLV

  1. Scan

    HUB Bet Sheet — top 8 model-vs-market gaps
  2. Drill

    Player profile · form histogram + Kalman estimate

  3. Compare

    Betting value finder across all books
  4. Review

    Archived event CLV — did the edge hold up?
Try it now →

Podcaster / analyst

stories you can defend on air

  1. Skim

    HUB risers / fallers + course-fit movers
  2. Open

    Player profile trajectory + volatility tabs

  3. Search

    Similar player finder for the comp
  4. Frame

    Course DNA radar + archetype splits
Try it now →

00Orientation

What you’re looking at

GolfIQ is a comprehensive golf-intelligence dashboard built on a complete mirror of a live tour-stats feed. Every page reads from a Postgres database that refreshes every 15 minutes during live events and daily otherwise.

SurfacePathUse it for
Home dashboard/dashThe week at a glance — predictions, betting markets, live event, schedule
Player profiles/dash/player/[id]One player’s full skill breakdown, career-at-course history, current-week edge
Course profiles/dash/course/[slug]A venue’s historical fingerprint — which skills win here, all-time leaders
Tools/dash/tools/*Course-fit calculator, betting-value finder, fantasy projections, model backtest
Tying it all together: Ask GolfIQ, a floating AI command bar you can summon from any page with ⌘K (Mac) or Ctrl K (Win/Linux).

01The hub

The home dashboard

1.1 The sticky banner

At the top of every page, you’ll see a glowing header with:

  • Eyebrow tag — tour + event status, e.g. PGA · ACTIVE EVENT
  • Event title — the current tournament name and (in cyan) the course name
  • Snapshot timestamp — when the model last refreshed
  • “Live mirror” badge — confirms data is flowing
  • Tour pills — switch between PGA, DP World, Korn Ferry, Opposite, Alt, LIV. Pills only light up for tours that currently have data.

1.2 Conditions strip

Thin metadata bar under the header showing tour · event · date. Holds the slot where live wind / rain / temp / bias will land once OpenWeather is wired (v3.1).

1.3 Narrative hero

The single biggest model-vs-market edge among the current event's top contenders, picked automatically. Headline names the player. Sub-line shows MODEL % · MARKET % · EDGE pp. Below: a one-sentence GolfIQ "why" and an Open profile → CTA.

1.4 Field at a glance (3-col grid)

  • Pre-tournament decomposition — recharts stacked horizontal bars for the top 15: BASELINE + HIST + FIT + MAJOR + OTHER contributions to final win prob. Hover for the per-component breakdown.
  • Risers / Fallers — two columns, 5 rows each. Player + current rank + delta + inverted rank sparkline (up = improving). Last 14-day window.
  • Course-fit movers — plain-SVG slope chart, baseline rank → fit-adjusted rank. Green up = course suits the player, red down = course fades them.

1.5 Course block

Wraps the existing hole heat map with a 5-pill SG weights row (OTT/APP/ARG/PUTT/Scrambling) and a top-3 "watch holes" card grid. Self-resolves the slug from the active event so the section just works for any tournament.

1.6 Event mode module

Pre-tournament vs live, picked by event.isLive:

  • Pre-tournament — pairings table (group, tee, hole, players).
  • Live — top-20 leaderboard slice (pos/total/thru/ win%/SG total) + live contender trajectories (multi-line win% chart, 6 contenders, time on x-axis) + cut-line tracker (projected cut score + ±1 bubble strip during Thu-Fri).

1.7 The Bet Sheet

Horizontal snap-scroll strip of 8 cards. Each card: player name · market · DG fair % + American odds · best book + implied % · edge pip · 4-book chip grid · 5-pip confidence score.

Subtext reads "Model vs market · not a pick". Never framed as a recommendation.

1.8 GolfIQ on this week

Four chip questions seeded for the current event. Tapping any opens the existing GolfIQ chat surface with the question pre-filled — same chat trigger that fires from the insight cards.

1.9 Off-week mode

When no tour event is active, the HUB swaps to: a recap card for last week (winner + link to the model report card) · risers / fallers · "course of the week" pulled deterministically from course_archetypes. The Bet Sheet hides until there's a market to bet on.

02One player, every angle

Player profiles

Reached by clicking any player name across the app. Sections, top to bottom:

BlockWhat it shows
HeaderName, country flag, amateur indicator, DG rank pill, OWGR pill, skill estimate, DG snapshot timestamp
Live statsIf active: position, score, today’s score, thru, live win/top-5/top-10/cut probabilities, live SG
Trajectory tabs4-tab pill switcher inside one card. Tab 1 — 5-axis SG radar (default). Tab 2 — 52-week multi-line SG chart (OTT/APP/ARG/PUTT). Tab 3 — Form histogram of last 24 rounds SG: TOT with mean + Kalman estimate reference lines. Tab 4 — Rolling 12-week volatility σ with amber dots at detected regime changes.
SG component breakdownHorizontal bar chart of the 4 SG categories with absolute SG and 0–100 percentile vs the full tour.
Approach skill detailRow of 8 yardage/lie buckets with SG-per-shot, GIR rate, proximity per shot, shot count
This week’s decompositionBaseline → final breakdown: course history, fit, major, age adjustments
PredictionsBoth model variants (baseline and baseline_history_fit) for the current event
MatchupsEvery H2H market the player appears in: market type, opponent, odds vs. odds, tie rule
OutrightsEvery outright line live (win / top 5 / top 10 / top 20 / make cut)
Career at these coursesPulled-from-archive table sorted by avg SG: Total. Events, rounds, SG breakdown, last year played
Trouble spotsThe 3 courses where the player has 2+ starts and the worst historical SG: Total
Most-similar peers5 horizontal cards. Nearest neighbours by 4-D Euclidean distance over (SG: OTT, APP, ARG, PUTT). Each card links to that player’s profile.
Archetype heat map6-row table — one per course archetype (Major Test / Bomber’s Park / Shotmaker’s / Resort Birdie-Fest / Wind-Exposed / Stadium). SG cell gets a diverging green↔red background scaled by |SG|; sample-size pip (low/medium/high).
Head-to-head ledgerTop-10 most-frequent opponents from dg_historical_matchups, each as a card with W/T/L tally and last-met year. Clicking an opponent card deep-links into /dash/compare?p=… with that pairing pre-selected.

03The venue’s fingerprint

Course profiles

Reached from the Courses directory or by clicking course names in the History tab or live event banner.

Header

  • Event name (current event, if any) + course name
  • Stats strip — active event: field size, avg adjustment, max boost, biggest fade. Always: events on file, total rounds, avg score, year span. Plus derived Par + Yardagepills summed from the heat map's most-recent round.

Skill importance (legacy bar view)

Bar chart with four horizontal bars: OTT, APP, ARG, PUTT — each showing what fraction of the spread between players at this course is attributable to that skill (variance-based). Kept alongside the radar below as a quick scan view.

This week's best/worst fits

Two side-by-side tables. Best fits = largest positive total adjustment from baseline. Worst fits = largest negative. When there's no active event for this course, both tables fall back to all-time leader / laggard rows from the per-course history aggregate.

Course DNA radar

5-axis radar — OTT / APP / ARG / PUTT / Scrambling — with a dashed tour-average reference polygon at 20% per axis. Auto-generated sentence below the chart calls out the dominant skill weight at this course (e.g. "this course rewards approach play 2.3× more than average"). Confidence pip (low / medium / high) based on events on file.

This is the single best answer to "what kind of golfer wins here."

Course over time

Single-line chart, x = year, y = field-avg SG vs par. Hover for the per-year round count. Reads from mv_course_difficulty_history.

Hole-by-hole scorecard

18-cell grid (3 cols on mobile, 6 sm, 9 lg). Each cell: hole # · par · vs-par SG · difficulty rank pip. Diverging red↔green background by vs-par sign (over par = red, under par = green), clamped to ±0.5 strokes. Per-hole drawer with scoring distribution + best/worst players queued for v3.1.

All-time leaders

20-row table from mv_player_course_career (rounds ≥ 4). Player headshot, rounds, events, avg SG/round, first/last year played. Click any name to open their profile.

Baseline → Final slope (current event only)

Slope chart from this course's active event — top 10 movers in baseline → fit-adjusted rank. Green up = course suits the player, red down = course fades them. Same primitive as the HUB's course-fit movers panel.

Historical leaders + nemeses (legacy)

Kept alongside the new all-time leaders table. Bottom 5 players with 2+ starts — venues that have consistently chewed them up.

04One event under a microscope

Archived events

Reached by clicking any SG ▸ row in the History tab. The single best way to put any individual historical event under a microscope.

Model report card

4-tile grid + reliability diagram, computed live from the full leaderboard's predicted_win × fin_num == 1:

TileReads
Pre-favorite finishedWhere the model’s #1 pre-tournament pick actually placed
Top-10 hit rateFraction of the actual top-10 the model had in its pre-tournament top-10
Brier scoreMean squared error of predicted_win vs binary outcome. Lower is better; tile flips accent when < 0.05.
Log lossNegative log-likelihood per row, with predicted_win clamped to (1e-6, 1-1e-6). Lower is sharper. Tile flips accent when < 0.4.

Reliability diagram

Recharts composed chart in the right column. Predicted win % bucketed into 10 deciles on the x-axis, observed win frequency on the y-axis, with a dashed 45° "perfect calibration" reference line. Hover any bucket to see how many players were in it.

Leaderboard

Full historical leaderboard (all players, not just 80): finish position, name + headshot, predicted win %, round-by-round scores, SG breakdown averaged across rounds.

Model accuracy plot

Scatter chart: predicted win % on X-axis, actual finish position on Y-axis. Each dot is a player. Top-10 finishers in green, the rest in cyan. A well-calibrated model clusters dots in the upper-right (favorites finished high).

Closing-line value

Top 10 players by model edge vs. bet365 close (DG fair probability − closing-line implied probability). Columns: player, open/close odds, edge in pp (capped at ±15pp for sanity), finish, bet result.

05Schedule + drill-in

The Tournaments hub

In-play

Live

Events with in-play data in the last 5 days. Each card: date, tour, event name, live badge.

On deck

Upcoming

Forward-dated events from the schedule sync.

Last 45 days

Recent

Cards link to the archived event page if data is available.

Past-dated events never appear in Upcoming any more — NULL or stale event_date rows get filtered out and logged. Clicking any event opens its full detail page (/dash/tournaments/[event_id]) with the live or pre-tournament leaderboard, betting markets, and tee pairings.

On the detail page — live sections

When event.isLive is true, two extra cards mount between the leaderboard and the odds module:

  • Live contender trajectories — multi-line win-% chart for the top 6 contenders, sourced from dg_in_play_history (which is fed by the 5-min snapshot cron during Thu-Sun 11-23 UTC).
  • Cut-line tracker— latest snapshot's projected cut score + ±1 bubble strip with player names. Hides until 65+ players have posted live scores.

The odds module never lands on "No win market." any more — when dg_outrights is empty, each card falls back to a 20-row DG-fair list derived from the model probabilities and labels itself "DG fair only · book lines unavailable".

06Custom rigs

The Tools shelf

Tool

Player comparison

Multi-select up to 4 players. Side-by-side SG radar, percentile-banded comparison table with best-of highlighting per category. AI verdict on who has the edge.

Open →

Tool

Course fit

Adjust four sliders (OTT, APP, ARG, PUTT weight) and the top-300 ranks re-sort in real-time. Now ships with 6 archetype presets (Major test / Bomber's park / Shotmaker's test / Resort birdie-fest / Wind-exposed / Stadium) that match the seeded course_archetypes weights.

Open →

Tool

Betting value

Model fair odds vs. every sportsbook's posted line. Market selector (Win / Top 5 / Top 10 / Top 20 / Make Cut). Sorted by edge. Shin de-vig toggle is wired in the analytics layer and queued for v3.1 in the UI.

Open →

Tool

Fantasy projections

DraftKings + FanDuel projected fantasy points for the field, derived from the model's win / top-5 / top-10 / top-20 / make-cut probabilities. Toggle DK / FD to switch the scoring model; sort to find the highest projected scorers.

Open →

Tool

Model backtest

The most important tool for trusting the model. Accuracy across the historical archive: calibration buckets, favorite ROI vs. bet365 close, top-10 hit rate.

Open →

Tool

SG query

Per-player SG averages over each player's last N rounds (4 / 12 / 24 / 50 / 100). Multi-filter: tour, min rounds, optional SG threshold per category. Sortable; CSV export; save filter sets to localStorage with named chips.

Open →

Tool

Similar player finder

Search any player, see their 10 nearest neighbours by 4-D SG skill vector (Euclidean over OTT/APP/ARG/PUTT). Same algorithm that powers the Similar Players strip on player profiles.

Open →

Tool

Course cluster map

Every course we have historical rounds for, plotted by field-avg SG (x) and round variance (y). Dots sized by round count and color-coded by archetype. Hover for course name; click to open the profile.

Open →

Tool

Matchup simulator

10,000-trial Monte Carlo between any two players over 1–8 rounds. Box–Muller draws around each player's mean SG with empirical σ = 2.6/round (KB v2.0 §6.2). Outputs head-to-head win prob plus margin P10 / P50 / P90.

Open →

Tool

What-if conditions

Three sliders — wind, firmness, cut depth — that scale each player's fit / hist / major adjustments and renormalise the field. Linear re-scoring (not a full sim) so it's a quick intuition tool, not a forecast.

Open →

07The AI command bar

Ask GolfIQ

Press ⌘K (Mac) or Ctrl K (Win/Linux) from anywhere in the app, or click the floating logo at the bottom-right. A slide-out drawer opens with:

  • The current page path shown as a context chip in the header
  • 4 suggested prompts you can click to send
  • A free-text input
  • Open full link if you want the full-page chat at /golfiq
  • Esc button (or just press Esc)
The chat is grounded in real data. When GolfIQ doesn’t know an answer, it calls one of 18 tools that query the Supabase database directly. Tool calls show as small badges in the response (✓ get_course_history, ✓ get_model_accuracy, etc.). No hallucinated stats.

What you can ask

About a player

  • Has Scheffler ever played well at Augusta?
  • Compare Rory and Scottie’s approach games
  • How is Jon Rahm trending — moving up or down?
  • Show me a full profile for Bryson DeChambeau

About a course

  • What kind of golfer wins at Bay Hill?
  • Top historical performers at TPC Sawgrass?
  • Who’s the best fit for Aronimink this week?

About a tournament

  • What did the 2024 PGA Championship look like?
  • Who’s the current leader?
  • Pre-tournament predictions for this week?

About the model

  • Is the model actually accurate?
  • Where does the model leak?

About markets

  • Biggest model edges this week?
  • Tightest matchups right now?

About DFS + form

  • Highest projected DK fantasy scorers this week?
  • Who’s making moves up the rankings?
  • Biggest fallers this week?

Tips for getting the best answers

  • Be specific about the player. “Scheffler” works, “Scottie” works. Two-word ambiguous queries (“Brown”) may resolve to the wrong player — GolfIQ will list matches.
  • Reference the current page. Because the chat knows your pathname, you can ask “explain this player’s edge” on a player profile and it will use that context.
  • Ask follow-ups. The chat maintains conversation history. “Now compare him to Rory” works.
  • Use it during research. Hit ⌘K from any page — faster than navigating back and forth.

08The vocabulary

Glossary

Strokes Gained (SG)

The fundamental performance metric in modern golf. SG measures how a player performs vs. the PGA Tour field average on the same shot. Positive = above average, negative = below.

TermMeaning
SG: TotalSum of all categories. ~+2.0 per round is elite. Tour avg = 0.
SG: OTTOff-the-Tee — driving and tee shots on par-4s/5s. Distance + accuracy.
SG: APPApproach — shots to the green from outside ~30 yards. Usually the biggest swing in winning weeks.
SG: ARGAround-the-Green — chips, pitches, bunker shots within ~30 yards.
SG: PUTTPutting only.
SG: T2GTee-to-Green = OTT + APP + ARG (everything except putting).

Model terms

TermMeaning
BaselineThe model’s prediction using only skill, no course adjustments.
FinalPublished prediction after course-history, course-fit, major-week, and age adjustments.
Course history adjustmentHow much the model boosts/fades a player based on their record at this venue.
Course-fit adjustmentHow much the model adjusts based on whether the venue’s skill profile matches the player’s strengths.
DecompositionThe breakdown showing baseline → final, with each adjustment listed.
baseline_history_fitThe recommended model variant; baseline plus all adjustments. More accurate than baseline alone.

Betting terms

TermMeaning
Implied probabilityOdds converted to a 0–1 number (e.g., +400 = 20% implied).
CLV (Closing-line value)The edge between your bet and the closing price. Strongest leading indicator of long-term profit.
Sharp sideThe side of a market sharp money has hit; usually the side closing lines move toward.
EdgeDG fair implied probability minus book implied probability. Positive edge = the book offers more value than the model thinks.

DFS terms

  • DK / FD — DraftKings / FanDuel
  • Salary efficiency — projected fantasy points per $1,000 of salary. Higher = better value.

Glossary of DG markers

  • sg_categories=‘yes’ — archived event has full SG breakdown available
  • traditional_stats=‘yes’ — driving accuracy, GIR, proximity, scrambling recorded
  • archived_preds=‘yes’ — pre-tournament predictions backfilled for this event

09Shortcuts

Power-user moves

⌘KThen a player name. Fastest way to a profile.⌘KOn a course page. Ask “is this player a good fit?” without leaving.
  • Click any row in the History tab. Drills into the archived leaderboard with model accuracy.
  • Click any course name in This Week’s decomposition table. Goes to the venue profile.
  • Use the tour pills. The home dash is fully tour-scoped — pick LIV or DPWT to see those tours’ predictions.
  • Sort the Players tab by Δ. Top-of-the-table = biggest weekly rank improvers. The forming bubble.
  • Sort DFS by Value. Anything above 5.5 points per $1K is high-leverage; the value column is the single best DFS sort.
  • Look at the calibration chart on the Backtest page. If a bucket’s green bar is taller than its cyan bar, the model under-predicted that group’s win rate (those longshots are real value). Inverse if green is shorter.

10Coming soon

What’s next

  • Off-week dashboard — recent winners, biggest skill movers, archive featured event when no live tournament
  • Shot-level visualizations from the historical-rounds payload
  • User accounts + watchlists — pin players to a personal home view
  • Multi-book historical odds — DK, FD, Pinnacle closing lines alongside bet365
  • Auto-refresh of the Live tab during active rounds (no page reload required)
Have a feature request? Open Ask GolfIQ and just say so — the team reads the logs.

Changelog

What changed

  • 2026-05 · v3.0 — data-quality + analytics rebuild

    Materialized views (player × course career, weekly trajectory, course difficulty, rankings delta, archetype performance). New analytics module backs every chart. HUB rebuilt with narrative hero, decomposition stacked bars, risers/fallers, course block, live mode, bet sheet. Player profile gets trajectory tabs (radar + 52-week SG + form + volatility), similar players, archetype heat map, H2H ledger. Course profile gets DNA radar, scoring history, hole grid, all-time leaders, baseline→final slope. Tournament page adds live contender trajectories + cut-line tracker. Archived event becomes a model report card (Brier + log loss + reliability diagram). LAB tools expanded: similar player finder, course cluster map, 10K matchup simulator, what-if conditions, SG query saved-queries.

  • baseline · baseline/v2.5

    Pre-v3 snapshot — homepage, dash routes, Supabase schema, stats sync, GolfIQ insight cards.

Last updated 2026-05-15 · live data mirror · refreshed every 15 min during live events