Course Vaults
Leveraging Gemini to power 60,000+ automated course descriptions on Course Vaults

On-demand descriptions written with Gemini and saved to the database, so tens of thousands of courses can have copy without writing each one by hand.
Course Vaults is home to over 60,000 golf courses.
I wanted a way to provide rich, historical context for every golf course in the world without spending years manually writing descriptions or hiring a massive editorial team.
So I built a system that generates professional, architecturally-aware descriptions for any course the moment it's needed, delivered as a clean summary in less than 3 seconds before the page finishes loading.
The problem I was solving
Like most database-driven projects, the struggle isn't finding names or locations. It's providing the story. When you have tens of thousands of courses, writing about sections by hand is impossible. Most sites either leave them blank or use generic filler that adds no value.
I wanted something different:
- Instant context: history, architects, and prestige at a glance
- Consistency: a uniform voice across 60,000 unique pages
- Zero overhead: no manual data entry
- Authority: enough detail to feel like an expert guide, not an AI bot
A backend-driven AI workflow felt right. It's invisible, efficient, and scalable.
The idea
The moment a user visits a course page that doesn't have a description yet:
- Identify the gap: check if the course description is empty
- Consult the vault: trigger a backend call to Gemini 2.0
- Synthesize the history: the model identifies the era, the architect, and the competitive pedigree
- Commit to the database: save the response so the work is only ever done once
The constraint was intentional: if the description doesn't fit in a few punchy paragraphs, it's too much. The goal is to inform, not overwhelm.
How it works
The system is built to be just-in-time and highly secure.
- Bubble.io orchestrates the application logic
- A backend workflow updates the database securely
- Gemini 2.0, via Google AI Studio, analyzes the course's location and name
- An API connector maps the response into the right database fields
There's no manual clicking. The user opens a page, and the vault fills itself.

Why Bubble and Gemini
I didn't want to build a custom server for something this data-heavy.
Bubble made it easy to schedule background jobs that don't slow down the browser, manage 60,000 records with simple logic, and keep API keys hidden.
Gemini 2.0 Flash did exactly one thing well: summarize complex golf history with speed and minimal cost.
Design decisions
The hardest part wasn't the tech. It was the prompt.
A few constraints I set for the model:
- No hallucinated rankings: focus on widely considered status rather than naming specific magazine panels
- Architectural integrity: identify the era and the terrain type
- No fluff: remove conversational filler like "Here is your description."
- Strict exclusivity: clearly state if a course is private or public
- Fun anecdotes: include known stories about the membership, a famous dish, or local lore when they're real
The goal wasn't just to fill a box with text. It was to build a legitimate digital encyclopedia, as if an insider turned course architect wrote it.
What I learned
A few things became clear after refining this system.
AI is a force multiplier. One developer can now do the work that used to need a large content team.
Rate limits matter. Moving from a free tier to a paid tier is the difference between a broken app and a professional product.
Context is everything. The more specific the architectural guardrails, the more human the writing sounds.
2026