The Villages Golf and Country Club

The Villages Golf & Country Club

Board Portal — Authorized Access Only
The Villages Golf & Country Club
Board Portal
As of
May 31, 2026

Executive Summary

High-level view of financial performance, capital position, and member engagement for The Villages Golf and Country Club.

Three Critical Parameters

Per Treasurer Framework

This Period — What Happened

Attention Items

Financial Results

Parameter #1: Are we financially sound? Operating P&L against budget, balance sheet strength, and long-term net worth trajectory.

Income Statement — FY26 YTD vs Budget

Balance Sheet & Liquidity

Item #6 — Net Worth Over Time

Monthly · Derived from Cobalt GL Actuals

Consolidated Club Net Worth — Entities 100, 150, 155

Jun 2024 through May 2026 • Monthly data derived by anchoring to May 2026 balance sheet and rolling backward via monthly net income • Methodology validated against Feb 2026 snapshot
Scope: Combined net worth of Club Operating (100), Club Capital Improvement (150), and Club Replacement (155) funds. Includes inter-affiliate balances without elimination.
Trend: +$3.71M (+25.8%) over 24 months. Reflects year-end capital dues posting (notable Jun 2025 uptick) and steady FY26 accumulation.
Note: Pre-FY24 historical data requires prior audited financial statements and has not yet been loaded.

What's Driving the Changes

Each month's net worth movement explained — what made it go up or down.

Balance Sheet

Financial position as of . Assets, liabilities, net worth across all funds — plus standard and club-specific liquidity, leverage, and capital health ratios.

Balance Sheet by Fund

Double-click a fund to view full balance sheet
Fund Total Assets Total Liabilities Net Worth Net Worth %

Standard Liquidity & Leverage Ratios

Club-Specific Capital Health Ratios

Context that standard ratios miss

Asset Composition

Where the Club's Assets Sit

By category, all funds combined

Liability Composition

By category, all funds combined

Departmental Performance

Club Operating income statement summary, departmental Statement of Activities, and individual department drill-downs. FY26 YTD through May 31, 2026.

Club Operating — Income Statement Summary

Top-line view · MTD · YTD · vs Budget · vs LY
Line Item ◀ Current Month (May) ▶ ◀ Year-to-Date (FY26) ▶
Actual Budget Var $ Actual Budget Var $

Statement of Activities — All Departments

Every department · Variance to budget · Per-member/month economics · Double-click any dept to view full income statement
Department / Line Item ◀ Current Month (May) ▶ ◀ Year-to-Date (Jul–May, FY26) ▶ Per Mbr / Mo
2,536 mbrs × 11 mo
Actual Budget Var $ Actual Budget Var $

Department Drill-Down

Full P&L detail for major operating departments
Department Revenue (YTD) Expenses (YTD) Net Income (YTD) vs Budget Dues Subsidy Key Activity

Operating Efficiency

Parameter #2: Are we running the club efficiently? Staffing ratios, departmental economics, and expense controls.

Item #1 — Payroll Ratio

Staffing Balance

Why this matters

Payroll is almost always the single largest expense in a private club. Total payroll (including payroll taxes) as a percentage of operating revenue tells the Board whether staffing is balanced against service expectations and revenue capacity.

VGCC currently at 54.9%. Industry median for private clubs runs roughly 50–58% depending on service model; full-service clubs with heavy F&B and golf maintenance often sit at the higher end.

Item #2 — F&B Financial Impact

Net F&B to Gross Profit

Why this matters

F&B rarely runs a profit at private clubs — it's an amenity, not a profit center. The question is how much of the club's gross profit is being consumed to fund F&B losses. A well-run club keeps this drag manageable so dues aren't disproportionately subsidizing the dining operation.

Department Subsidies

Capital Income

The Treasurer's Critical Point: The income statement accounts for the delivery of services and amenities — it is consumed every year by members enjoying the club. Capital income is the financial driver that moves a club forward.

FY26 Capital Position — YTD Through May 2026

Combined: Replacement + Improvement Funds

Fund-by-Fund Summary

Click a fund to drill into line-item detail
Fund YTD Income YTD Spend Investment/Other Net Surplus Annual Plan % Consumed

Capital Plan Consumption — FY26 YTD

How much of the annual capital plan has been spent
Club Capital — Replacement
Club Capital — Improvement

Top Capital Line Items — YTD Spend

Across both funds

Largest Unspent Capital

Budgeted but not consumed YTD

Item #5 — Net Available Capital Ratio

Target: >18% for Healthy Zone

Why this matters

Net Available Capital as a percent of Operating Revenue. This is arguably the most important single number the Board sees.

Clubs with a ratio >18% have the capital to maintain existing assets, replace them on schedule, and fund aspirational projects. Clubs below that threshold are generally running down the asset base or deferring maintenance.

How do we move to a healthy zone? The levers are: (1) capital dues increases, (2) capital assessments, (3) initiation fee volume, (4) operating surplus that flows to capital.

Item #7 — Net-to-Gross PPE Ratio

Asset Health Check

Why this matters

Net PPE is Gross PPE (excluding non-depreciating land) minus accumulated depreciation. Net ÷ Gross = Net-to-Gross PPE Ratio.

A declining ratio signals that the club's assets are aging faster than we're replacing them. Combined with Item #5, this tells the Board whether current capital investment is keeping pace with asset consumption.

Investment Portfolio

Member Utilization

How members are actually using the club — across 14 villages, major facilities, and 22 months of history. Excludes dues/payment postings — shows real activity only.

Village Scorecard

Click any column header to sort · Click a village to drill into facility breakdown
YoY drop > 10% Revenue/prop < 50% of club average High dormant rate
Property Count Note

The "Props" column above reflects AR billing accounts from Cobalt (2,645 total), which differs from the official 2,536 homes at The Villages. The 109-account variance arises because AR counts billing entities — some properties have secondary accounts, and some owner transfers create temporary duplicates during the resale cycle.

District Official Units AR Accounts Variance
Cribari (700)576616+40
Montgomery (710)351371+20
Highlands (735)210216+6
Verano (725)207215+8
Olivas (745)207211+4
Hermosa (720)196206+10
Del Lago (730)174181+7
Single Family Homes152157+5
Glen Arden (740)120121+1
Sonata (755)102105+3
Estates7578+3
Heights (715)7273+1
Valle Vista (760)72720
Fairways (750)2223+1
Total2,5362,645+109

Engagement %, $/Prop, and Tix/Prop in the scorecard above are calculated using AR account counts (the denominator matches the numerator source). The official 2,536 figure is used for per-member calculations on financial reports (dues, operating metrics).

Facility Revenue Mix

Across all members, 22-month cumulative

22-Month Engagement Trend

Monthly usage revenue, excluding dues (green = FY26, gold = FY25)

Property Engagement Tiers

Based on cumulative ticket count, 22 months

Village × Facility Revenue Matrix

Cross-sectional view — which villages drive which facilities

Methodology & Caveats

What this dashboard shows and how

Utilization = AR ticket activity excluding Dues Postings, Payments, Adjustments, and Month-End A/R. Those are money movement, not usage. What remains is real member activity: F&B tickets, golf rounds, bistro orders, events, fees.

Properties (not members) are the unit of aggregation. A property can have a primary owner, spouse, dependents, and tenants all transacting — they all roll up to the property's village.

Engagement metrics use a 90-day rolling window. A property is "engaged" if any member attached to it produced a ticket in the last 90 days. Properties with tickets in history but nothing in the last 90 days are flagged as "dormant" — potential retention risk.

YoY comparison compares FY26 YTD (Jul 2025 through May 2026) to FY25 YTD (Jul 2024 through May 2025). Both 10-month windows.

Attention flags fire automatically: (1) village YoY drop >10%, (2) village revenue/prop <50% of club average, (3) individual properties with zero tickets in 90 days (shown in aggregate only, not by name).

Member Satisfaction

McMahon Community Consultants · October 2025 Survey. 1,385 responses of ~4,000 sent (35% response rate; ±2.0% margin at 95% confidence). Benchmarks drawn from McMahon's database of 41 private clubs in residential communities (2019–H1 2025). This section will expand as additional survey waves become available.

Key Takeaways

McMahon's strategic findings

Additional Detail

Click to expand

Methodology & Notes

About this survey

The McMahon Community Consultants Membership Survey was administered in August 2025 to approximately 4,000 residents. 1,385 completed responses were returned, producing a 35% response rate. This is an above-average response rate for clubs of this size and produces reliable results with ±2.0% margin of error at 95% confidence for percentage responses and ±0.1 for mean ratings.

Benchmark comparisons are drawn from McMahon's proprietary database of 41 private clubs located in residential communities, with survey data collected between 2019 and the first half of 2025. The Villages is the only club in this cohort located in the Bay Area of California.

Next wave. An annual member survey cadence is recommended with quarterly pulse questions (NPS + 3-5 rotating topics). When subsequent waves complete, this tab will expand to show trend arrows, category movements, and longitudinal tracking.

Parameter Trend

Administrator Access
Admin Portal
General Ledger Explorer
Upload GL Detail exports from Cobalt Software. The system automatically de-duplicates against existing data — only new transactions are added.

Drop GL Detail .xlsx here or click to browse

Accepts Cobalt Software GL Detail exports. Existing transactions will be skipped automatically.

No GL data loaded

Upload a GL Detail export above to get started.

Monthly Close Wizard
Drop your Cobalt export files and walk through the 6-step process to update the portal for a new period. Every commit creates a new snapshot in Portal State, with automatic JSON backup download.
1
Period
2
Upload
3
Validate
4
Review diff
5
Narrative
6
Commit

Step 1 · Which month are you closing?

Choose the period this close applies to. Fiscal Year and month-of-fiscal-year are computed from your selection (FY runs July 1 – June 30).

Step 2 · Upload Cobalt export files

Drop each file into its slot. The portal accepts the same format you used for May 2026 — no file renaming needed.

Required Income Statements — Club
e.g. 04_2026_-_Income_Statements_-_Club.xlsx
📄
Click or drop .xlsx
no file selected
Required Actuals — Current Fiscal Year
e.g. GeneralLedger_Actuals_FY26_...xls
📈
Click or drop .xls
no file selected
Optional Actuals — Prior Fiscal Year
For year-over-year comparisons and NW trend backfill
📊
Click or drop .xls (optional)
no file selected
Required Income Statement — Club Capital
e.g. 04_2026_-_Income_Statement_-_Club_Capital.xlsx
🏛️
Click or drop .xlsx
no file selected
Recommended Member Utilization (aggregated JSON)
Run vgcc_aggregate_utilization.py first, then drop member_utilization.json here
👥
Click or drop .json
no file selected

Step 3 · Parsing results

The portal read each file and checked that the expected sheets and data are present. Review warnings before proceeding.

Click "Parse files" on the previous step to begin.

Step 4 · Review proposed changes

Side-by-side comparison of what's in the portal now vs. what will be written. Review before committing.

Click "Review diff" on the previous step to build the comparison.

Step 5 · Monthly narrative

Write the "what happened" summary that will appear on the Executive Summary tab. This is the board's first impression of the month.

Tip: Lead with the "so what" — what should the board do about this? Current headline:

Step 6 · Commit to portal

Final confirmation. Clicking "Commit" will update the portal data, save a new snapshot to local storage, and push to JSONBin if configured.

Complete previous steps first.
Balance Sheet — Live from GL
Computed directly from the GL transactions in IndexedDB. Asset accounts (1xxx) minus liability accounts (2xxx) = Net Worth. Select an "as of" date and optional fund filter.
Departmental P&L — Live from GL
Auto-detected from GL data. Revenue accounts (4xxx) and expense accounts (5xxx–9xxx) grouped by department (middle segment of account number).
Data Inventory
Every Board metric tracked in this portal, its current data status, source system, and refresh cadence. Use this to prioritize BI buildout and identify gaps before they reach the Board.
Metric Category Status Source System Refresh Cadence Notes / Gap
Portal Data (JSON)
Edit the portal's underlying data directly. Changes save to browser local storage and override file defaults.
Portal State Management
Snapshots of the portal's data are saved to the browser's IndexedDB after every commit. You can export any snapshot to JSON, import a saved JSON, or roll back to an earlier version.
Current State
Loading…

Snapshot History

Version Created Label As-Of Size Actions
Loading history…
Reset to defaults: creates a new snapshot from the hardcoded DEFAULT_DATA baked into this HTML file. Useful if the current state is broken — prior snapshots are preserved and can be re-activated.
CSV Import
Update portal metric values via CSV. Expected columns: section, id, field, value

Upload metric CSV

Example format
section,id,field,value
balanceSheet,net-worth,value,$14.12M
incomeStatement,club-dues,variance,$5K
healthScore,_root,composite,74
execKpis,Operating Cash,value,$4.45M

Each row updates one field. The id matches the metric's id in the JSON (or the label for execKpis). Use _root when updating a top-level single-object section like healthScore.

Member Utilization Engine
Process raw Cobalt exports to build the Member Utilization dataset — no external scripts needed.
Required Files from Cobalt:
  1. AR Tickets (.xlsx) — Cobalt → AR → Tickets. All member transactions with dates, amounts, locations.
  2. Property Listing (.xlsx) — Cobalt → Property → Listing. Maps addresses to villages (2,536 homes).
  3. Family Members / Residents (.xlsx) — Cobalt → Membership → Family Members. The definitive link between Member # and property address — includes members, spouses, children, and employees.

The engine maps every Member # → Address (from Family Members) → Village (from Property Listing) → aggregates. Property Listing counts are used as official denominators (2,536 homes). All "Single Family Home A/B/C/D" variants consolidate into one village (152 homes). Estates = 75 homes.

REQUIRED AR Tickets
🎫
Click or drop .xlsx
no file selected
REQUIRED Property Listing
🏘️
Click or drop .xlsx
no file selected
REQUIRED Family Members
👨‍👩‍👧
Click or drop .xlsx
no file selected
Settings
Admin portal configuration.

Remote State Sync — JSONBin.io

◯ not configured

When configured, the portal loads its state from a JSONBin.io bin instead of relying on browser IndexedDB. Every Board member who opens the portal gets the same live data. The Monthly Close wizard pushes new data directly to the bin — no re-upload needed.

Security note: In the public portal distributed to HostGator, only fill in the Access Key (read-only). Leave Master Key blank — it's only needed in the admin variant of the portal on your local machine. Keys are stored in browser localStorage (not transmitted anywhere except to jsonbin.io).

Remote State — Supabase

● connected

Supabase stores portal state in a PostgreSQL database. All users load the same data. Every save creates a versioned backup. No size limits.

Change Admin Password

Controls access to the Admin panel. Stored locally (SHA-256 hash).

Change Portal Password

Controls access to the Board Portal itself (the login screen). Stored locally (SHA-256 hash).

GL Database

Checking database...

Session

Admin session stays active until you click "Exit Admin" or close the browser tab.