Eleven Empty Slots on a 72 Degree Thursday Afternoon

Thursday, mid September. The forecast for the course says 72 degrees, 6mph of wind, no rain until the weekend. The afternoon block from 3pm runs 12 tee times at 10 minute intervals, which is 48 player slots. Seventeen of them are sold.
By 7pm that evening, 31 slots will have gone past unsold and unsellable, and it happened without anyone making a mistake. The pro shop was busy, the general manager was dealing with an irrigation fault, and the tee sheet software did what tee sheet software does, which is show you the gap without doing anything about it.
That block was worth roughly $1,600 at the rack rate. It earned nothing.
Multiply it across weekday afternoons and twilight for a season and you get the number most public courses have learned to stop looking at. Around 80% of a golf course's revenue flows through the tee sheet, and a healthy course runs it at somewhere between 50 and 65% utilisation. A well run course in a competitive market pushes for 85%. Below 40% and something is properly broken.
I've published the full build for this as a Pro Prompt: Golf Courses, Weather-Triggered Tee Sheet Fill & Lapsed Golfer Win-Back Engine. It's a complete AI app-builder blueprint, around 17,000 characters of master prompt, plus the client fields, an 11 step build playbook, a 9 step sell-and-run playbook, the tool stack with real pricing, and a cold outreach script you can send today.
The money is going somewhere, and it is not the course
There are 13,782 golf courses in the US, and 10,291 of them are public or daily fee. That is a huge, unglamorous market of businesses with the same problem and very little software aimed at it.
Most of them have already tried to solve it, and the solution has a cost they tend not to say out loud. Tee time marketplaces run on barter: the course hands over tee times, the marketplace gives back technology and marketing, then sells those tee times at a discount and keeps the proceeds. Estimates put the share of acquired inventory the marketplace actually sells at 50 to 70%. One course worked out they were giving away over $116,000 a year in tee times under that arrangement. Courses that also take commission-based bookings from other marketplaces add another $30,000 to $50,000 annually.
So the empty Thursday afternoon has company. There's the slot that never sold, and there's the slot that sold through someone else's app at a discount the course did not set, to a golfer whose name and email the course never sees.
Then there's the third leak. About 9% of booked tee times go unplayed because the golfer does not turn up. Across the industry that's an estimated $1.2 billion a year in green fees, and roughly $103,000 for the average public course.
Three holes in the same bucket. The blueprint plugs all three with one build, which is why it ends up worth a $2,500 to $4,500 setup fee rather than a weekend favour.
Why most discounting makes the problem worse
The obvious reaction to an empty tee sheet is to cut the price and blast the list. Courses that try it usually stop within a season, and for a good reason.
Half of a course's green fee revenue comes from about 20% of its tee times. Saturday and Sunday mornings, holiday weekends, the stretch in May and September when the weather is perfect. Those tee times sell themselves. Discount into that window and you are paying your best customers to do what they were already going to do.
The second failure is subtler. Send a $20-off blast to your whole list on Tuesday and some of the people who redeem it are your weekly regulars, who would have walked in on Thursday at the full $52. You have converted a full price round into a discounted one and called it a win because the slot filled.
Cannibalisation is the thing that kills these programmes, and you can measure it: watch the discounted share of total rounds. If it climbs past about 20%, the tool is eating the business rather than growing it.
Both failures come from the same root. The offer goes to the wrong people at the wrong time, because sending to everyone is easier than working out who should get it.
What the build actually does
The tee sheet rescue blueprint builds a web application in Lovable that does four things in sequence, and the sequence is the product.
It scores the weather, hour by hour, for the course itself. Every 3 hours it pulls a 72 hour hourly forecast for the course's own coordinates from the OpenWeather One Call API and scores each hour from 0 to 100. Rain probability comes off the score directly, doubled if more than a tenth of an inch is forecast. Wind costs a point per mph over 12, with another 10 off for gusts above 25. Cold costs 1.5 points per degree under 50F, heat a point per degree over 95F, and the 62F to 82F band earns 5 points back. Any morning hour at or below 36F gets flagged for frost and capped at 20, because the course may not even open the gates.
The scoring thresholds matter more than they look. A links course on the coast needs the wind penalty starting at 18mph instead of 12, and a desert course in Phoenix needs the heat penalty starting near 103F. Calibrating that to the specific course is one of the build steps, and it's one of the things the client cannot do for themselves, which is good for the person selling it.
It finds the gap. The next 3 days get grouped into five blocks: early morning, morning, midday, afternoon, twilight. For each one it works out capacity, sold, utilisation and open player slots, and averages the playability score across the block's hours. A block becomes a rescue candidate when utilisation is under the target the general manager sets, playability averages 50 or better, at least 4 player slots are open, and the block sits outside the protected prime window.
That protected window is enforced in the backend, not as a checkbox in the interface. It's the single thing that would get the tool switched off if it ever failed, so the build treats it as a hard constraint.
It prices from the clock and the hole, with a floor. More than 48 hours out, 10% off. Inside 48, 15%. Inside 24, 20%. Inside 12 hours, 25%. Then another 10% off if the block is under 30% sold, and 5% given back if the playability score is 85 or better, because a perfect day needs less help. The result gets hard floored at a number the general manager personally signed off on.
Every campaign card shows the whole calculation on one readable line: "Thursday twilight, 14 of 24 slots open, playability 88, rack $52, offer $44, floor $39." That line is what sells the tool in a demo. It shows a general manager that the software reasons the way they do.
Then it picks who gets asked. This is the half that turns a discounting tool into a win-back engine.
The wave ordering is the whole idea
Every golfer on the list gets a segment, recomputed nightly from the date of their last round. Active is within 30 days. Slipping is 31 to 120. Lapsed is 121 to 365. Dormant is over a year. New is on the list with no round yet.
When a campaign fires, it goes out in three waves.
Wave 1 goes immediately, to lapsed and dormant golfers whose preferred time of day matches the block and who play that kind of day. These are the people who used to come twice a month and have not been in since spring. No one is chasing them, and a specific, time-bound, priced reason to come back on a day that is going to be lovely is about the best reactivation message a golf course can send.
Wave 2 goes 4 hours later, and only if 4 or more player slots are still open. That one hits the slipping segment.
Wave 3 goes 2 hours after that, inside 18 hours of the tee time, and only then does the active segment see the offer at all. Your Saturday regular gets the cheap Thursday twilight round when everyone else has passed on it, which is the correct order of priority.
Every wave cancels itself the instant the block fills, including waves already scheduled. Any individual golfer is capped at 2 fill offers in a 7 day window and 6 in 30 days, enforced across campaigns rather than within one, because the list is the asset and a golfer who feels pestered unsubscribes once and permanently.
Expect the lapsed segment to redeem at several times the rate of your active golfers. That gap is the evidence the ordering works, and it's the number to put in front of the general manager at the end of the pilot.
Walking a real Thursday through it
Back to the block we started with. Twelve tee times from 3pm to 4:59pm, 48 player slots, 17 sold. That's 35% utilisation against a 65% target. Playability averages 88 across those hours. Rack rate is $52 with a cart. The course's floor is $39.
The campaign builds at 7pm the night before, 20 hours out. The ladder takes 20% off for the timing, then gives 5% back because the forecast is close to perfect, landing at $44 a player. Above the floor, so it stands. A card appears in the approval queue with that one line of maths on it, the staff member taps approve, and wave 1 goes to 214 lapsed and dormant golfers who play weekday afternoons.
Fourteen player slots book overnight and first thing in the morning. That's $616, prepaid by card on the course's own page.
Seventeen slots are still open at 11am, so wave 2 fires to the slipping segment. Nine more players at $44 is another $396.
Twenty three recovered rounds, $1,012 on a block that was heading for 35% and a shrug. The course keeps all of it. There's no commission and no barter partner in the chain. And because every round was paid for up front, the usual 9% that evaporates into no-shows does not apply.
The number that matters more arrives later. Nineteen of those 23 golfers were lapsed, dormant or slipping. Some of them will book again at full price in three weeks, and the reporting screen counts exactly that, because reactivation is what the renewal conversation ends up being about.
One more piece worth knowing. If the forecast turns after people have paid, the tool re-scores those hours, flags the affected bookings, and gives the pro shop one button that sends a 90 day rain credit instead of a refund. The cash stays in the business, the slot frees up, and the tool can resell it if the weather recovers.
Who should build this, and what it's worth
The buyer is a general manager or director of golf at a public, municipal or daily fee course. For anything over about $3,000 the owner or the city parks director signs it off.
There's one qualifying question that settles the whole call: how many tee times a week go to your barter partner, and what do you get back for them? A course that can answer that precisely is already feeling the cost. A course that cannot is about to do the arithmetic out loud for the first time, which works just as well.
Municipal courses are the easiest first conversation, because their budgets are public and their revenue problem is documented in council minutes. Golf course management companies running 6 to 30 courses are the best version of the deal, since one build and one calibration pass covers the portfolio. Skip private clubs with waiting lists, resort courses whose rates are set by the hotel, and anyone already above 80% utilisation.
The economics in the Pro Prompt are set out as a specific range rather than a shrug:
- Setup: $2,500 to $4,500. The build, five service accounts, importing and cleaning the golfer list, the permission email, calibrating the weather and pricing thresholds for that specific course, branding, staff training, and a supervised 14 day pilot. Charge the upper end when the list needs real de-duplication, which is most of the time.
- Monthly: $397 to $697. Hosting, SMS, weather and email costs, seasonal retuning (the thresholds that work in July are wrong in October), the monthly report, and being reachable on the weekends when the weather turns.
- Performance bonus: 10% of recovered green fee revenue over an agreed baseline, capped at $900 a month. Write the baseline as a specific number of rounds in a named month. The word "average" turns into an argument the moment the tool starts working.
- Multi-course: $1,200 a month for up to 4 courses, then $250 each.
Against roughly $103,000 a year of leakage at an average public course, a $500 a month retainer is not a hard sell once the pilot numbers are on the table.
Two honest warnings, both in the blueprint. A point of sale customer list is not SMS consent, so the build runs a plain permission email first and accepts losing a chunk of the names, because one complaint about unsolicited texts costs more than the retainer. And US SMS needs A2P 10DLC registration approved before anything sends, which takes 1 to 3 business days, so do not promise a launch date inside that window.
Why this is worth building now
US rounds played have set records three years running, and 2026 is pacing about 1% ahead of last year's record. Courses are busy enough to feel comfortable and are therefore slow to chase the gaps.
The weather is doing the arguing for you. August rounds came in down just over 5% nationally, and the East North Central region dropped 9% with rainfall up more than 100% in Michigan, Ohio, Illinois and Wisconsin. Earlier in the year, February ran 5% up because 29 states had above average temperatures. Play is swinging hard on the forecast in both directions, and a course with no mechanism for turning an unexpectedly good Thursday into sold rounds is leaving the upside on the table every time the weather hands it one.
Meanwhile, courses running time-based variable pricing on their thin slots typically see a 10 to 20% lift in revenue per round, with most of the gain coming from the undersold morning and late afternoon blocks. The mechanism is proven. What has been missing at this end of the market is a version a single operator can build and run without a six figure software contract.
That's what the blueprint is. Paste the master prompt into Lovable, follow the 11 build steps, run the 14 day pilot on one time block, and you have a product to sell to 10,291 courses that each lose about $103,000 a year to the same three holes.
Get the full build here: Golf Courses, Weather-Triggered Tee Sheet Fill & Lapsed Golfer Win-Back Engine. Master prompt, client fields, the complete build and sell playbooks, the tool stack with current pricing, and the cold email that opens the conversation.