Access by invitation only
Score Posting Reminder
To:
Subject:
Help & Support
Documentation for the Treesdale Score Posting Compliance Tool
Data Sources
SourceWhat It ContainsHow It Gets In
Golf Genius RosterMember number, first & last name, GHIN number — the authoritative link between ClubCorp members and GHINManual upload on dashboard
GHIN Active RosterGHIN number, golfer name, H.I., status, email, genderAutomated — GHIN emails report, processed daily at 8am ET (scores) and Monday 8am ET (roster)
Scores Posted ReportGHIN number, date played, date posted, AGS, holes, course, differentialAutomated — same GHIN email pipeline
ClubCorp Tee SheetsPer-player: ClubCorp ID, name, member code, holes, cart type, member type, player categoryManual upload — save .htm from ClubCorp Tee Times, upload per course per day
How Matching Works

The tool connects tee sheet players to roster members, then checks whether their scores were posted. This happens in three steps.

Step 1 — Identify the Player

Every tee sheet entry includes a member number (e.g., S0262). The system looks up that number in the Golf Genius Master Roster:

ScenarioWhat Happens
Only one member on that codeThat's the member. Done — no name matching needed.
Multiple members on that codeCheck if the player's ClubCorp ID (a unique per-person identifier from the tee sheet) has already been stored from a previous match. If found, match confirmed.
No stored ClubCorp ID yetFall back to name matching: filter by last name, then score by first name using exact match, a 100+ nickname map (Bob↔Robert, Tom↔Thomas, Mike↔Michael, etc.), and first-3-character comparison. Clear winner = matched.
After a successful matchThe player's ClubCorp ID is saved to their roster record. Next time they play, the match is instant — no name matching required.

Step 2 — Check Score Posting

Once the player is identified, the system uses their GHIN number from the roster to look up posted scores for the same date. Scores are matched by date_played (not posted date), so a score posted the day after still counts.

PriorityMatch Criteria
1Same date + same course + same holes
2Same date + same course (holes differ)
3Same date + same holes (course differs)
4Same date only (fallback)

Each score can only be consumed once. If a member played 2 rounds but posted 1 score, the best-matching round shows Posted and the other shows Missing.

Step 3 — Audit Summary

The Audit Tool groups tee sheet data by member across a date range. It reads directly from the tee sheet matching results — no separate matching logic. Each member shows all their rounds and whether each was posted.

Tee Sheet ColorMeaning
GreenMatched member — score posted for this date
RedMatched member — score missing for this date
GreyNot matched — guest, family member without GHIN, social member, or unresolved
Player Types & Badges

The tee sheet shows ALL players. Each gets a badge. Only entry_type=member + player_category=Golf are audited for compliance.

BadgeTypeAudited?
MMember (Golf)Yes — tracked for compliance
GGuest of MemberNo
UUnaccompanied GuestNo
AAssociate MemberNo
AAAccess AdvantageNo
PPlay Away PremierNo
EEmployeeNo
Automation Pipeline
ScheduleWhatHow
Daily 8am ETScores Posted ReportGHIN emails .xlsx → Gmail → Edge Function. Only inserts scores with posted_date = yesterday or day before. Quick edit check on last 7 days.
Monday 8am ETGHIN Active RosterGHIN emails .xlsx → Gmail → Edge Function. Full upsert by GHIN number — updates status, H.I., email.
After tee sheet uploadClubCorp ID capturecaptureClubcorpIds() links tee sheet ClubCorp IDs to Golf Genius members for Tier 1 matching.
After GG uploadDisplay name syncSyncs display_name and display_email from Golf Genius to the GHIN roster for canonical name/email display.
Audit Tool

Select a date range (up to 1 month). The audit loads tee sheet entries, matches them via the 5-tier system, cross-references GHIN scores, and groups results by member.

Member StatusMeaning
CompliantAll rounds posted
EmailedAll missing rounds have been emailed
PartialSome missing rounds emailed, some not
MissingHas unposted rounds, no emails sent

Each round in the expand dropdown shows: Posted (with score details), Emailed (reminder sent for this date), or Missing (not posted, not emailed).

Known Edge Cases
IssueHow It's Handled
Apostrophes in names (O'Connor, L'Herbier)nlk() strips apostrophes for all lookups
Titles (Dr., Mr., Mrs.) in GHIN namesnlk() strips all titles before matching
Suffixes (Jr., Sr., III, IV) in namesnlk() strips suffixes
Professional designations (CPA, MD, DA)nlk() strips them
Family members sharing a member numberTier 3 disambiguates by first name + 100+ nickname map
GG members with NULL member_number (156)Tier 4 matches by name → GHIN roster as fallback
Multiple rounds on same datePriority matching by course + holes. Each score consumed only once.
Score posted the day after playingMatched by date_played not posted_date
CC ID ≠ Member# (membership transfers)Flagged as "Needs Review" — excluded from compliance until manually confirmed
Guest placeholder ClubCorp IDs (1-4)Skipped — never matched
Play-away codes (XXXXX-XXXXX)Skipped — not Treesdale members